【问题标题】:Identifying data points above fixed effects regression using data.table使用 data.table 识别高于固定效应回归的数据点
【发布时间】:2021-10-26 18:29:03
【问题描述】:

我想识别回归线上方的数据点。我有一个面板数据集,我已经拟合了一个固定效应模型:

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 vs damMean

我想找出这条回归线上方的ID 我已经使用以下代码计算了固定效应模型的预测值(基于此 post 的代码)

fitted <- as.numeric(fixed$model[[1]] - fixed$residuals)
> fitted
 [1]  71.24338  79.03766  74.86613  71.34263  70.83020  71.56797  72.17324  74.54755  71.16720  73.37487
[11]  70.58863  69.27203  71.05852  59.72911  63.43947  68.69871  67.25271  75.68397  76.30475  81.12128

是否可以使用上面的预测值和 R 中的 data.table 来识别固定效应回归线上方的 ID

【问题讨论】:

    标签: r regression mixed-models plm


    【解决方案1】:

    使用residuals 函数。正残差 = 线上方的点,负 = 线下方的点。

    library(plm)
    library(tidyverse)
    library(ggplot2)
    
    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 <- plm(progenyMean ~ damMean, data, model= "within", index = c("ID","year"))                   
    residuals(fixed)
    
    data %>% ggplot(aes(damMean, progenyMean)) +
      geom_point(data=data %>% filter(residuals(fixed)>0), col="red")+
      geom_point(data=data %>% filter(residuals(fixed)<0), col="blue")
    
    data %>% mutate(
      test = ifelse(residuals(fixed)>0, "up", "down") %>% factor()
    ) %>% group_by(test) %>% summarise(
      n = n()
    )
    

    【讨论】:

    • 谢谢!是否可以使用data.table 这样做?并用ID的上下创建一个新的数据表?
    • 我在回归线上方/下方创建了以下数据点列表:&gt; fitted &lt;- as.numeric(fixed$model[[1]] - fixed$residuals) above &lt;- data$progenyMean3Y &gt; fitted 但我不确定如何使用 data.table 创建一个表,其中每一行都是唯一的 ID是上下两列,分别计算该 ID 的回归线上方/下方的数据点数?
    • 我不太明白你想要达到什么目的。请参阅我编辑的答案。这是你所期望的吗?还有一件事,您确定要使用plm 模型而不是标准的lm
    猜你喜欢
    • 2020-03-20
    • 2020-06-30
    • 1970-01-01
    • 2019-11-24
    • 2020-03-28
    • 2020-07-21
    • 2021-10-25
    • 2020-04-27
    • 2020-03-30
    相关资源
    最近更新 更多