如何将glm函数中的预测值在R中移动一行?

lbsnaicq  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(125)

我正在使用glm查看不同时间不同物种存在之间的相关性。现在我有一个数据集,其中包含不同物种在这些时间内的小时数和preense/absence(1/0)。它看起来像这样(当然非常简化):

Hour  Giraffe Elephant Lion
0       1       1       0
1       0       1       1
2       1       0       0
3       1       1       0
4       0       1       0
5       0       0       1

我使用的模型看起来有点像这样:

giraffe_glm.fit <- glm(giraffe ~ scale(elephants) + scale(hour) + scale(lion), data = data_num, family = binomial)

但是这当然是比较同一个小时内的目击事件(第1小时的长颈鹿目击事件和第1小时的大象和狮子目击事件)。但是我想看看与前一个小时的目击事件的比较(例如第1小时的长颈鹿目击事件和第0小时的大象和狮子目击事件)
我可以尝试像这样将移位列添加到数据集:

Hour  Giraffe Elephant Lion Elephant-1 Lion-1
0       1       1       0       NA       NA
1       0       1       1       1       0
2       1       0       0       1       1
3       1       1       0       0       0
4       0       1       0       1       0
5       0       0       1       1       0

并在模型中使用它们,但我有很多变量,我希望找到一种方法将其直接应用到模型中,比如glm(giraffe ~ scale(elephants-1) + scale(hour) + scale(lion-1), data = data_num, family = binomial)或类似的东西。有没有办法做到这一点?

0ejtzxu1

0ejtzxu11#

@dufei已经建议使用lag()

data_lagged <- data %>%
  mutate(
    Elephant_lag = lag(Elephant),
    Lion_lag = lag(Lion)
  )

glm_fit <- glm(Giraffe ~ scale(Elephant_lag) + scale(Lion_lag), data = data_lagged, family = binomial)
summary(glm_fit)
Call:
glm(formula = Giraffe ~ scale(Elephant_lag) + scale(Lion_lag), 
    family = binomial, data = data_lagged)

Deviance Residuals: 
         2           3           4           5           6  
-6.547e-06   6.547e-06   6.547e-06  -6.547e-06  -6.547e-06  

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)
(Intercept)            -4.913  58589.772       0        1
scale(Elephant_lag)   -21.973  67653.634       0        1
scale(Lion_lag)        21.973  67653.664       0        1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 6.7301e+00  on 4  degrees of freedom
Residual deviance: 2.1434e-10  on 2  degrees of freedom
  (1 Beobachtung als fehlend gelöscht)
AIC: 6

Number of Fisher Scoring iterations: 23
hgc7kmma

hgc7kmma2#

在公式中尝试dplyr::lag()

相关问题