如何在R中使用卡方检验进行指数分布

时间:2017-02-10 06:00:38

标签: r exponential chi-squared

在我的数据集中,我有15个观察值,我想测试这个分布是否可以用速率= 0.54的指数分布来表示。 变量x如下:

table(x)
x
0  1  2  4  5  7  8 10 
2  1  4  2  2  2  1  1 

知道如何在R中实现这个吗?

2 个答案:

答案 0 :(得分:1)

我们可以尝试像

这样的东西
set.seed(1)
observed <- c(2,  1,  4,  2,  2,  2,  1,  1)
prob.exp <- dexp(c(0,  1,  2,  4,  5,  7,  8, 10), rate=0.54) # prob for the exp dist. variable for the values
chisq.test(observed, p=prob.exp, rescale.p = TRUE)
#X-squared = 73.523, df = 7, p-value = 2.86e-13

我们也可以尝试这个(理论上的定义):

set.seed(1)
observed <- c(2,  1,  4,  2,  2,  2,  1,  1)
prob.exp <- dexp(c(0,  1,  2,  4,  5,  7,  8, 10), rate=0.54)
prob.exp <- prob.exp / sum(prob.exp) # normalize
expected <- sum(observed)*prob.exp
# expected frequency of the values
chisq.stat <- sum((observed-expected)^2/expected)
# [1] 73.52297
1-pchisq(sum(chisq.stat),df=8-1)
# [1] 2.859935e-13

它们正如预期的那样给出相同的结果(拟合优度检验的零假设被拒绝,因此数据不是来自分布)

答案 1 :(得分:1)

您可以测试数字“名称”与该值表的观察值之间的日志链接(即测量级别的指数分布),其偏移量为log(rate)。如果添加log(rate)的偏移量的截距明显不同于0,那么特定的假设将被拒绝(并且......不是):

summary( glm( vals ~ nm+offset(rep(0.54, 8)) ,family=poisson))

Call:
glm(formula = vals ~ nm + offset(rep(0.54, 8)), family = poisson)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.9762  -0.3363  -0.1026   0.1976   1.1088  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)  0.36468    0.40787   0.894    0.371
nm          -0.06457    0.08027  -0.804    0.421

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 3.3224  on 7  degrees of freedom
Residual deviance: 2.6593  on 6  degrees of freedom
AIC: 26.38

Number of Fisher Scoring iterations: 4