在回归线上方创建数据 table 个数据点
Creating a data table of data points above regression line
我有一个适合固定效应模型的面板数据集:
data <- data.frame(ID = c(1,1,1,1,2,2,3,3,3),
year = c(1,2,3,4,1,2,1,2,3),
progenyMean = c(90,78,92,69,86,73,82,85,91),
damMean = c(89,89,72,98,95,92,94,87,89)
ID, year, progenyMean, damMean
1, 1, 70, 69
1, 2, 68, 69
1, 3, 72, 72
1, 4, 69, 68
2, 1, 76, 75
2, 2, 73, 80
3, 1, 72, 74
3, 2, 75, 67
3, 3, 71, 69
# Fixed Effects Model in plm
fixed <- plm(progenyMean ~ damMean, data, model= "within", index = c("ID","year"))
我用蓝色的固定效应回归线绘制了 progenyMean 与 damMean 的对比图:
我想识别固定效应回归线上方的 ID
并创建此信息的数据 table。 有几个数据每个唯一 ID
的点,因此 ID
可能在回归线 上方和下方都有点 。
我计算了固定效应模型的预测值 (fitted
) 并确定了线上方的数据点:
fitted <- as.numeric(fixed$model[[1]] - fixed$residuals)
above <- data$progenyMean3Y > fitted
above
[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
[12] FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE
[23] FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE
是否可以使用 data.table
创建一个 table,其中 每一行都是唯一的 ID
并且有两列,above
和below
计算数据点的数量 above/below 那个 ID
?
的回归线
按照您已经在问题中列出的逻辑,下面是构建摘要的一种方法 data.table
:
library(data.table)
library(plm)
data <- data.frame(ID = c(1,1,1,1,2,2,3,3,3),
year = c(1,2,3,4,1,2,1,2,3),
progenyMean = c(90,78,92,69,86,73,82,85,91),
damMean = c(89,89,72,98,95,92,94,87,89))
# Fixed Effects Model in plm
fixed <- plm(progenyMean ~ damMean, data, model= "within", index = c("ID","year"))
fitted <- as.numeric(fixed$model[[1]] - fixed$residuals)
above <- data$progenyMean > fitted
dt <- as.data.table(data)
dt[, `:=`(fitted = fixed$model[[1]] - fixed$residuals,
above = progenyMean > fitted,
below = progenyMean < fitted)
][,
.(above = sum(above), below = sum(below)), by = "ID"][]
#> ID above below
#> 1: 1 1 3
#> 2: 2 1 1
#> 3: 3 1 2
由 reprex package (v2.0.1)
于 2021-08-27 创建
我有一个适合固定效应模型的面板数据集:
data <- data.frame(ID = c(1,1,1,1,2,2,3,3,3),
year = c(1,2,3,4,1,2,1,2,3),
progenyMean = c(90,78,92,69,86,73,82,85,91),
damMean = c(89,89,72,98,95,92,94,87,89)
ID, year, progenyMean, damMean
1, 1, 70, 69
1, 2, 68, 69
1, 3, 72, 72
1, 4, 69, 68
2, 1, 76, 75
2, 2, 73, 80
3, 1, 72, 74
3, 2, 75, 67
3, 3, 71, 69
# Fixed Effects Model in plm
fixed <- plm(progenyMean ~ damMean, data, model= "within", index = c("ID","year"))
我用蓝色的固定效应回归线绘制了 progenyMean 与 damMean 的对比图:
我想识别固定效应回归线上方的 ID
并创建此信息的数据 table。 有几个数据每个唯一 ID
的点,因此 ID
可能在回归线 上方和下方都有点 。
我计算了固定效应模型的预测值 (fitted
) 并确定了线上方的数据点:
fitted <- as.numeric(fixed$model[[1]] - fixed$residuals)
above <- data$progenyMean3Y > fitted
above
[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
[12] FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE
[23] FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE
是否可以使用 data.table
创建一个 table,其中 每一行都是唯一的 ID
并且有两列,above
和below
计算数据点的数量 above/below 那个 ID
?
按照您已经在问题中列出的逻辑,下面是构建摘要的一种方法 data.table
:
library(data.table)
library(plm)
data <- data.frame(ID = c(1,1,1,1,2,2,3,3,3),
year = c(1,2,3,4,1,2,1,2,3),
progenyMean = c(90,78,92,69,86,73,82,85,91),
damMean = c(89,89,72,98,95,92,94,87,89))
# Fixed Effects Model in plm
fixed <- plm(progenyMean ~ damMean, data, model= "within", index = c("ID","year"))
fitted <- as.numeric(fixed$model[[1]] - fixed$residuals)
above <- data$progenyMean > fitted
dt <- as.data.table(data)
dt[, `:=`(fitted = fixed$model[[1]] - fixed$residuals,
above = progenyMean > fitted,
below = progenyMean < fitted)
][,
.(above = sum(above), below = sum(below)), by = "ID"][]
#> ID above below
#> 1: 1 1 3
#> 2: 2 1 1
#> 3: 3 1 2
由 reprex package (v2.0.1)
于 2021-08-27 创建