You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny代码修复请求:实现Bootstrap与Wilcoxon符号秩测试功能

问题修复方案

核心问题分析

  • 重复定义ui/server对象:原代码先后定义了两次ui和server,后定义的会直接覆盖前者,导致Bootstrap置信区间的功能完全失效。
  • 语法缩进问题:部分代码未正确换行/缩进,可能引发解析错误(比如observeEvent内代码挤在一行,导致参数识别异常)。

修改后的完整代码

library(shiny) 
library(boot) 
library(stats)

# 整合两个功能的UI
ui <- fluidPage(
  titlePanel("统计分析工具集"),
  tabsetPanel(
    # Bootstrap置信区间计算标签页
    tabPanel("Bootstrap置信区间",
             textInput("sample", "输入样本数据,以逗号分隔:", value = "1, 2, 3, 4, 5"),
             actionButton("bootstrap", "计算均值95%置信区间"),
             textOutput("conf_intervals")
    ),
    # Wilcoxon符号秩检验标签页
    tabPanel("Wilcoxon符号秩检验",
             textInput("sample1", "输入第一个样本数据,以逗号分隔:", value = "1, 2, 3, 4, 5"),
             textInput("sample2", "输入第二个样本数据,以逗号分隔:", value = "2, 3, 4, 5, 6"),
             actionButton("wilcoxon", "执行Wilcoxon符号秩检验"),
             textOutput("test_results")
    )
  )
)

# 合并两个功能的服务器逻辑
server <- function(input, output) {
  # Bootstrap置信区间计算逻辑
  observeEvent(input$bootstrap, {
    # 转换输入为数值向量
    sample_data <- as.numeric(strsplit(input$sample, ",")[[1]])
    # 执行Bootstrap抽样(符合boot包要求的匿名函数格式)
    boot_mean <- boot(sample_data, function(x,i) mean(x[i]), R = 1000)
    # 计算95%置信区间
    conf_intervals <- quantile(boot_mean$t, c(0.025, 0.975))
    # 输出结果
    output$conf_intervals <- renderText({
      paste("均值的95%置信区间为:", round(conf_intervals[1],2), " 和 ", round(conf_intervals[2],2))
    })
  })
  
  # Wilcoxon符号秩检验逻辑
  observeEvent(input$wilcoxon, {
    # 转换输入为数值向量
    sample1 <- as.numeric(strsplit(input$sample1, ",")[[1]])
    sample2 <- as.numeric(strsplit(input$sample2, ",")[[1]])
    # 执行检验(如需配对检验可添加paired=TRUE参数)
    wilcoxon_test <- wilcox.test(sample1, sample2)
    # 输出结果
    output$test_results <- renderText({
      paste0("Wilcoxon符号秩检验结果:\n",
             "统计量(", names(wilcoxon_test$statistic), ") = ", wilcoxon_test$statistic, "\n",
             "p值 = ", round(wilcoxon_test$p.value, 4))
    })
  })
}

# 运行应用
shinyApp(ui = ui, server = server)

关键修改点说明

  1. UI整合:用tabsetPanel将两个功能拆分为标签页,界面整洁且避免组件冲突。
  2. Server合并:将两个功能的触发逻辑放入同一个server函数,确保两个功能都能正常响应。
  3. Bootstrap函数修正:将原代码中直接传入的mean改为匿名函数function(x,i) mean(x[i]),符合boot包对统计量函数的参数要求。
  4. 结果优化:对输出数值做四舍五入处理,同时显示Wilcoxon检验统计量的标准名称(默认是V),提升结果可读性。
  5. 语法规范:修正代码缩进和换行,避免解析错误。

内容的提问来源于stack exchange,提问作者Issie Adikah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:12:09