User Tools

Site Tools


multiple_regression_examples

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
multiple_regression_examples [2019/11/01 13:22]
hkimscil [Backward elimination]
multiple_regression_examples [2020/07/06 15:59] (current)
hkimscil [E.g. 1]
Line 1: Line 1:
-====== Multiple Regression with Two Predictor Variables ======+====== Multiple Regression ​e.gs. ====== 
 +====== E.g. 1 ====== 
 +{{:​d.yyk.csv}} 
 +<​code>​ 
 +d.yyk <- read.csv("​http://​commres.net/​wiki/​_media/​d.yyk.csv"​) 
 +d.yyk 
 +d.yyk <- subset(d.yyk,​ select = -c(1)) 
 +d.yyk 
 +</​code>​ 
 +<​code>​ 
 +> d.yyk <- subset(d.yyk,​ select = -c(1)) 
 +> d.yyk 
 +    bmi stress happiness 
 +1  15.1      2         4 
 +2  15.3      2         4 
 +3  16.4      1         5 
 +4  16.3      2         4 
 +5  17.5      2         3 
 +6  18.8      2         4 
 +7  19.2      2         3 
 +8  20.3      1         4 
 +9  21.3      1         4 
 +10 21.3      2         4 
 +11 22.4      2         5 
 +12 23.5      2         5 
 +13 23.7      2         4 
 +14 24.2      3         3 
 +15 24.3      3         3 
 +16 25.6      2         3 
 +17 26.4      3         3 
 +18 26.4      3         2 
 +19 26.4      3         2 
 +20 27.5      3         3 
 +21 28.6      3         2 
 +22 28.2      4         2 
 +23 31.3      3         2 
 +24 32.1      4         1 
 +25 33.1      4         1 
 +26 33.2      5         1 
 +27 34.4      5         1 
 +28 35.8      5         1 
 +29 36.1      5         1 
 +30 38.1      5         1 
 +</​code>​ 
 +우선 여기에서 종속변인인 (dv) happiness에 bmi와 stress를 리그레션 해본다.  
 +<​code>​ 
 +attach(d.yyk) 
 +lm.happiness.bmistress <- lm(happiness ~ bmi + stress, data=d.yyk) 
 +summary(lm.happiness.bmistress) 
 +anova(lm.happiness.bmistress) 
 +</​code>​ 
 + 
 +<​code>​ 
 +> attach(d.yyk) 
 +> lm.happiness.bmistress <- lm(happiness ~ bmi + stress, data=d.yyk) 
 +> summary(lm.happiness.bmistress) 
 + 
 +Call: 
 +lm(formula = happiness ~ bmi + stress, data = d.yyk) 
 + 
 +Residuals:​ 
 +     ​Min ​      ​1Q ​  ​Median ​      ​3Q ​     Max  
 +-0.89293 -0.40909 ​ 0.08816 ​ 0.29844 ​ 1.46429  
 + 
 +Coefficients:​ 
 +            Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) ​ 6.29098 ​   0.50779 ​ 12.389 1.19e-12 *** 
 +bmi         ​-0.05954 ​   0.03626 ​ -1.642 ​ 0.11222 ​    
 +stress ​     -0.67809 ​   0.19273 ​ -3.518 ​ 0.00156 **  
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 0.5869 on 27 degrees of freedom 
 +Multiple R-squared: ​ 0.8217,​ Adjusted R-squared: ​ 0.8085  
 +F-statistic:​ 62.22 on 2 and 27 DF,  p-value: 7.76e-11 
 +
 +>  
 +> anova(lm.happiness.bmistress) 
 +Analysis of Variance Table 
 + 
 +Response: happiness 
 +          Df Sum Sq Mean Sq F value    Pr(>​F) ​    
 +bmi        1 38.603 ​ 38.603 112.070 4.124e-11 *** 
 +stress ​    ​1 ​ 4.264   ​4.264 ​ 12.378 ​ 0.001558 **  
 +Residuals 27  9.300   ​0.344 ​                      
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 +>  
 + 
 +</​code>​ 
 + 
 +위의 분석을 보면  
 +R<​sup>​2</​sup>​ = 0.8217, F (2, 27) = 62.77, p = 7.76e-11 
 + 
 +그러나, coefficient 값을 보면 bmi는 significant 하지 않고, stress는 significant하다. 이는 R제곱에 영향을 주는 것으로 stress가 주이고 bmi의 영향력은 미미하다고 하다는 결론을 내리도록 해준다. 그러나, [[:multiple regression]]에서 언급한 것처럼 독립변인이 두 개 이상일 때에는 무엇이 얼마나 종속변인에 영향을 주는지 그림을 그릴 수 있어야 하므로, 아래와 같이 bmi만을 가지고 regression을 다시 해본다. 
 + 
 +<​code>​ 
 +lm.happiness.bmi <- lm(happiness ~ bmi, data=d.yyk) 
 +summary(lm.happiness.bmi) 
 +anova(lm.happiness.bmi) 
 +</​code>​ 
 + 
 +<​code>​ 
 +> lm.happiness.bmi <- lm(happiness ~ bmi, data=d.yyk) 
 +>  
 +> summary(lm.happiness.bmi) 
 + 
 +Call: 
 +lm(formula = happiness ~ bmi, data = d.yyk) 
 + 
 +Residuals:​ 
 +     ​Min ​      ​1Q ​  ​Median ​      ​3Q ​     Max  
 +-1.20754 -0.49871 -0.03181 ​ 0.35669 ​ 1.83265  
 + 
 +Coefficients:​ 
 +            Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) ​ 7.24143 ​   0.50990 ​ 14.202 2.54e-14 *** 
 +bmi         ​-0.17337 ​   0.01942 ​ -8.927 1.11e-09 *** 
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 0.696 on 28 degrees of freedom 
 +Multiple R-squared: ​  ​0.74,​ Adjusted R-squared: ​ 0.7307  
 +F-statistic:​ 79.69 on 1 and 28 DF,  p-value: 1.109e-09 
 + 
 +> anova(lm.happiness.bmi) 
 +Analysis of Variance Table 
 + 
 +Response: happiness 
 +          Df Sum Sq Mean Sq F value    Pr(>​F) ​    
 +bmi        1 38.603 ​ 38.603 ​ 79.687 1.109e-09 *** 
 +Residuals 28 13.564 ​  ​0.484 ​                      
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 +>  
 +</​code>​ 
 +놀랍게도 bmi 하나만을 가지고 regression을 했더니, R제곱 값이 .74이었다 (F(1,28) = 79.69, p = 1.109e-09). 이런 결과가 나올 수 있는 이유는 독립변인인 bmi와 stress 간의 상관관계가 높아서 처음 분석에서 그 영향력을 (설명력, R제곱에 기여하는 부분을) 하나의 독립변인이 모두 가졌갔기 때문이라고 생각할 수 있다. 이 경우에는 그 독립변인이 stress이다.  
 + 
 +happiness에 stress 만을 regression 해본 결과는 아래와 같다.  
 + 
 +<​code>​ 
 +lm.happiness.stress <- lm(happiness ~ stress, data = d.yyk) 
 +summary(lm.happiness.stress) 
 +anova(lm.happiness.stress) 
 +</​code>​ 
 + 
 +<​code>​ 
 +> lm.happiness.stress <- lm(happiness ~ stress, data = d.yyk) 
 +> summary(lm.happiness.stress) 
 + 
 +Call: 
 +lm(formula = happiness ~ stress, data = d.yyk) 
 + 
 +Residuals:​ 
 +    Min      1Q  Median ​     3Q     Max  
 +-0.7449 -0.6657 ​ 0.2155 ​ 0.3343 ​ 1.3343  
 + 
 +Coefficients:​ 
 +            Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) ​ 5.58651 ​   0.27965 ​  ​19.98 ​ < 2e-16 *** 
 +stress ​     -0.96041 ​   0.08964 ​ -10.71 2.05e-11 *** 
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 0.6044 on 28 degrees of freedom 
 +Multiple R-squared: ​ 0.8039,​ Adjusted R-squared: ​ 0.7969  
 +F-statistic:​ 114.8 on 1 and 28 DF,  p-value: 2.053e-11 
 + 
 +> anova(lm.happiness.stress) 
 +Analysis of Variance Table 
 + 
 +Response: happiness 
 +          Df Sum Sq Mean Sq F value    Pr(>​F) ​    
 +stress ​    1 41.938 ​ 41.938 ​  114.8 2.053e-11 *** 
 +Residuals 28 10.229 ​  ​0.365 ​                      
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 +>  
 +>  
 +</​code>​ 
 +R제곱값은 0.80로 (F(1, 28) = 114.8, 2.053e-11) 스트레스만으로도 significant한 결과를 갖는다.  
 + 
 +그렇다면 stress 와 bmi가 공통으로 기여하는 부분을 뺀 순수 기여분은 어떻게 될까? 즉, 위의 .80 부분 중 bmi와 공통으로 기여하는 부분을 제외한 나머지는 얼마일까?​ 보통 이와 같은 작업을 bmi의 (다른 독립변인의) 영향력을 제어하고 (control) 순수기여분만을 살펴본다고 이야기 한다.  
 + 
 +이를 위해서 아래를 계획, 수행해본다.  
 + 
 +  - 독립변인 간의 regression을 수행한다  
 +    * stress의 순수영향력을 보기 위한 것이므로 bmi와의 상관관계 제곱값, 즉, R제곱 값을 구한다 
 +    * ''​lm.bmi.stress <- lm(bmi ~ stress)''​ 
 +  - 위의 R제곱기여 분의 나머지를 가지고 종속변인인 happiness에 regression한다. 
 + 
 +<​code>​ 
 +lm.stress.bmi <- lm(stress ~ bmi) 
 +summary(lm.stress.bmi) 
 +</​code>​ 
 + 
 +<​code>​ 
 +> lm.stress.bmi <- lm(stress ~ bmi) 
 +> summary(lm.stress.bmi) 
 + 
 +Call: 
 +lm(formula = stress ~ bmi) 
 + 
 +Residuals:​ 
 +     ​Min ​      ​1Q ​  ​Median ​      ​3Q ​     Max  
 +-1.17393 -0.35678 -0.01209 ​ 0.37939 ​ 0.86685  
 + 
 +Coefficients:​ 
 +            Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) -1.40167 ​   0.42160 ​ -3.325 ​ 0.00248 **  
 +bmi          0.16787 ​   0.01606 ​ 10.454 3.58e-11 *** 
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 0.5755 on 28 degrees of freedom 
 +Multiple R-squared: ​ 0.796,​ Adjusted R-squared: ​ 0.7888  
 +F-statistic:​ 109.3 on 1 and 28 DF,  p-value: 3.58e-11 
 +
 +</​code>​ 
 + 
 +위의 아웃풋에서 우리는 bmi와 stress간의 상관관계는 sqrt(0.796)임을 알 수 있고, stress 총 분산 중, R제곱 값인 .796 (약 80%)를 bmi가 설명하고 있다고 하겠다. 여기서 아래의 코드를 이용하여 residual을 알아볼 수 있다. 
 + 
 +<​code>​ 
 +res.lm.stress.bmi <- lm.stress.bmi$residuals 
 +res.lm.stress.bmi 
 +</​code>​ 
 + 
 +<​code>​ 
 +> res.lm.stress.bmi <- lm.stress.bmi$residuals 
 +> res.lm.stress.bmi 
 +           ​1 ​           2            3            4            5            6  
 + ​0.866854946 ​ 0.833281255 -0.351374050 ​ 0.665412796 ​ 0.463970646 ​ 0.245741650  
 +           ​7 ​           8            9           ​10 ​          ​11 ​          12  
 + ​0.178594267 -1.006061037 -1.173929495 -0.173929495 -0.358584799 -0.543240104  
 +          13           ​14 ​          ​15 ​          ​16 ​          ​17 ​          18  
 +-0.576813795 ​ 0.339251976 ​ 0.322465130 -0.895763866 -0.030058633 -0.030058633  
 +          19           ​20 ​          ​21 ​          ​22 ​          ​23 ​          24  
 +-0.030058633 -0.214713937 -0.399369241 ​ 0.667778142 -0.852614079 ​ 0.013091155  
 +          25           ​26 ​          ​27 ​          ​28 ​          ​29 ​          30  
 +-0.154777303 ​ 0.828435851 ​ 0.626993701 ​ 0.391977859 ​ 0.341617322 ​ 0.005880405  
 +>  
 +</​code>​ 
 + 
 +삭제 -- 
 +이 residuals이 DV (종속변인) 설명에 얼마나 기여하는지를 보기 위해서 regression을 하면 stress 고유분의 영향력을 파악할 수 있다. 그런데 partial correlation의 정의에 따르면 partial correlation은 종속변인 또한 bmi의 영향력을 배제한 부분으로 평가를 해야 한다. 이는 위에서 분석했던 lm.happiness.bmi의 residual이 그것이다. 따라서 아래를 구해둔다. 
 + 
 +<​code>​ 
 +res.lm.happiness.bmi <- lm.happiness.bmi$residuals 
 +</​code>​ 
 +-- 삭제 
 + 
 +<​code>​ 
 +lm.happiness.reslmstressbmi <- lm(res.lm.happiness.bmi ~ res.lm.stress.bmi) 
 +summary(lm.happiness.reslmstressbmi) 
 +anova(lm.happiness.reslmstressbmi) 
 +</​code>​ 
 + 
 +<​code>​ 
 +> lm.happiness.reslmstressbmi <- lm(happiness ~ res.lm.stress.bmi) 
 +> summary(lm.happiness.reslmstressbmi) 
 + 
 +Call: 
 +lm(formula = happiness ~ res.lm.stress.bmi) 
 + 
 +Residuals:​ 
 +    Min      1Q  Median ​     3Q     Max  
 +-1.9383 -1.2297 ​ 0.2170 ​ 0.9804 ​ 1.9284  
 + 
 +Coefficients:​ 
 +                  Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) ​        ​2.8333 ​    ​0.2388 ​ 11.865 1.95e-12 *** 
 +res.lm.stress.bmi ​ -0.6781 ​    ​0.4295 ​ -1.579 ​   0.126     
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 1.308 on 28 degrees of freedom 
 +Multiple R-squared: ​ 0.08173,​ Adjusted R-squared: ​ 0.04894  
 +F-statistic:​ 2.492 on 1 and 28 DF,  p-value: 0.1256 
 + 
 +> anova(lm.happiness.reslmstressbmi) 
 +Analysis of Variance Table 
 + 
 +Response: happiness 
 +                  Df Sum Sq Mean Sq F value Pr(>F) 
 +res.lm.stress.bmi ​ 1  4.264  4.2638 ​ 2.4922 0.1256 
 +Residuals ​        28 47.903 ​ 1.7108 ​               
 +>  
 +>  
 +</​code>​ 
 + 
 +<​code>​ 
 +Multiple R-squared: ​ 0.08173,​ Adjusted R-squared: ​ 0.04894  
 +F-statistic:​ 2.492 on 1 and 28 DF,  p-value: 0.1256 
 +</​code>​ 
 + 
 +이제 반대로 bmi 고유의 설명력을 보려면  
 +<​code>​ 
 +lm.bmi.stress <- lm(bmi~stress) 
 +summary(lm.bmi.stress) 
 +anova(lm.bmi.stress) 
 +res.lm.bmi.stress <- lm.bmi.stress$residuals 
 +lm.happiness.reslmbmistress <- lm(happiness ~ res.lm.bmi.stress) 
 +summary(lm.happiness.reslmbmistress) 
 +anova(lm.happiness.reslmbmistress) 
 +</​code>​ 
 + 
 +<​code>​ 
 +> lm.bmi.stress <- lm(bmi~stress) 
 +> summary(lm.bmi.stress) 
 + 
 +Call: 
 +lm(formula = bmi ~ stress) 
 + 
 +Residuals:​ 
 +    Min      1Q  Median ​     3Q     Max  
 +-6.2169 -2.0524 ​ 0.3411 ​ 2.2700 ​ 5.2411  
 + 
 +Coefficients:​ 
 +            Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) ​ 11.8327 ​    ​1.4152 ​  8.361 4.27e-09 *** 
 +stress ​       4.7421 ​    ​0.4536 ​ 10.454 3.58e-11 *** 
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 3.059 on 28 degrees of freedom 
 +Multiple R-squared: ​ 0.796,​ Adjusted R-squared: ​ 0.7888  
 +F-statistic:​ 109.3 on 1 and 28 DF,  p-value: 3.58e-11 
 + 
 +> anova(lm.bmi.stress) 
 +Analysis of Variance Table 
 + 
 +Response: bmi 
 +          Df  Sum Sq Mean Sq F value   ​Pr(>​F) ​    
 +stress ​    1 1022.42 1022.42 ​ 109.29 3.58e-11 *** 
 +Residuals 28  261.95 ​   9.36                      
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 +> res.lm.bmi.stress <- lm.bmi.stress$residuals 
 +> lm.happiness.reslmbmistress <- lm(happiness ~ res.lm.bmi.stress) 
 +> summary(lm.happiness.reslmbmistress) 
 + 
 +Call: 
 +lm(formula = happiness ~ res.lm.bmi.stress) 
 + 
 +Residuals:​ 
 +     ​Min ​      ​1Q ​  ​Median ​      ​3Q ​     Max  
 +-1.97283 -0.94440 ​ 0.05897 ​ 0.97961 ​ 2.29664  
 + 
 +Coefficients:​ 
 +                  Estimate Std. Error t value Pr(>​|t|) ​    
 +(Intercept) ​       2.83333 ​   0.24698 ​ 11.472 4.27e-12 *** 
 +res.lm.bmi.stress -0.05954 ​   0.08358 ​ -0.712 ​   0.482     
 +--- 
 +Signif. codes: ​ 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
 + 
 +Residual standard error: 1.353 on 28 degrees of freedom 
 +Multiple R-squared: ​ 0.0178,​ Adjusted R-squared: ​ -0.01728  
 +F-statistic:​ 0.5074 on 1 and 28 DF,  p-value: 0.4822 
 + 
 +> anova(lm.happiness.reslmbmistress) 
 +Analysis of Variance Table 
 + 
 +Response: happiness 
 +                  Df Sum Sq Mean Sq F value Pr(>F) 
 +res.lm.bmi.stress ​ 1  0.929 0.92851 ​ 0.5074 0.4822 
 +Residuals ​        28 51.238 1.82993 ​     
 +</​code>​ 
 + 
 +<​code>​ 
 +Multiple R-squared: ​ 0.0178,​ Adjusted R-squared: ​ -0.01728  
 +F-statistic:​ 0.5074 on 1 and 28 DF,  p-value: 0.4822 
 +</​code>​ 
 + 
 +stress: 8.1% 
 +bmi: 1.78%  
 +만이 독립변인의 고유영향력이고 이를 제외한  
 +82.17 - (9.88) = 72.29 가 
 +공통영향력이라고 하겠다. 
 + 
 + 
 +====== ​with Two Predictor Variables ======
 data file: {{:​mlt06.sav}} from http://​www.psychstat.missouristate.edu/​multibook/​mlt06.htm \\ data file: {{:​mlt06.sav}} from http://​www.psychstat.missouristate.edu/​multibook/​mlt06.htm \\
  
multiple_regression_examples.1572582164.txt.gz · Last modified: 2019/11/01 13:22 by hkimscil