【问题标题】:Multiplying results regression R相乘结果回归 R
【发布时间】:2020-07-10 09:12:20
【问题描述】:

我刚刚在 R 中进行了回归。我想将每个系数的结果与一些变量相乘。我该怎么做?

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)   
(Intercept)                    1.210e+00  7.715e-01   1.568  0.13108   
SDCHRO_I                      -1.846e-01  2.112e-01  -0.874  0.39157   
functional_cognitive_level3    4.941e-02  7.599e-02   0.650  0.52224     
rev_per_members               -4.955e-06  5.827e-06  -0.850  0.40432   

我想要这样的东西:

1.210e+00 + -1.846e-01 * var1 + 4.941e-02 * var2 +   4.941e-02 * var3 

有办法吗?

【问题讨论】:

  • 看看predict()function。它可以满足您的需求。无需达到每个系数。
  • 是的,这完全是我想要的!我还不明白它是如何工作的以及它做了什么,但我认为它会成功

标签: r regression


【解决方案1】:

您可以使用model.matrix

data(mtcars)

lm1 <- lm(mpg~cyl+disp+hp, data=mtcars)

res <- coef(lm1) %*% t(model.matrix(lm1))
all(res==predict(lm1))
#[1] TRUE

【讨论】:

    【解决方案2】:

    您可以使用model$coefficients 访问系数。 例如,如果你想将所有系数乘以 10,你可以这样做

    df = data.frame(x = runif(100), y = runif(100), z = runif(100))
    mod = lm(formula = y ~ x*z, data = df)
    mod$coefficients
    #> (Intercept)           x           z         x:z 
    #>   0.6449097  -0.1989884  -0.3962655   0.4621273
    mod$coefficients*10
    #> (Intercept)           x           z         x:z 
    #>    6.449097   -1.989884   -3.962655    4.621273
    

    reprex package (v0.3.0) 于 2020-07-10 创建

    但是,如果你想在你的例子中做这样的事情,你需要使用model$coefficients[i] 访问各个系数,例如

    df = data.frame(x = runif(100), y = runif(100), z = runif(100))
    mod = lm(formula = y ~ x*z, data = df)
    
    mod$coefficients[1]*10
    #> (Intercept) 
    #>    5.994662
    mod$coefficients[2]*10
    #>         x 
    #> -1.687928
    

    reprex package (v0.3.0) 于 2020 年 7 月 10 日创建

    您甚至可以通过循环 coefficients 对象的长度来动态执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多