【发布时间】:2021-08-02 20:23:27
【问题描述】:
我正在尝试调整下面定义的广义线性模型:
需要注意的是,响应变量Var1和回归变量Var2的值为零,为此添加了一个常数以避免在应用日志时出现问题。
model = glm(Var1+2 ~ log(Var2+2) + offset(log(Var3/Var4)),
family = gaussian(link = "log"), data = data2)
但是,我在使用hnp 函数执行诊断分析图表时遇到错误,该函数表示为:
library(hnp)
hnp(model)
Gaussian model (glm object)
Error in eval(family$initialize) :
cannot find valid starting values: please specify some
为了规避这种情况,我尝试手动执行,然后进行图的构建,但是错误信息仍然存在。
dfun <- function(obj) resid(obj)
sfun <- function(n, obj) simulate(obj)[[1]]
ffun <- function(resp) glm(resp ~ log(Var2+2) + offset(log(Var3/Var4)),
family = gaussian(link = "log"), data = data2)
hnp(model, newclass = TRUE, diagfun = dfun, simfun = sfun, fitfun = ffun)
Error in eval(family$initialize) :
cannot find valid starting values: please specify some
使用了一些指导方针,其中我找到了尝试解决问题的信息,例如考虑初始值以在线性预测器和均值中初始化估计算法,但是,这些还不足以解决问题,见下面的计算例程:
fit = lm(Var1+2 ~ log(Var2+2) + offset(log(Var3/Var4)), data=data2)
coefficients(fit)
(Intercept) log(Var2+2)
32.961103 -8.283306
model = glm(Var1+2 ~ log(Var2+2) + offset(log(Var3/Var4)),
family = gaussian(link = "log"), start = c(32.96, -8.28), data = data2)
hnp(model)
Error in eval(family$initialize) :
cannot find valid starting values: please specify some
看到即使尝试手动实现半正态图,错误仍然存在。
dfun <- function(obj) resid(obj)
sfun <- function(n, obj) simulate(obj)[[1]]
ffun <- function(resp) glm(resp ~ log(Var2+2) + offset(log(Var3/Var4)),
family = gaussian(link = "log"), data = data2, start = c(32.96, -8.28))
hnp(model, newclass = TRUE, diagfun = dfun, simfun = sfun, fitfun = ffun)
Error in eval(family$initialize) :
cannot find valid starting values: please specify some
我也尝试通过从数据库中删除零来重新调整模型,但是我没有得到任何解决问题的方法,即它仍然存在。
【问题讨论】:
-
你真的想要一个带有日志链接的高斯响应吗?在拟合模型之前使用伽马响应或对数变换变量更为常见
-
您好,感谢您的反馈。但是,我会尝试更好地详细说明我的问题。我的回答不承认“正确的不对称性”,那么,我使用伽玛分布是否正确?我在变量中使用日志的事实是由于存在一些等于零的值,所以我对带有链接日志的高斯响应感兴趣。你能帮我解决一下吗?
-
嘿@BrenoS。我认为零并不能证明使用日志链接是合理的。您的错误没有呈指数分布,我希望现在这一点很清楚
标签: r statistics regression data-modeling glm