Kolmogorov-Smirnov检验还是卡方检验用于分布?

11
我使用模型拟合来将负二项式分布拟合到我的离散数据中。作为最后一步,看起来我需要执行 Kolmogorov-Smirnov 检验来确定模型是否适合数据。我找到的所有参考资料都是关于如何针对正态分布连续数据使用此检验。请问在 R 中是否可以对非正态分布的离散数据进行此操作?(我猜测即使使用卡方检验也可以,但如果我错了,请指出。)
更新:
因此,我发现 vcd 包包含一个名为 goodfit 的函数,可按以下方式用于此目的:
library(vcd)

# Define the data
data <- c(67, 81, 93, 65, 18, 44, 31, 103, 64, 19, 27, 57, 63, 25, 22, 150,
          31, 58, 93, 6, 86, 43, 17, 9, 78, 23, 75, 28, 37, 23, 108, 14, 137,
          69, 58, 81, 62, 25, 54, 57, 65, 72, 17, 22, 170, 95, 38, 33, 34, 68,
          38, 117, 28, 17, 19, 25, 24, 15, 103, 31, 33, 77, 38, 8, 48, 32, 48,
          26, 63, 16, 70, 87, 31, 36, 31, 38, 91, 117, 16, 40, 7, 26, 15, 89,
          67, 7, 39, 33, 58)

gf <- goodfit(data, type = "nbinomial", method = "MinChisq") 
plot(gf)

但在 gf <- ... 步骤之后,R 报错如下:

Warning messages:
1: In pnbinom(q, size, prob, lower.tail, log.p) : NaNs produced
2: In pnbinom(q, size, prob, lower.tail, log.p) : NaNs produced
3: In pnbinom(q, size, prob, lower.tail, log.p) : NaNs produced

我说“plot”,它就会抱怨:

Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' is a list, but does not have components 'x' and 'y'

我不确定正在发生什么,因为如果我将data设置为以下内容:

data <- <- rnbinom(200, size = 1.5, prob = 0.8)

一切正常运行。有什么建议吗?


6
适合放在http://stats.stackexchange.com/ 上。 - MSalters
plot(gf) 在这里有效(R 2.12.0,vcd的1.2-9版本)。使用options(warn=2,error=recover)将警告转换为错误,然后在警告/错误上启动浏览器。在拟合过程中的某个时刻,R试图使NB 'prob'参数变为负数... f <- MASS::fitdistr(data,"negative binomial"); plot(table(data)/length(data)); curve(dnbinom(x,size=2.354,mu=50.8),from=1,to=170,n=170,add=TRUE,col=2)表明数据太“不连续”以适合NB。比较这两种情况下的$par,可以得出相当相似的答案;这些警告可能是可以忽略的。 - Ben Bolker
1个回答

7

KS检验仅适用于连续变量,并且您必须完全指定要进行测试的分布。如果您仍然想执行此操作,它应该类似于:

ks.test(data, pnbinom, size=100, prob=0.8)

它将数据的经验累积分布函数与指定的分布函数进行比较(这是否有意义可能取决于您的数据)。您需要根据理论考虑选择sizeprob参数,如果您基于数据估计这些参数,则该测试无效。

goodfit() 的问题可能与您的数据有关,您确定这些是计数吗?barplot(table(data)) 看起来不像是近似的负二项式分布,例如与 barplot(table(rnbinom(200, size = 1.5, prob = 0.8))) 进行比较。

最后,我不确定在拟合后进行零假设检验的方法是否适当。您可能希望研究基于 $\chi^2$ 的量化拟合度量之外 / 基础(RMSEA、SRMR 等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接