R语言Poisson回归的拟合优度检验

简介: R语言Poisson回归的拟合优度检验

在这篇文章中,我们将看一下Poisson回归的拟合优度测试与个体计数数据。许多软件包在拟合Poisson回归模型时在输出中提供此测试,或者在拟合此类模型(例如Stata)之后执行此测试,这可能导致研究人员和分析人员依赖它。在这篇文章中,我们将看到测试通常不会按预期执行,因此,我认为,应该谨慎使用。


偏差拟合度检验

由于偏差度量衡量了模型预测与观察结果的接近程度,我们可能会考虑将其作为给定模型拟合度检验的基础。虽然我们希望我们的模型预测接近观察到的结果,但即使我们的模型被正确指定,它们也不会相同 - 毕竟,模型给出了观察所遵循的泊松分布的预测平均值。

因此,为了将偏差用作拟合优度检验,我们需要弄清楚,假设我们的模型是正确的,在泊松假设下,我们在预测均值周围观察到的结果中会有多少变化。由于偏差可以作为将当前模型与饱和模型进行比较的轮廓似然比检验得出,因此可能性理论会预测(假设模型被正确指定),偏差遵循卡方分布,自由度等于参数数量的差异。饱和模型可以被视为一个模型,它为每个观察使用不同的参数,因此它具有参数。如果我们提出的模型具有参数,这意味着将偏差与参数的卡方分布进行比较。


在R中执行拟合优度测试

现在看看如何在R中执行拟合优度测试。首先我们将模拟一些简单的数据,具有均匀分布的协变量x和泊松结果y:

set.seed(612312)
n < -  1000
x < -  runif(n)
y < -  rpois(n,mean)

为了使Poisson GLM适合数据,我们只需使用glm函数:

Call:
glm(formula = y ~ x, family = poisson)

Deviance Residuals:
    Min       1Q   Median       3Q      Max
-2.2547  -0.8859  -0.1532   0.6096   3.0254

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.04451    0.05775  -0.771    0.441
x            1.01568    0.08799  11.543   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 1247.7  on 999  degrees of freedom
Residual deviance: 1110.3  on 998  degrees of freedom
AIC: 3140.9

Number of Fisher Scoring iterations: 5


这里的偏差被glm函数标记为“剩余偏差”,这里是1110.3。有1000个观测值,我们的模型有两个参数,因此自由度为998,由R作为残差df给出。为了计算偏差拟合度检验的p值,我们简单地计算998自由度上卡方分布的偏差值右侧的概率:

pchisq(mod $ deviance,df = mod $ df.residual,lower.tail = FALSE)
[1] 0.00733294


零假设是我们的模型被正确指定,我们有强有力的证据来拒绝这个假设。因此,我们有充分的证据表明我们的模型非常适合。

 

通过仿真检验泊松回归拟合检验的偏差优度

为了研究测试的性能,我们进行了一个小的模拟研究。我们将使用与以前相同的数据生成机制生成10,000个数据集。对于每一个,我们将拟合(正确的)泊松模型,并收集拟合p值的偏差良好性。然后我们将看到它小于0.05的次数:


nSim <- 10000
pvalues <- array(0, dim=nSim)

for (i in 1:nSim) {

n <- 1000
x <- runif(n)
mean <- exp(x)
y <- rpois(n,mean)

mod <- glm(y~x, family=poisson)
pvalues[i] <- pchisq(mod$ , df=mod$df. , lower.tail= )

}

mean(1*(pvalues<0.05))

最后一行创建一个向量,其中如果p值小于0.05,则每个元素为1,否则为零,然后使用mean()计算这些元素的比例。当我运行这个时,我得到了0.9437,这意味着偏差测试错误地表明我们的模型在94%的情况下被错误地指定

为了在平均值较大时查看情况是否发生变化,让我们修改模拟。我们现在将生成具有泊松均值的数据,其结果为20到55:

nSim < -  10000
pvalues < -  array(0,dim = nSim)

for(i in 1:nSim){

n < -  1000
x < -  runif(n)
 < -  exp(3 + x)
y < -  rpois(n,mean)

mod < -  glm(y~x,family = poisson)
pvalues [i] < -  pchisq(mod $  ,df = mod $ df. ,lower.tail = FALSE)

}

现在,显着偏差测试的比例降低到0.0635,更接近标称的5%1类错误率。


结论

上面显然是一个非常有限的模拟研究,但我对结果的看法是,虽然偏差可能表明泊松模型是否适合,但我们应该对使用由此产生的p值有些警惕。

相关文章
|
6月前
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
|
6月前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
6月前
|
数据可视化
【R语言实战】——金融时序分布拟合
【R语言实战】——金融时序分布拟合
|
6月前
|
数据可视化 前端开发 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(上)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
6月前
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
|
6月前
|
存储 数据采集 数据可视化
R语言拟合线性混合效应模型、固定效应随机效应参数估计可视化生物生长、发育、繁殖影响因素
R语言拟合线性混合效应模型、固定效应随机效应参数估计可视化生物生长、发育、繁殖影响因素
|
6月前
|
数据可视化
R语言汇率、股价指数与GARCH模型分析:格兰杰因果检验、脉冲响应与预测可视化
R语言汇率、股价指数与GARCH模型分析:格兰杰因果检验、脉冲响应与预测可视化
|
6月前
|
数据可视化
R语言平稳性ADF检验、ARCH-LM效应检验分析收盘价收益率数据可视化
R语言平稳性ADF检验、ARCH-LM效应检验分析收盘价收益率数据可视化
|
6月前
|
机器学习/深度学习 数据可视化 算法
R语言拟合改进的稀疏广义加性模型(RGAM)预测、交叉验证、可视化
R语言拟合改进的稀疏广义加性模型(RGAM)预测、交叉验证、可视化
|
6月前
|
数据可视化 Python
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化