私は2つのマトリックスを持っています。対応のある t 検定を列ごとに適用し、各列の t 値、自由度、信頼区間、および p 値を出力したいと思います。以下のコードから始めました。
D1 と D2 は 2 つの行列です。
for (j in 1:n){
t.test(D1[,j],D2[,j],paired=T)
}
また、このループから各結果を出力するにはどうすればよいですか?
私は2つのマトリックスを持っています。対応のある t 検定を列ごとに適用し、各列の t 値、自由度、信頼区間、および p 値を出力したいと思います。以下のコードから始めました。
D1 と D2 は 2 つの行列です。
for (j in 1:n){
t.test(D1[,j],D2[,j],paired=T)
}
また、このループから各結果を出力するにはどうすればよいですか?
私が問題にアプローチする方法は次のとおりです。
#Make some random data
m1 <- matrix(rnorm(100), ncol = 5)
m2 <- matrix(rnorm(100), ncol = 5)
#Define a function to run your t.test, grab the relevant stats, and put them in a data.frame
f <- function(x,y){
test <- t.test(x,y, paired=TRUE)
out <- data.frame(stat = test$statistic,
df = test$parameter,
pval = test$p.value,
conl = test$conf.int[1],
conh = test$conf.int[2]
)
return(out)
}
#iterate over your columns via sapply
sapply(seq(ncol(m1)), function(x) f(m1[,x], m2[,x]))
#-----
[,1] [,2] [,3] [,4] [,5]
stat -0.7317108 1.73474 -0.0658436 0.6252509 -0.6161323
df 19 19 19 19 19
pval 0.4732743 0.09898052 0.9481902 0.5392442 0.5451188
conl -1.097654 -0.1259523 -0.7284456 -0.5680937 -0.7523431
conh 0.5289878 1.345625 0.6840117 1.052094 0.4101385
列優先の順序であるため、出力を転置することができます。