2017-12-21 2 views
0

I列テーマ(値0又は1)、レベル(9に値1)とのstartTime(二値)を持つデータベースを有しています。どのレベルでも、私はstartTime値についてt検定をしたいと思っています。ここに私のコードです:forループで同じt-testを実行するにはどうすればよいですか?

database <- read.csv("database.csv") 
themeData <- database[database$theme == 1, ] 
noThemeData <- database[database$theme == 0, ] 

for (i in 1:9) { 
    x <- themeData[themeData$level == i, ] 
    y <- noThemeData[noThemeData$level == i, ] 
    t.test(x$startTime,y$startTime, 
     alternative = "less") 
} 

残念ながら、t検定は実行されていません。最後に、xとyは単にi = 9の値を取得します。私は間違って何をしていますか?

あなたのコードは、忙しい仕事をしている
+0

今はループ内で何もしません。結果を印刷したいだけですか?ループの中でそれを行います: 'print(t.test(...))' – MrFlick

答えて

4

:それはt.testの計算を行っているが、for以来、ループは常に彼らの暗黙の結果を捨て、あなたはどこにでもそれを格納していません。あなたのベクトルまたはリストを使用しなければならなかった(事前に割り当てられ、常に優れている)ので、のような:

res <- replicate(9, NULL) 
for (i in 1:9) { 
    x <- themeData[themeData$level == i, ] 
    y <- noThemeData[noThemeData$level == i, ] 
    res[[i]] <- t.test(x$startTime,y$startTime, 
        alternative = "less") 
} 
res[[2]] 

これはlistのためにすべてのテスト「の結果のオブジェクトを」保存されていることに「十分に良い」ことができ後の処理/消費。若干良い方法は、*apply関数の1つを使用することです。私が思う最初の2つは、ここに直接適用されると思います(lapplysapply(..., simplify=FALSE))、多少のメリットがありますが、どちらかを選ぶことができます。 (ここでとは違って)テストは長い時間がかかる場合

res <- lapply(c(4, 6, 8), function(thiscyl) { 
    am0 <- subset(mtcars, am == 0 & cyl == thiscyl) 
    am1 <- subset(mtcars, am == 1 & cyl == thiscyl) 
    t.test(am0$mpg, am1$mpg) 
}) 

は、これは特に有益である:あなたがテストを実行し、モデルを維持するので、することができますので、テストを再実行しなくても結果に物事がたくさん。

sapply(res, `[`, "p.value") 
# $p.value 
# [1] 0.01801712 
# $p.value 
# [1] 0.187123 
# $p.value 
# [1] 0.7038727 

以上簡潔:

sapply(res, `[[`, "p.value") 
# [1] 0.01801712 0.18712303 0.70387268 

別の例として、信頼区間、マトリックス中:

t(sapply(res, `[[`, "conf.int")) 
#   [,1]  [,2] 
# [1,] -9.8 -1.117892 
# [2,] -3.916068 1.032735 
# [3,] -2.339549 1.639549 

することができますたとえば、場合は、あなただけのp値を望んでいましたたとえば、res[[2]]という単一のモデルを見てください。しかし、すべてを見る必要がある場合は、ただresを使用して全体の色域を見ることができます。

res[[2]] 
# Welch Two Sample t-test 
# data: am0$mpg and am1$mpg 
# t = -1.5606, df = 4.4055, p-value = 0.1871 
# alternative hypothesis: true difference in means is not equal to 0 
# 95 percent confidence interval: 
# -3.916068 1.032735 
# sample estimates: 
# mean of x mean of y 
# 19.12500 20.56667 
関連する問題