维度不等于数组范围问题



我运行了R代码,以测试模拟Gamma分布的skewness,其中100010, 20, 50, 1000重复的复制。

## Skewness test for gamma distribution
skew.test <- function (x) {
m3 <- sum((x-mean(x))^3)/length(x)
s3 <- sqrt(var(x))^3
skew <- m3/s3
ses <- sqrt(6/length(x))
totest <- skew/ses
pt(totest,(length(x)-1))
pval <- pt(totest,(length(x)-1))
pval
}
out <- t(sapply(c(10, 20, 50, 100), function(x) 
table(replicate(1000, skew.test(rgamma(n = x, shape = 3, rate = 0.5))) < 0.05)))
row.names(out) <- c(10, 20, 50, 100)
out

我收到这个错误消息:

dimnames(x(中的错误<-dn:"dimnames"[1]的长度不等于数组范围

我做错了什么?

主要问题是您的所有值都来自TRUE,所以您的表只有长度-1(而不是TRUEFALSE值的表(。你的测试逻辑可能也有问题,但我还没有深入研究。。。

f2 <- function(x, nsim = 1000, shape = 3) {
r <- replicate(nsim,
skew.test(rgamma(n = x, shape = shape, rate = 0.5)))
table(factor(r < 0.05, levels=c(TRUE,FALSE)))
}
nvec <- c(10, 20, 50, 100, 200, 1000)
set.seed(101)
out <- t(sapply(nvec, f2))
row.names(out) <- nvec
out2 <- t(sapply(nvec, f2, shape = 1000))

最新更新