r - 带有 lm 和因子的面板回归,跨面板或组的数据“泄漏”
问题描述
我正在尝试使用此示例数据运行面板回归,但是看起来某些数据在组之间“泄漏”:
data = data.frame(group = c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'),
var1 = c(10, 8, 5, 7, 9, 0, 3, 2, 9))
ft = lm(var1 ~ I(dplyr::lag(var1, 1)) + factor(group), data = data)
ft$model
var1 I(dplyr::lag(var1, 1)) factor(group)
2 8 10 a
3 5 8 a
4 7 5 b
5 9 7 b
6 0 9 b
7 3 0 c
8 2 3 c
9 9 2 c
在拟合数据中,它表明一些数据已经转移了组,即边缘情况。每组滞后 1 我希望每组有两个观察结果,丢弃第一个,但是组“b”和“c”有三个观察结果。
如何防止这种泄漏并使其按组滞后?预期ft$model
会是这样的:
group var1 `lag(var1, 1)`
1 a 10 NA
2 a 8 10
3 a 5 8
4 b 7 NA
5 b 9 7
6 b 0 9
7 c 3 NA
8 c 2 3
9 c 9 2
解决方案
为什么不首先创建我们想要的数据,然后将其应用到lm
?
data %>%
group_by(group) %>%
mutate(lag_var1 = lag(var1)) -> data1
# group var1 lag_var1
# <chr> <dbl> <dbl>
#1 a 10 NA
#2 a 8 10
#3 a 5 8
#4 b 7 NA
#5 b 9 7
#6 b 0 9
#7 c 3 NA
#8 c 2 3
#9 c 9 2
推荐阅读
- google-bigquery - BigQuery 中的分区如何工作?
- javascript - 触发点击 UP 或 Down 输入类型编号与其他按钮
- python - 将类与该程序相关联,以帮助更好地理解如何使用类进行编程
- ansible - 使用kubespray安装kubernetes总是失败,貌似是个bug
- java - 我不能在 java 中插入超过 10 位的整数类型的数据
- javascript - 带有@tippyjs/react 的 NextJs 工具提示
- python - 打破内存中的 ZipFile 以进行单元测试
- c# - 为什么我收到 System.NullReferenceException 错误?
- java - .RuntimeException:无法实例化活动 ComponentInfo java.lang.ClassNotFoundException:找不到类“moveitech.com.MainActivity”
- rust - Clippy 冗余分配 lint