r - R包中的数据集限制 "nparcomp"

标签 r comparison

我最近正在使用 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)

因此,为了进行诊断,我必须从原始数据中随机选择 5,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

最佳答案

发生此错误的原因是每个因子的大小 n 是一个整数列表,因此在大值时容易出现整数溢出。要修复此问题,请修改 nparcomp 的源代码

n <- sapply(samples, length)

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

要查看源代码,请在 R 提示符下键入 nparcomp

关于r - R包中的数据集限制 "nparcomp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047659/

相关文章:

java - 带有通用参数的比较会发出警告

R & Fortran 调用

r - 在 R 中,将函数应用于数据框的行并返回数据框

python - 比较因子变量每个级别的数据帧的两个连续行的值 - Python Pandas

c++ - 检查一定范围内的公差是否相等的最快方法?

java - 字符串与 Java 中的长性能

r - R 包预测中 auto.arima 的奇怪行为

r - 如何添加纹理以填充ggplot2中的颜色

r - 如何在圆面环绕y轴上设置限制?

image - 心理视觉图像相似度算法/库