在我的数据集中,我有15个观察值,我想测试这个分布是否可以用速率= 0.54的指数分布来表示。 变量x如下:
table(x)
x
0 1 2 4 5 7 8 10
2 1 4 2 2 2 1 1
知道如何在R中实现这个吗?
答案 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