GAM 预测器结构:矩阵与长数据.帧格式

问题描述 投票:0回答:1

我正在拟合一个具有滞后结构的典型 GAM。该游戏具有一般形式:

g1<-gam(y~te(e, l), data=df)

具体:

#exposure
e <- matrix(rnorm(2500, mean = 100, sd = 25), ncol=50)

#lag
l<-matrix(rep(seq(49,0),50), ncol = 50, byrow=T)

#reponse y as sum of the exposures "e" weighted by lag (basically what the GAM shoud 
  estimate)
we<-matrix(sample(seq(0.01, 0.5, 0.02),2500, replace = T), ncol = 50, byrow=T)#random weights
ex<-e*we #weighted exposures by lag

df<-data.frame(y=apply(ex, 1, FUN = sum))#response

上面的代码为每个特定响应“y”生成一组简单的暴露滞后组合,并且数据按照 S.Wood 书中的建议进行组织:“广义加法模型:R 中的介绍。上面的 GAM (g1 )有以下输出:

enter code here

Family: gaussian 
Link function: identity 

Formula:
y ~ te(e, l)

Parametric coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1267.97      12.63   100.4   <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   
te(e,l) 2.605  3.054 4.808 0.00512 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Rank: 24/25
R-sq.(adj) =  0.208   Deviance explained =   25%
GCV =   8595  Scale est. = 7975.3    n = 50}

无论获得的结果如何,我想知道为什么以长 data.frame 格式组织数据会产生不同的结果:

df<-data.frame(l=rep(seq(0,49),each=50), e=c(e[,seq(50,1)]), y=rep(y$y, 50))
##GAM output
Formula:
y ~ te(e, l)

Parametric coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1267.966      1.984   639.2   <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  
te(e,l) 4.11  4.848 2.215  0.0448 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.00337   Deviance explained = 0.501%
GCV = 9858.2  Scale est. = 9838.1    n = 2500

如果这个问题可能很基本,我很抱歉,但我会很高兴得到一些反馈和参考,以更好地理解这一点。谢谢

data-structures lag gam
1个回答
0
投票

使用矩阵会调用平滑的求和约定。当您仅将向量传递给平滑时,不会发生这种求和。

具有矩阵协变量的模型是

$$ g(\mu_i) = \sum_j l_{ij} f(x_{ij}) $$

而长向量版本的模型是

$$ g(\mu_i) = f(x_{i}, l_{i}) $$

表示差异。第一个例子中,链路尺度上响应的预期值是一组平滑的总和,每个滞后一个。在第二个中,相同的期望值取决于 $x_{i}$ 的值和 $l_{i}$ 的值,即第 $i$ 个值的滞后。

我想您可以将 $f(x_{i}, l_{i})$ 对长模型滞后的贡献求和,但您需要手动执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.