gpt4 book ai didi

r - 如何为 R 中的每个变量提取 GAM {mgcv} 的拟合值?

转载 作者:行者123 更新时间:2023-12-02 15:30:35 27 4
gpt4 key购买 nike

我正在寻找一种方法来添加模型中每个变量的预测值(真实的,非标准化的)

> model<-gam(LN_Brutto~s(agecont,by=Sex)+factor(Sex)+te(Month,Age)+s(Month,by=Sex),
data=bears)

这是我的模型的总结:

> summary(m13)

Family: gaussian
Link function: identity

Formula:
LN_Brutto ~ s(agecont, by = Sex) + factor(Sex) + te(Month, Age) +
s(Month, by = Sex)

Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.32057 0.01071 403.34 <2e-16 ***
factor(Sex)m 0.27708 0.01376 20.14 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Approximate significance of smooth terms:
edf Ref.df F p-value
s(agecont):Sexf 8.1611 8.7526 20.170 < 2e-16 ***
s(agecont):Sexm 6.6695 7.5523 32.689 < 2e-16 ***
te(Month,Age) 10.3651 12.7201 6.784 2.19e-12 ***
s(Month):Sexf 0.9701 0.9701 0.641 0.430
s(Month):Sexm 1.3750 1.6855 0.193 0.787
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Rank: 60/62
R-sq.(adj) = 0.781 Deviance explained = 78.7%
GCV = 0.048221 Scale est. = 0.046918 n = 1093

预测值由这段代码提供:

> predict<-predict(m13, type = "terms")

结果是这样的:

    factor(Sex) s(agecont):Sexf s(agecont):Sexm te(Month,Age)   s(Month):Sexf   s(Month):Sexm
1 0.2770806 0.000000000 0.111763696 -0.077845764 0.000000000 0.0007840912
2 0.2770806 0.000000000 0.240016156 -0.049143798 0.000000000 0.0007840912
3 0.2770806 0.000000000 0.034328752 0.046524454 0.000000000 -0.0058871897
4 0.0000000 -0.786533918 0.000000000 -0.067942427 0.021990192 0.0000000000
5 0.0000000 0.074434715 0.000000000 0.046524454 0.021990192 0.0000000000
6 0.0000000 0.161121563 0.000000000 0.089599601 0.021990192 0.0000000000
7 0.0000000 0.074434715 0.000000000 0.046524454 0.021990192 0.0000000000
8 0.2770806 0.000000000 -0.298597370 -0.007877328 0.000000000 -0.0058871897
...

但我猜这些只是标准化的预测值而不是真实值(真实值应该没有负值!?)。

那么有人知道我必须在代码中修改什么才能获得真正的值(value)吗?任何想法?谢谢!

最佳答案

不太确定我是否理解正确,但 predict(model, type = "terms") 可能是您正在寻找的解决方案。

更新

我不认为这些是标准化的。可能有些系数只是负数。

考虑帮助文件 ?mgcv:::predict.gam 中的示例:

library(mgcv)
n<-200
sig <- 2
dat <- gamSim(1,n=n,scale=sig)

b<-gam(y~s(x0)+s(I(x1^2))+s(x2)+offset(x3),data=dat)

下面的结果表明,这些实际上是用于每个预测变量计算拟合值的贡献(通过计算每个贡献的总和,然后添加截距和偏移量)。

> head(predict(b))
1 2 3 4 5 6
9.263322 2.822200 7.137201 4.902631 14.558401 11.889092
> head(rowSums(predict(b, type = "terms")) + attr(predict(b, type = "terms"), "constant") + dat$x3)
1 2 3 4 5 6
9.263322 2.822200 7.137201 4.902631 14.558401 11.889092

关于r - 如何为 R 中的每个变量提取 GAM {mgcv} 的拟合值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27017133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com