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 revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
multiple_regression_examples [2019/11/01 13:20] – [Backward elimination] hkimscilmultiple_regression_examples [2020/07/06 15:04] – [E.g. 1] hkimscil
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      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 
 +                      2            3            4            5            6  
 + 0.866854946  0.833281255 -0.351374050  0.665412796  0.463970646  0.245741650  
 +                      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 고유분의 영향력을 파악할 수 있다.  
 + 
 +<code> 
 +lm.happiness.reslmstressbmi <- lm(happiness ~ 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 \\
  
Line 1190: Line 1564:
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
-<code>lm.fit.be <- lm(Sales ~ CompPrice +  +<code>lm.fit.be <- lm(Sales ~  
-            Income + Advertising + Price + +            CompPrice + Income +  
 +            Advertising + Price + 
             ShelveLoc + Age, data = Carseats)             ShelveLoc + Age, data = Carseats)
 +            
 summary(lm.fit.be) summary(lm.fit.be)
 </code> </code>
  
 <code> <code>
-> lm.fit.be <- lm(Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + Age, data = Carseats)+> lm.fit.be <- lm(Sales ~ CompPrice +  
 +        Income + Advertising +  
 +        Price + ShelveLoc +  
 +        Age, data = Carseats)
 > summary(lm.fit.be) > summary(lm.fit.be)
  
multiple_regression_examples.txt · Last modified: 2023/10/21 13:26 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki