我在一个广义线性模型上运行一个弹性网,其中的glmnet和插入包在R中 .
我的响应变量是cost(其中cost> $ 0),因此我似乎允许我指定 (link="log")
,如下所示:
> lasso_fit <- glmnet(x, y, alpha=1, family="gaussian"(link="log"), lambda.min.ratio=.001)
我尝试了不同的变种,有没有引用,但没有运气 . glmnet文档没有讨论如何包含日志链接 .
我错过了什么吗? family="gaussian"
是否已隐式假设日志链接?
1 回答
这有点令人困惑,但
glmnet
和glm
中的family
参数完全不同 . 在glm
中,您可以指定character
,如"gaussian"
,或者您可以指定具有某些参数的函数,例如gaussian(link="log")
. 在glmnet
中,您只能使用character
指定族,如"gaussian"
,并且无法通过该参数自动设置链接 .gaussian
的默认链接是identity
函数,即根本没有转换 . 但是,请记住链接函数只是y
变量的转换;你可以自己指定:另请注意,
poisson
系列的默认链接是log
,但目标函数将更改 . 请参阅前两段中?glmnet
下的详细信息 .你的评论让我重新思考我的答案;我有证据表明它是 not correct .
正如您所指出的,E [log(Y)]和log(E [Y])之间存在差异 . 我认为上面的代码所做的是适合E [log(Y)],这不是你想要的 . 以下是一些生成数据并确认您在评论中注明的内容的代码: