【问题标题】:R equivalent of Stata * in regressionR 等效于 Stata * 在回归
【发布时间】:2020-08-08 13:36:46
【问题描述】:

我正在寻找可以在运行回归时使用的 Stata * 函数的 R 等效项。

例如,如果我有如下数据框:

outcome  var1  var2  var3  new
  3        2     3     4    3
  2        3     2     4    2
  4        3     2     1    4

我希望能够选择所有以“var”开头的变量名,而无需单独输入每个变量名,以便更有效地运行以下回归:

lm(outcome ~ var1 + var2 + var3 + new, data = df)

This question 解释了如何选择必要的列。我怎样才能干净地将这些合并到回归中?

【问题讨论】:

    标签: r dplyr regression tidyverse stata


    【解决方案1】:

    一种技术是将数据子集到所需的列,然后使用formula 对象的. 运算符来表示lm() 中的自变量。 . 运算符被解释为“公式中没有的所有列”。

    data <- as.data.frame(matrix(runif(1000),nrow = 100)*100)
    colnames(data) <- c("outcome", "x1","x2","x3","x4", "x5","x6", "x7", "var8", "var9")
    
    # select outcome plus vars beginning with var
    desiredCols <- grepl("var",colnames(data)) | grepl("outcome",colnames(data))
    
    # use desiredCols to subset data frame argument in lm()
    summary(lm(outcome ~ .,data = data[desiredCols]))
    

    ...和输出:

    > summary(lm(outcome ~ .,data = data[desiredCols]))
    
    Call:
    lm(formula = outcome ~ ., data = data[desiredCols])
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -57.902 -25.359   2.296  26.213  52.871 
    
    Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 58.712722   7.334937   8.005 2.62e-12 ***
    var8         0.008617   0.101298   0.085    0.932    
    var9        -0.154073   0.103438  -1.490    0.140    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 29.86 on 97 degrees of freedom
    Multiple R-squared:  0.02249,   Adjusted R-squared:  0.002331 
    F-statistic: 1.116 on 2 and 97 DF,  p-value: 0.3319
    
    > 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2019-11-04
      • 2020-03-19
      相关资源
      最近更新 更多