2016-04-29 85 views
2

考慮下面的僞數據:折刀配對t檢驗中的R

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

library(bootstrap) 

n <- length(df1$xy) 

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

實現jackknife功能,但我不知道怎麼寫功能刪除PAIR_IDENTIFIER每個迭代。

回答

2

你很近。實際上不需要刪除該變量,t檢驗將只使用公式中指定的內容。

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)