如何使用R计算二进制变量的标准误差? 我有一组参与者在几个条件下执行任务。输出可能是0(不正确)或1(正确)。我已经用下一个方法计算了正确答案和标准误差(SE)的平均比例:
mean<-tapply(dataRsp$Accuracy, dataRsp$Condition, FUN=mean)
SE<- with(dataRsp, tapply(Accuracy, Condition, sd)/sqrt(summary(dataRsp$Condition)) )
但SE非常紧张,以至于它们很难正确。可能有人给我一些想法?我发现下一个可能是解决方案,
sqrt(p.est*(1-p.est)/n)
...但我不知道如何将其实施到R。
答案 0 :(得分:3)
假设对于变量 X ,只有2个结果(0/1),我们假设成功的机会(1)等于 p 。这意味着 X 遵循 Bernoulli(p)分布。
然后由 p 和 p *(1-p)/ n 给出均值和方差,其中 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.5 且 n = 100 ,则方差仅为0.0025。为了找到SE,我们取平方根,在这个例子中SE的值为0.05。如果你有更多的观察结果,即 n> 100 ,方差和SE只会减少更多(直觉:更多数据=>更确定=>更小的方差/ SE)。
如果方差/ SE的公式是这样解释的,那么你有小型SE是否仍然很奇怪?