我有一个 logit 模型对象适合使用glm2
. 预测变量是连续的且随时间变化的,因此我使用的是基本样条曲线。当我predict(FHlogit, foo..,)
模型对象时,它提供了一个预测。一切都很好。
现在,我想做的是提取FHLogit
提供预测的部分和基矩阵。我不想从str(FHLogit)
我试图提取的部分中提取有关模型的信息Beta * Predictor = 2
。所以,我可以为每个预测变量操作基础矩阵
我有一个 logit 模型对象适合使用glm2
. 预测变量是连续的且随时间变化的,因此我使用的是基本样条曲线。当我predict(FHlogit, foo..,)
模型对象时,它提供了一个预测。一切都很好。
现在,我想做的是提取FHLogit
提供预测的部分和基矩阵。我不想从str(FHLogit)
我试图提取的部分中提取有关模型的信息Beta * Predictor = 2
。所以,我可以为每个预测变量操作基础矩阵
我认为使用基本样条不会影响这一点。如果是这样,请提供一个可重现的示例。
这是一个简单的案例:
df1 <- data.frame(y=c(0,1,0,1),
x1=seq(4),
x2=c(1,3,2,6))
library(glm2)
g1 <- glm2(y ~ x1 + x2, data=df1)
### default for type is "link"
> stats::predict.glm(g1, type="link")
1 2 3 4
0.23809524 0.66666667 -0.04761905 1.14285714
现在,由于不确定这些编号是如何得出的,我们可以查看上述信息的来源,使用predict.glm
. 我们可以看到 type="link" 是最简单的情况,返回
pred <- object$fitted.values # object is g1 in this case
这些值是从原始数据*系数得出的预测,我们可以用例如验证
all.equal(unname(predict.glm(g1, type="link")[1]),
unname(coef(g1)[1] + coef(g1)[2]*df1[1, 2] + coef(g1)[3]*df1[1, 3]))