lm:使用两个变量的乘积作为单个变量

时间:2018-03-13 04:54:26

标签: r output regression

我正在运行以下代码:

lm(ath ~ HAPP + IQ2 + OPEN2 + INCOME*EXPEC,data=data)

当然,这导致我输出:

Standardized weighted residuals 2:
    Min      1Q  Median      3Q     Max 
-3.2644 -0.5461 -0.0223  0.4158  3.2217 

Coefficients (mean model with logit link):
               Estimate Std. Error z value Pr(>|z|)    
(Intercept)   5.730e+00  3.141e+00   1.824 0.068112 .  
HAPP         -7.765e-02  8.958e-02  -0.867 0.386014    
IQ2           5.080e-04  7.453e-05   6.816 9.38e-12 ***
OPEN2        -5.038e-06  5.114e-06  -0.985 0.324640    
INCOME       -1.837e-02  1.211e-01  -0.152 0.879395    
EXPEC        -3.336e-01  1.161e-01  -2.873 0.004067 ** 
INCOME:EXPEC  2.645e-03  7.597e-04   3.481 0.000499 ***

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)    9.489      1.363    6.96 3.41e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 222.5 on 8 Df
Pseudo R-squared: 0.6938
Number of iterations: 36 (BFGS) + 4 (Fisher scoring) 

我需要以非常优雅的方式从回归中删除INCOME和EXPEC行(包括Estimate,Std.Error,z值和Pr(> | z |))(我需要运行像一百万个模型,所以我不能一个接一个地手工完成)。请注意这些变量(INCOME和EXPEC)未包含在原始的单个变量集中。这是,只应打印所要求的变量(当然还需要相互作用)。

任何建议?

谢谢! :d

2 个答案:

答案 0 :(得分:1)

您可以使用AsIs功能。请参阅下面的示例;

fit <- lm(Sepal.Length ~ Sepal.Width + I(Petal.Length * Petal.Width) , data = iris)
fit

# Call:
#   lm(formula = Sepal.Length ~ Sepal.Width + I(Petal.Length * Petal.Width), 
#      data = iris)
# 
# Coefficients:
#   (Intercept)                    Sepal.Width  
# 4.1072                         0.2688  
# I(Petal.Length * Petal.Width)  
# 0.1578  

library(broom)
tidy(fit)
# term  estimate   std.error statistic      p.value
# 1                   (Intercept) 4.1072163 0.266529393 15.409994 1.702125e-32
# 2                   Sepal.Width 0.2687704 0.081280587  3.306698 1.186597e-03
# 3 I(Petal.Length * Petal.Width) 0.1578160 0.007517941 20.991921 4.426899e-46

答案 1 :(得分:0)

如果你只需要部分系数,你可以使用基数R的coef函数,并将你喜欢的指数子集。例如:

a1 <- lm(Sepal.Length ~ Sepal.Width + I(Petal.Length * Petal.Width) , data = iris)
coefficients(a1)[1:2]

(Intercept) Sepal.Width 
  4.1072163   0.2687704 

如果您还需要拨打公式电话,可以拨打电话

a1$call
lm(formula = Sepal.Length ~ Sepal.Width + I(Petal.Length * Petal.Width), 
data = iris)

或者,如果您需要任何其他参数,请查看str(a1)或str(摘要(a1))