我想计算R中的卡方统计量,定义为
sum [(O_i-E_i)^ 2 / E_i],其中O_i和E_i是类别i中的概率质量。
但问题是我只有变量的经验累积分布。假设我有一个向量,我可以计算其经验累积分布,并且我也有预测的累积分布。那么在R中,如何使用这两个累积概率来计算卡方统计量?
例如,下面是我使用的代码,
require(VGAM)
X <- rpareto(100,1.5,2.5)
# Empricial distribution of X, P is the true probability
P <- ecdf(X)
#MLEs
scale <- min(X)
shape <- length(X)/sum(log(X/scale))
estimated_prob <- ppareto(X,scale,shape)
我首先模拟100个分布式帕累托值,然后计算MLE,因此我有真实数据和预测分布。
答案 0 :(得分:0)
(作为为什么不对这个问题使用卡方检验的一个例子提供。参见我在之前的评论中引用的CrossValidated.com答案。)estimated_prob
和ECDF的结果是人们可能期望看到问题的设置,“非常接近”。看看这个情节:
plot( P(X), estimated_prob )
为什么这么接近直线? estimated_prob是理论概率,X_hat(在这里我使用您创建的模拟X
值作为一个可能的实例)小于Pareto分布中的随机变量X,而P(X)
是该样本中的项目小于X的实际分数(即概率)。由于P
是一个函数,我们需要使用P(X)
形式获取numeric
结果R语言。
由于帕累托分布是连续的,因此任意对2,3,10或20个框中的值进行任意分组以获得chisquare统计量将是评估“拟合优度”的相对不精确和任意的方法。谁能说出“正确”数量的垃圾箱应该是什么?有一个非常考虑的R包,名为fitdistrplus
,您可能希望通过它的小插图进行审核和处理。