2016-07-26 40 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