You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的glm函数中将预测变量偏移一行?

直接在GLM模型中调用前一小时观测数据的方法

你可以用dplyr包的lag()函数,直接在模型公式里生成前一小时的物种观测值,不用手动新增列。具体实现如下:

首先确保安装并加载dplyr包:

install.packages("dplyr") # 首次使用需安装
library(dplyr)

然后修改你的GLM模型公式,对需要滞后的变量(Elephant、Lion)使用lag()函数,再进行标准化:

giraffe_glm.fit <- glm(
  giraffe ~ scale(lag(Elephant)) + scale(Hour) + scale(lag(Lion)),
  data = data_num,
  family = binomial
)

原理说明

  • lag(Elephant)会自动提取每个观测的前一行Elephant值,正好对应你需要的“前一小时数据”:比如Hour1的Giraffe会匹配Hour0的Elephant,Hour2匹配Hour1的Elephant,以此类推。
  • 第一行(Hour0)没有前一行数据,lag()会生成NA,GLM运行时会自动剔除这一行含缺失值的观测,不影响后续有效数据的建模。

不用dplyr的替代方案

如果你不想加载额外包,可以用基础R的语法手动构造滞后序列,原理是取变量除最后一行外的所有值,前面补NA:

giraffe_glm.fit <- glm(
  giraffe ~ scale(c(NA, head(Elephant, -1))) + scale(Hour) + scale(c(NA, head(Lion, -1))),
  data = data_num,
  family = binomial
)

这种写法效果和lag()完全一致,但变量多的时候代码会比较繁琐,更推荐用dplyr::lag()。

内容的提问来源于stack exchange,提问作者Rebecka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:43:24