2014-06-04 39 views
2

最近我使用R包nparcomp,我用它來測試我的響應變量在類別之間的顯着差異。R包中的數據集限制「nparcomp」

我發現nparcomp函數不能處理大尺寸的數據(行數> 5000)。例如,這是我的代碼:

a<-nparcomp(oc20_kgm2~ decade, data=dat, asy.method = "mult.t", 
      type = "Tukey",alternative = "two.sided", 
      plot.simci = TRUE, info = FALSE) 

summary(a) 

其中,oc20_kgm2是我的響應變量,decade是我的因子(具有10個類別),dat是我的數據集。我的原始數據集大約有15,000行/樣本。如果我運行上面的代碼,錯誤顯示:

Error in checkmvArgs(lower = lower, upper = upper, mean = delta, corr = corr, : 
    ‘lower’ not specified or contains NA 
In addition: There were 49 warnings (use warnings() to see them) 

所以診斷,我不得不隨機我原來dat選擇000個樣本。然後我運行上面的相同代碼,它工作。另外,5,500個樣本或10,000個樣本不起作用。

我的問題是,是否有運行此功能的樣本量的限制?還有我可以在R中使用的其他測試函數/包嗎?看完後評論


修訂:

traceback() 

4: stop(sQuote("lower"), " not specified or contains NA") 
3: checkmvArgs(lower = lower, upper = upper, mean = delta, corr = corr, 
     sigma = sigma) 
2: pmvt(lower = -abs(T[pp]), abs(T[pp]), corr = rho.bf, df = df.sw, 
     delta = rep(0, nc)) 
1: nparcomp(oc20_kgm2 ~ decade, data = dat2, asy.method = "mult.t", 
     type = "Tukey", alternative = "two.sided", plot.simci = TRUE, 
     info = FALSE) 

> warnings() 
Warning messages: 
1: In n[j] * n[w] * n[i] : NAs produced by integer overflow 
2: In n[i] * n[w] * n[j] : NAs produced by integer overflow 
3: In n[i] * n[v] * n[j] : NAs produced by integer overflow 
4: In cov2cor(cov.bf) : 
    diag(.) had 0 or NA entries; non-finite result is doubtful 
+0

您可以在得到錯誤後發佈「traceback()」的輸出。另外,你是否輸入了'warnings()'來查看其他49個錯誤是什麼?最後,您是否使用過'debugonce(nparcomp)'來嘗試並遍歷代碼並查看函數如何失敗? – nograpes

回答

2

出現此錯誤的原因n,各因素的大小,是一個整數列表,因此容易在大值整數溢出。爲了修正它,修改nparcomp的源代碼從

n <- sapply(samples, length) 

n <- as.numeric(sapply(samples, length)) 

到在的R提示查看源代碼,類型nparcomp