r - R 中的折刀配对 t 检验

标签 r resampling

考虑以下虚拟数据:

x <- rnorm(15,mean = 3,sd = 1)
y <- rnorm(15,mean = 3,sd = 1)
xy <- c(x,y)
factor <- c(rep('A',15),rep('B',15))

df1 <- data.frame(xy,factor)
df1$PAIR_IDENTIFIER <- 1:15

现在,我们要测试 factor==Afactor==B 的均值是否不同。所以我们实现了配对t检验

paired_t_test <- t.test(xy ~ factor, df1, paired = T)
paired_t_test$p.value

现在我们想通过使用折刀重采样来对此进行扩展

那是我们留下一对 (PAIR_IDENTIFIER) 并重新运行 t 检验。我们想重新运行测试 15-1 次。

我已尝试从 bootstrap 中实现 jackknife 函数图书馆

library(bootstrap)

n <- length(df1$xy)

theta <- function(x,df1){ t.test(xy ~ factor, df1, paired = T)}
results <- jackknife(1:n,theta,df1)

但我不确定如何编写函数来为每次迭代删除 PAIR_IDENTIFIER

最佳答案

你很接近。确实没有必要删除该变量,t-test 将仅使用公式中指定的内容。

theta.fun <- function(x, mydata) {
     t.test(xy ~ factor, 
           data = mydata[mydata$PAIR_IDENTIFIER %in% x, ], 
           paired = T)$p.value
}

jackknife(x = 1:15, theta = theta.fun, mydata = df1)

$jack.se
[1] 0.5257458

$jack.bias
[1] 0.4501173

$jack.values
 [1] 0.4064047 0.1164558 0.6187378 0.2853089 0.5913767 0.3906702 0.3528575 0.5142996 0.2430837 0.5590809 0.5015720 0.6029110 0.3881225
[14] 0.5223167 0.3734025

$call
jackknife(x = 1:15, theta = theta.fun, mydata = df1)

关于r - R 中的折刀配对 t 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931685/

相关文章:

r - if() 语句中的 abbreviate()

audio - 如何在 Rust 中将 16 位 PCM 音频的采样率从 24000 Hz 更改为 48000 Hz?

r - glmnet 错误 (nulldev == 0) 停止 ("y is constant; gaussian glmnet fails at standardization step")

r - 方阵中数据的山状图

r - 如何增加 R 中 ggplot2 箱线图之间的间距?

r - 在 R 中使用 writeOGR 写入 shapefile 时出现问题

python - 使 Daily pandas DataFrame 接收与 Weekly (resampled) DataFrame 相同的值

python - 有没有办法将时间序列数据重新采样为 x 小时并以 One-Hot 编码格式获得输出?

python - 按天重新采样并对具有日期时间开始和日期时间结束的 DataFrame 进行分类

python - Pandas OHLC 对 OHLC 数据的聚合