我目前在运行回归之前构建滞后和线索。这感觉有点笨拙(甚至比Stata在xtset之后按类别自动发生滞后)并且我想直接滞后于回归公式。但是,我不知道如何将by =
data.table
部分shift()
部分与其lm()
函数组合在一个回归命令中,例如library(data.table)
set.seed(123)
DT <- data.table(id = c(rep("A", 4), rep("B", 3)),
y = rnorm(7),
dummy = c(0, 1, 0, NA, NA, 1, 0))
。
示例:
创建一些数据(NA只是确保按类别滞后和滞后不会巧合地产生相同的结果......):
DT[, mylag := shift(dummy, fill=0), by = id]
在运行回归之前创建滞后当然是有效的,但是很繁琐(并且有许多滞后)使数据混乱:
shift()
lm()
在lm(y ~ mylag, data=DT)
lm(y ~ shift(dummy), data=DT)
内部工作,但我不能按类别进行调整,因此结果与之前创建的延迟不同:
shift()
让我回到我的问题:如何在回归中按类别调用class Record[H <: HList](val hs: H)
object Record {
import shapeless.LabelledGeneric
def apply[P <: Product, L <: HList](p: P)(implicit gen: LabelledGeneric.Aux[P, L]) = new Record[L](gen.to(p))
}
?