2017-03-13 10 views
0

私は、50人の学生(行)と15人のスコア(列、1〜5尺度のスコア)で構成され、カップルのもの。最初に、私は15人の生徒の10人のスコアの可能なすべての組み合わせを生成しようとしています。そして、私はウィルコクソンのテストを実行しようとしています(私はMann-Whitney Uと考える)どの組み合わせが有意に異なるかを学生が判断できるようにします。これまでに作ったRのコードは、それぞれの組み合わせでテストを実行するためのループを使って下に投稿されていますが、私はエラーを「エラーが十分ではありません(有限)の観測」としています。適切に。私はas.numeric()を試しましたが、それはまだそれを修正するように見えませんでした。コードは、組み合わせをうまく生成するようだ、私は動作するようにテストを取得することはできません。すべてのヘルプは高く評価されており、私はそれを間違ってやっていると言えるように完全に準備されています。データの組み合わせを生成し、それぞれの組み合わせでWilcoxonテストを実行する

m<-10 
n<-choose(15,m) 

for(j in 1:50) 
{df3 <- expand.grid(combn(data[j,],m)) 

x<-(length = 0)  

for(i in 1:n)  
{niceArray <- c(df3[1,(m*(i-1)+1)],df3[1,(m*(i-1)+2)],df3[1,(m*(i- 1)+3)],df3[1,(m*(i-1)+4)],df3[1,(m*(i-1)+5)],df3[1,(m*(i-1)+6)],df3[1,(m*(i-1)+7)],df3[1,(m*(i-1)+8)],df3[1,(m*(i-1)+9)],df3[1,(m*(i-1)+10)]) 

tst<-wilcox.test(niceArray, as.numeric(data[j,]), alternative="two.sided", paired=FALSE) 
if(tst$p.value<0.05) 
{print(tst$p.value)  
x<-append(x,1,after=length(x))}} 
print(length(x)-1)} 

答えて

1

あなたが行ったことを解析するのは少し難解でした。あなたの問題を解決しようとしたことがここにあります。

私は最初に15人のスコアを持つ2人の学生でデータセットを作成しました。

student_ds<-rbind(abs(sample(rnorm(15)*100)),abs(sample(rnorm(15)*100))) 

次に、testresultsという空のデータセットを作成します。 ループ内では、15個のスコアのうち10個の可能なすべての組み合わせでデータフレームを作成します。その後、元の生徒の15得点と可能なすべての3003得点とを比較し、それをサブサンプルに追加するためのwilcoxon p値を得るためにapplyを使用します。最後に、これらをtestresultsのデータフレームにまとめます。

for (i in 1:nrow(student_ds)){ 
    combinatoric<-data.frame(t(combn(student_ds[i,],10))) # represents all ways to choose 10 from the 15 
    combinatoric$wilcox.pvalue<- apply(combinatoric[,1:10],1,function(x) wilcox.test(x,student_ds[i,], alternative="two.sided", paired=FALSE)$p.value) 
    combinatoric$student <- paste0("student",i) 
    testresults <- rbind(testresults,combinatoric) 
    } 

> head(testresults);tail(testresults) 
     X1  X2  X3  X4  X5  X6  X7  X8  X9  X10 wilcox.pvalue student 
1 1.974715 72.51776 119.8322 12.26869 85.91388 209.4265 65.30297 17.25499 27.32821 79.272713  0.8894956 student1 
2 1.974715 72.51776 119.8322 12.26869 85.91388 209.4265 65.30297 17.25499 27.32821 80.104210  0.9335609 student1 
3 1.974715 72.51776 119.8322 12.26869 85.91388 209.4265 65.30297 17.25499 27.32821 93.908482  1.0000000 student1 
4 1.974715 72.51776 119.8322 12.26869 85.91388 209.4265 65.30297 17.25499 27.32821 107.429904  0.9778308 student1 
5 1.974715 72.51776 119.8322 12.26869 85.91388 209.4265 65.30297 17.25499 27.32821 50.930822  0.7598532 student1 
6 1.974715 72.51776 119.8322 12.26869 85.91388 209.4265 65.30297 17.25499 27.32821 5.215228  0.5975122 student1 
      X1  X2  X3  X4  X5  X6  X7  X8  X9  X10 wilcox.pvalue student 
6001 47.59236 222.62861 9.04522 78.70014 83.69301 123.9315 14.30569 40.72565 56.99276 129.4363  0.9778308 student2 
6002 47.59236 222.62861 9.04522 78.70014 32.81073 123.9315 14.30569 40.72565 56.99276 129.4363  0.7598532 student2 
6003 47.59236 222.62861 9.04522 83.69301 32.81073 123.9315 14.30569 40.72565 56.99276 129.4363  0.8025127 student2 
6004 47.59236 222.62861 78.70014 83.69301 32.81073 123.9315 14.30569 40.72565 56.99276 129.4363  0.8894956 student2 
6005 47.59236 9.04522 78.70014 83.69301 32.81073 123.9315 14.30569 40.72565 56.99276 129.4363  0.5595174 student2 
6006 222.62861 9.04522 78.70014 83.69301 32.81073 123.9315 14.30569 40.72565 56.99276 129.4363  0.9335609 student2 

これがまさにあなたが望むものでない場合、おそらくあなたを偉大さに拍車するのに十分でしょう。

+0

なぜなら、あなたがこれをやりたい理由はわかりません。お知らせください:) – akaDrHouse