2014-06-04 38 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