【发布时间】:2012-11-26 14:44:59
【问题描述】:
我目前正在使用 Hardin 和 Hilbe 的“广义线性模型和扩展”一书(第二版,2007 年)。作者建议,“日志链接通常用于响应数据,而不是 OLS 模型,这些数据在连续尺度上只取正值”。当然,他们还建议使用残差图来检查是否仍然可以使用使用身份链接的“正常”线性模型。
我试图在 R 中复制他们在 STATA 书中所做的事情。事实上,我在 STATA 中的日志链接没有问题。但是,当使用 R 的 glm 函数调用相同的模型,但指定 family=gaussian(link="log") 时,我被要求提供起始值。当我将它们都设置为零时,我总是得到算法没有收敛的消息。选择其他值的消息有时是相同的,但我得到的更多时候:
Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, :
NA/NaN/Inf in 'x'
正如我所说,在 STATA 中,我可以运行这些模型而无需设置起始值且不会出现错误。我尝试了许多不同的模型和不同的数据集,但问题总是相同的(除非我只包含一个自变量)。谁能告诉我为什么会这样,或者我做错了什么,或者为什么书中建议的模型可能不合适?非常感谢您的帮助,谢谢!
编辑:作为重现错误的示例,请考虑可以下载的数据集here。加载此数据集后,我运行以下模型:
mod <- glm(betaplasma ~ age + vituse, family=gaussian(link="log"), data=data2, start=c(0,0,0))
这会产生算法未收敛的警告消息。
Edit2:我还被要求提供该模型的 STATA 输出。这里是:
. glm betaplasma age vituse, link(log)
Iteration 0: log likelihood = -2162.1385
Iteration 1: log likelihood = -2096.4765
Iteration 2: log likelihood = -2076.2465
Iteration 3: log likelihood = -2076.2244
Iteration 4: log likelihood = -2076.2244
Generalized linear models No. of obs = 315
Optimization : ML Residual df = 312
Scale parameter = 31384.51
Deviance = 9791967.359 (1/df) Deviance = 31384.51
Pearson = 9791967.359 (1/df) Pearson = 31384.51
Variance function: V(u) = 1 [Gaussian]
Link function : g(u) = ln(u) [Log]
AIC = 13.20142
Log likelihood = -2076.224437 BIC = 9790173
------------------------------------------------------------------------------
| OIM
betaplasma | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
age | .0056809 .0032737 1.74 0.083 -.0007354 .0120972
vituse | -.273027 .0650773 -4.20 0.000 -.4005762 -.1454779
_cons | 5.467577 .2131874 25.65 0.000 5.049738 5.885417
------------------------------------------------------------------------------
【问题讨论】:
-
这是从 R-help 交叉发布的。我打算在那里回答......交叉发布没有明确禁止,但至少你应该提到你正在交叉发布。
glm可能比 Stata 的 glm 拟合代码更脆弱,但我过去多次成功使用日志链接。您可以发布一个可重现的示例 [tinyurl.com/reproducible-000] 吗? -
感谢您的回答,并对交叉发布感到抱歉。作为一个相对的菜鸟,我不知道这是一个问题。例如,考虑可以下载的数据集here。然后我运行以下模型:'mod
-
最好将此评论添加到您的问题中(通过编辑原始问题)...
-
将实际的 Stata 输出与准泊松模型产生的输出进行比较会很有趣。想把它也添加到您的问题中吗?
-
DWin,刚刚加了输出,确实很像。也感谢你的努力!