[英]Get Confidence Intervals for Phi statistics using Bootstrapping in R
我想在 R 軟件中使用引導程序(10,000 次迭代)獲得與 Phi 統計相關的置信區間。
我正在使用“psych”package 來計算 phi 統計數據。 我一直在研究如何讓 CI 與 phi 統計數據相關聯。
我的數據和獲取phi統計的代碼如下:
library(psych)
Type_of_Cigar = c(rep("0", 16), rep("1", 16))
Cancer = c(rep(c("0", "0", "0", "0"),4),
rep(c("1", "1", "1", "0"),4))
Table1 <- xtabs(~ Type_of_Cigar + Cancer)
Table1
phi(Table1, digits=5)
#0.7746
你可以用boot
package來做到這一點。首先,將數據保存為數據框。
Type_of_Cigar = c(rep("0", 16), rep("1", 16))
Cancer = c(rep(c("0", "0", "0", "0"),4),
rep(c("1", "1", "1", "0"),4))
dat <- data.frame(Type_of_Cigar = Type_of_Cigar,
Cancer = Cancer)
然后,您需要編寫一個 function,其前兩個 arguments 是數據和我調用inds
的自舉觀測值。 function 應該獲取數據,根據inds
對它們進行子集化並計算一些值,在本例中為 phi。 您將需要使用子集數據來生成任何中間結果(例如下面的tab
)。
boot.fun <- function(data, inds){
tab <- xtabs(~ Type_of_Cigar + Cancer,
data=data[inds, ])
psych::phi(tab)
}
然后,您可以為原始數據和上面編寫的 function 調用boot()
。
library(boot)
out <- boot(dat, statistic=boot.fun, R=10000)
然后,您可以使用boot.ci()
function 來計算置信區間:
boot.ci(out)
# BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
# Based on 10000 bootstrap replicates
#
# CALL :
# boot.ci(boot.out = out)
#
# Intervals :
# Level Normal Basic
# 95% ( 0.5812, 0.9509 ) ( 0.6000, 0.9500 )
#
# Level Percentile BCa
# 95% ( 0.59, 0.94 ) ( 0.52, 0.92 )
# Calculations and Intervals on Original Scale
# Warning message:
# In boot.ci(out) : bootstrap variances needed for studentized intervals
根據下面的評論,我應該說百分位數和 BCa(偏差校正加速)間隔是依賴於引導抽樣分布中的值的間隔。 對於 95% 的置信區間,百分位數區間對 bootstrap 統計量進行排序,並將第 2.5 個和第 97.5 個百分位數的值作為置信區間。 BCa 區間識別不同的百分位數,這些百分位數解釋了 bootstrap 分布中的偏差和非正態性。 這些不一定是第 2.5 個和第 97.5 個百分位數,但區間將具有大約 95% 的覆蓋率。 百分位數和 BCa 間隔也都與轉換相關。 也就是說,對於具有置信界限p1和p2的某些參數p ,您可以通過使用相同的 function f(p1)和f(p2)轉換置信界限來獲得轉換f(p)的置信區間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.