2017-03-13 20 views
0

我有一個由50名學生(行)組成的數據集,每個組合有15個分數(列,1-5分的分數),並且正在嘗試做幾件事情。首先,我試圖從原始的15中爲每個學生生成10個分數的所有可能的組合。然後,我試圖針對每個分數組合對原始15個分數進行Wilcoxon測試(我相信Mann-Whitney U)讓學生確定哪些組合顯着不同。 R中的代碼到目前爲止已經在循環中用於在每個組合上運行測試,但是我不斷收到錯誤'error not enough(finite)observations',而且我不確定我是否正在執行它適當。我試着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個分數。

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

然後我創建一個名爲testresults的空數據集。 在循環內部,我們創建了一個數據框,其中包含來自15個分數的10個所有可能的組合。然後,我們使用apply來獲得wilcoxon p值,以便將原始學生的15分與所有可能的3003分相比較,並將其附加到子樣本中。最後我們將這些綁定在測試結果數據框中。

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