基于p值区间的假设检验决策区域R绘图需求
R实现符号检验区间p值的区域绘图
步骤1:准备数据(替换为你的真实数据)
先构造符合需求的示例数据,你可以直接替换成自己的M、pmin、pmax向量:
library(tidyverse) # 生成1000个-1到1的M值 set.seed(123) # 设定随机种子保证结果可复现 M <- seq(-1, 1, length.out = 1000) # 模拟pmin和pmax(保证pmin ≤ pmax,且p值在0-1范围内) pmin <- runif(1000, 0, 0.8) pmax <- pmin + runif(1000, 0, 0.2) pmax <- ifelse(pmax > 1, 1, pmax) # 合并为数据框,设定显著性水平α alpha <- 0.05 df <- tibble(M, pmin, pmax) %>% mutate( # 按规则定义每个M对应的决策区域 region = case_when( pmax < alpha ~ "拒绝H₀", alpha < pmin ~ "接受H₀", TRUE ~ "待定" ) )
步骤2:绘制区域填充图
使用ggplot2实现带颜色分区的绘图,核心用geom_ribbon填充区间并按决策规则着色:
ggplot(df, aes(x = M)) + # 填充pmin到pmax的区间,按区域映射颜色 geom_ribbon(aes(ymin = pmin, ymax = pmax, fill = region), alpha = 0.6) + # 绘制pmin和pmax的边界线 geom_line(aes(y = pmin), color = "black", linewidth = 0.5) + geom_line(aes(y = pmax), color = "black", linewidth = 0.5) + # 添加α水平参考线 geom_hline(yintercept = alpha, color = "darkblue", linetype = "dashed", linewidth = 1) + # 手动指定区域颜色(匹配需求:绿=接受,红=拒绝,黄=待定) scale_fill_manual(values = c("接受H₀" = "green", "拒绝H₀" = "red", "待定" = "yellow")) + # 坐标轴与主题设置 labs( x = "M值", y = "p值", fill = "决策区域", title = "符号检验区间p值决策图" ) + theme_minimal() + theme( plot.title = element_text(hjust = 0.5), legend.position = "top" )
关键代码说明
geom_ribbon:负责填充pmin与pmax之间的区间,通过fill = region绑定决策区域与颜色,alpha调整透明度避免遮挡边界线。geom_line:绘制pmin和pmax的上下边界,让区间轮廓更清晰。scale_fill_manual:完全按你的需求指定区域颜色,可根据需要调整色值。
只需将模拟数据部分替换为你的真实数据,调整alpha为你的显著性水平即可生成目标图形。
内容的提问来源于stack exchange,提问作者John hall
相关产品推荐
相关产品推荐

