2016-07-26 118 views
2

如何使用R计算二进制变量的标准误差? 我有一组参与者在多个条件下执行任务。输出可能是0(不正确)或1(正确)。我算过,在未来的方式正确答案和标准误差(SE)的平均比例:标准错误二进制变量R

mean<-tapply(dataRsp$Accuracy, dataRsp$Condition, FUN=mean) 

SE<- with(dataRsp, tapply(Accuracy, Condition, sd)/sqrt(summary(dataRsp$Condition))) 

但SE是extremelly紧,他们也很难是正确的。可能有人给我一些想法?我发现,未来可能是解决方案,

sqrt(p.est*(1-p.est)/n) 

...但我不知道如何将其落实到R.

回答

2

假设变量X只有2个结果(0/1),我们假设成功的机会(1)等于p。这意味着X遵循伯努利(p)分布。

的均值和方差,然后由pP *(1-P)/ N,其中Ñ是样本大小给出现在,通过p.est,其中改变p p.est是答案的正确比例。

所以,如果你有一个名为binary 1对成功和0对故障变量:

p.est <- mean(binary) 
variance <- (p.est*(1-p.est))/nrow(binary) 
std.dev <- sqrt(variance) 

编辑:

你还说,你发现非常小的SE的,这是反直觉的。让我们仔细看看方差的公式:p *(1-p)/ n。分子最大值(p *(1-p))可以取的仅为0.25,即当p = 0.5时。由于我们将它除以n(观察次数),此值只能减小。假设我们有p = 0.5n = 100,则方差仅为0.0025。为了找到SE,我们取平方根,在这个例子中它将给出0.05的SE。如果你有更多的观察结果,即n> 100那么方差和SE只会减少甚至更多(直觉:更多数据=>更确定性=>更小方差/ SE)。

如果方差/ SE的公式如此解释,您是否还有小SE?

+0

谢谢你的帮助。代码字很好,但是我得到的值为0.006,这对我没有任何意义。平均准确度为85%时,预期的SE应该更大。不知道可能是什么原因 – user3596790

+0

谢谢Marcel。这很清楚。 (p *(1-p))= 0.13 n = 3290,方差非常低,因此我得到SE = 0.006。我虽然是对立的,但是对于大的事情来说,它可能是有道理的。谢谢。 – user3596790

+0

@ user3596790乐意帮忙!如果您的问题已完全解答,请检查上/下箭头下方的复选框 – Marcel10