如何为GAM模型的变量增加权重?

时间:2019-05-08 23:34:54

标签: r gam mgcv

我正在基于具有许多变量的大型数据集运行gam模型。我的反应变量是每年秋天/秋天一群人的“招聘”水平。这是通过60年内每个秋天/秋天的小鹿与女性的比率来计算的。

我的问题是,有很多年和研究地点只记录了1-10名女性。这意味着该比率的鲁棒性是不可信的。例如,如果看到一只雌性和一只小鹿,它的招募率是100%,但是如果他们看到另外一只雌性,则下降50%!

我需要告诉模型,样本量较小的年份/研究场所的权重应比样本量较大的年份/研究场所的权重小,因为这些较小的样本量无疑会影响结果。

上图是每年观察的女性表和该直方图。

我的模型如下:

gamFIN <-  gam(Fw.FratioFall 
             ~ s(year)
             + s(percentage_woody_coverage) 
             + s(kmRoads.km2) 
             + s(WELLS_ACTIVEinsideD)  
             + s(d3) 
             + s(WT_DEER_springsurveys)
             + s(BadlandsCoyote.1000_mi)
             + s(Average_mintemp_winter, BadlandsCoyote.1000_mi)
             + s(BadlandsCoyote.1000_mi, WELLS_ACTIVEinsideD)
             + s(BadlandsCoyote.1000_mi, d3)
             + s(YEAR, bs = "re") + s(StudyArea, bs = "re"), method = "REML", select = T,  data = mydata)

我如何告诉模型根据他们所基于的样本大小对我的响应变量进行加权。

1 个答案:

答案 0 :(得分:1)

请勿将此建模为结果的比率。取而代之的是,将小鹿计数建模为结果,并使用公式的RHS上的对数值通过offset()项对雌性计数进行建模。您应该用小鹿计数的对数抵消。因此公式如下所示:

   Fawns 
         ~ s(year)
        + all_those_smooth_terms
        + offset( lnFemale_counts)

gam模型具有隐式的日志链接,这是记录女性计数的原因。

编辑(Gavin是正确的。gam的默认设置不是线性链接):

gamFIN <- gam(FawnFall ~ s(year) + s(percentage_woody_coverage) + s(kmRoads.km2) + 
                s(WELLS_ACTIVEinsideD) + s(d3) + s(WT_DEER_springsurveys) + 
      s(BadlandsCoyote.1000_mi) + s(Average_mintemp_winter, BadlandsCoyote.1000_mi) + 
      s(BadlandsCoyote.1000_mi, WELLS_ACTIVEinsideD) + s(BadlandsCoyote.1000_mi, d3) + 
      s(YEAR, bs = "re") + s(StudyArea, bs = "re") + offset(FemaleFall),
      family="poisson", method = "REML", select = T, data = mydata)