【问题标题】:Looping regressions and running column sum based on results基于结果循环回归和运行列总和
【发布时间】:2020-04-07 20:38:05
【问题描述】:

我有一个带有面板数据的数据框,如下所示:

 countrycode year   7111   7112   7119   7126   7129    7131    7132   7133    7138
1         AGO 1981 380491 149890 238832      0 166690  449982  710642 430481  890546
2         AGO 1982 339626  66434 183487      0  79682  108356  486799 186884  220545
3         AGO 1983 128043   2697  91404 148617   3988  432725  829958 138764  152822
4         AGO 1984  67832      0  85613   1251  45644  361733 1250272 237236 2952746
5         AGO 1985 354335  11225 143000   2130   7687 2204297  942071 408907  474666

如上所示,共有 159 个四位列变量。还有名为 CEPI1_fw 和 CIPI1_fw 的列变量。此外,数据集中有 46 个国家和 34 年。

我想使用plm 命令对 CEPI1_fw 和 CIPI1_fw 上的每个数值列变量进行回归。然后,我想根据回归的系数是高于还是低于某个阈值,对上述数据框中的数值列变量求和。结果输出应该是添加到上面数据框中的一对列。

【问题讨论】:

    标签: r loops regression


    【解决方案1】:

    你的问题有一些模棱两可的地方,但我会试一试。

    首先,我将稍微修改您的代码:向数据框添加行非常效率低下(在此应用程序中可能无关紧要,但进入.. .)

    out <- list()           
    for (i in colnames(master5)) {
      f <- reformulate(c("CEPI1_fw","CIPI1_fw"), 
                       response=paste0("master5$",i))
      m <- summary(plm(f, data = master4, model = "within"))
      out <- c(out, list(data.frame(yvar=i, coef=m$coefficients[1,1],
                               pval= m$coefficients[1,4],
                               stringsAsFactors=FALSE)))  
    }
    out <- do.call(rbind, out)  ## combine elements into a single data frame
    

    仅选择具有统计意义的响应变量。 从统计/推断的角度来看,这可能是个坏主意……

    out <- out[out$pval<0.05,]
    

    选择系数高于阈值的变量的名称

    big_vars <- out$yvar[abs(out$coef)>threshold]
    

    从另一个数据集计算列总和 ...

    colSums(other_data[big_vars])
    

    【讨论】:

    • 感谢您的回复。为什么我尝试了我的代码的修订版本,我收到以下错误:terms.formula(paste_formula(NULL, attr(Formula, "lhs"), rsep = "+")) 中的错误:ExtractVars 中的模型公式无效。另外,您是指倒数第二行的 out$yvar 而不是 outy$var 吗?
    • master5 是矩阵还是数据框?我将names(master5) 更改为colnames(master5),这可能会解决问题...
    • 是的,master5 是一个数据框。我也忘了提到master5的列名是数字。我的新代码出现了一个新错误,我认为是因为这个。我一直在变量周围加上勾号(即`),但我不知道如何将其添加到您的代码中。
    • 您能否发布minimal reproducible example,或者未能编辑您的问题以包含有关输入结构的更多详细信息?
    • 我已经修改了我对问题的描述。我还删除了我最初发布的代码,因为我意识到它存在一个主要问题。如果您需要更多信息,请告诉我。
    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    相关资源
    最近更新 更多