首页 文章

绘制R中机会实验的置信区间

提问于
浏览
1

我试图用一个说明性的图表来向学生展示频繁的置信区间对于机会实验的重复试验的意义和本质 . 我从正态分布中抽样并估计置信区间 .

get.ci<-function(x,alpha=.05,n){
M<-mean(x)
se<-sd(x)/sqrt(n)
t<-qt(1-alpha/2,df=n-1)
ci<-c(M-se*t,M+se*t)
return(c(M,ci))
}

n=100
mu=100
sig=20
ci<-matrix(ncol=3,nrow=1000)
for(i in 1:1000){
  x<-rnorm(n,mu,sig)
  ci[i,]<-get.ci(x,n=n)
}

现在我想在一行实验中绘制 ci ,其中x轴表示 ci 的行数,y轴表示点估计 M ,其中上限和下限与线连接 . 然后我想添加一个 abline 并希望它在视觉上明显表明CI的一部分(即100 * alpha%)不能覆盖真实值,即

low.viol<-ci[,2]>100
up.viol<-ci[,3]<100
(sum(low.viol)+sum(up.viol))/1000

我应该如何在R中制作这个情节?

2 回答

  • 1

    我认为你需要订购它们才能变得“视觉上明显” . 相比:

    # unordered
    plot(range(1:nrow(ci)), range(ci), type = "n")
    segments(x0 = 1:nrow(ci), x1 = 1:nrow(ci), y0 = ci[, 2], y1 = ci[, 3], col = "gray80")
    points(1:nrow(ci), ci[, 1], pch = ".")
    
    # ordered
    ci.ordered <- ci[order(ci[, 1]), ]
    plot(range(1:nrow(ci.ordered)), range(ci.ordered), type = "n")
    segments(x0 = 1:nrow(ci.ordered), x1 = 1:nrow(ci.ordered),
             y0 = ci.ordered[, 2], y1 = ci.ordered[, 3], col = "gray80")
    points(1:nrow(ci.ordered), ci.ordered[, 1], pch = ".")
    abline(h = 100)
    

    是否基于重叠着色:

    far.off <- ci.ordered[, 2] > 100 | ci.ordered[, 3] < 100
    plot(range(1:nrow(ci.ordered)), range(ci.ordered), type = "n")
    segments(x0 = 1:nrow(ci.ordered), x1 = 1:nrow(ci.ordered),
             y0 = ci.ordered[, 2], y1 = ci.ordered[, 3],
             col = c("gray80", "firebrick2")[far.off + 1])
    points(1:nrow(ci.ordered), ci.ordered[, 1], pch = ".")
    abline(h = 100)
    
  • 3

    如果我理解正确的问题,在标准的R图形中,它看起来像这样:

    plot(ci[,1], type="n", ylim=c(89,110))
    lines(ci[,2],col="red")
    lines(ci[,3],col="blue")
    abline(100,0)
    

    但是,为了清楚地显示CI不含mu的比例,我不太确定如何帮助你

相关问题