[英]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.