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
Last revisionBoth sides next revision
multiple_regression_examples [2019/11/01 13:22] – [Backward elimination] hkimscilmultiple_regression_examples [2020/12/01 17:22] – [각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다] 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) 순수기여분만을 살펴본다고 이야기 한다.  
 + 
 +이를 위해서 아래를 계획, 수행해본다.  
 + 
 +  - 각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다.  
 +  - 공통설명력은 얼마나 되는지 본다. 
 + 
 +  - 1을 위해서는 각 독립변인과 종속변인인 happiness의 semi-partial correlation값을 구해서 제곱해보면 되겠다.  
 +  - 2를 위해서는 두 독립변인을 써서 구했던 r 제곱값에서 위의 1에서 구한 제곱값들을 제외한 나머지를 보면 된겠다.  
 + 
 +  * 결론을 내기 위한 계획을 세우고 실행한다.  
 +  * 이는 아래와 같이 정리할 수 있다 
 + 
 +{{:pasted:20201201-170048.png}} 
 + 
 +===== 각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다 ===== 
 +<code> 
 +> spcor(d.yyk) 
 +$estimate 
 +                 bmi     stress  happiness 
 +bmi        1.0000000  0.2730799 -0.1360657 
 +stress     0.2371411  1.0000000 -0.2532032 
 +happiness -0.1334127 -0.2858909  1.0000000 
 + 
 +$p.value 
 +                bmi    stress happiness 
 +bmi       0.0000000 0.1517715 0.4815643 
 +stress    0.2154821 0.0000000 0.1850784 
 +happiness 0.4902316 0.1327284 0.0000000 
 + 
 +$statistic 
 +                 bmi    stress  happiness 
 +bmi        0.0000000  1.475028 -0.7136552 
 +stress     1.2684024  0.000000 -1.3600004 
 +happiness -0.6994855 -1.550236  0.0000000 
 + 
 +$n 
 +[1] 30 
 + 
 +$gp 
 +[1] 1 
 + 
 +$method 
 +[1] "pearson" 
 + 
 +>  
 +>  
 +</code> 
 +happiness에 영향을 주는 변인을 보는 것이므로  
 +<code> 
 +                 bmi    stress 
 +happiness -0.1334127 -0.2858909   
 +</code> 
 +를 본다. 그리고 이 값의 제곱값이 각 독립변인의 고유 설명력이다.  
 +<code> 
 +> (-0.1334127)^2  
 +[1] 0.01779895 
 +> (-0.2858909)^2 
 +[1] 0.08173361 
 +>  
 +</code> 
 +즉, '' stress: 8.1% '' 와 '' bmi: 1.78% '' 만이 독립변인의 고유영향력이고 이를 제외한 '' 82.17 - (9.88) = 72.29 '' 가 공통영향력이라고 하겠다. 
 + 
 +이를 파티션을 하면서 직접 살펴보려면  
 +  * 우선 $\frac{b}{a+b+c+d}$ 를 보려고 한다.  
 +  * 그림에서 m.bmi <- lm((a+b+c+d)~(b+e)) 와 같이 한후에 r제곱값을 보고, sqrt 하면 r값을 알 수 있다.  
 +  * b+e를 구하려면 lm(bmi~stress)를 한후, 그 residual을 보면 된다. 
 +  * a+b+c+d 는 happiness 그 자체이다.  
 + 
 +<code> 
 +m.bmi <- lm(bmi ~ stress) 
 +mod <- lm(happiness ~ resid(m.bmi)) 
 +summary(mod) 
 +</code> 
 +<code> 
 +> m.bmi <- lm(bmi ~ stress) 
 +> mod <- lm(happiness ~ resid(m.bmi)) 
 +> summary(mod) 
 + 
 +Call: 
 +lm(formula = happiness ~ resid(m.bmi)) 
 + 
 +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 *** 
 +resid(m.bmi) -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 
 +</code> 
 + 
 +위의 분석에서 R-square 값인 0.0178 이 bmi의 고유의 설명력이다. r값은 sqrt(0.0178)이다. 그리고, 위의 모델은 significant하지 않음을 주목한다.  
 + 
 +다음으로 $\frac {d}{a+b+c+d}$을 구해서 stress 고유설명력을 본다. 이제는  
 +<code> 
 +m.stress <- lm(stress ~ bmi) 
 +mod2 <- lm(happiness ~ resid(m.stress)) 
 +sumary(mod2) 
 +</code> 
 + 
 +<code> 
 +> m.stress <- lm(stress ~ bmi) 
 +> mod2 <- lm(happiness ~ resid(m.stress)) 
 +> summary(mod2) 
 + 
 +Call: 
 +lm(formula = happiness ~ resid(m.stress)) 
 + 
 +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 *** 
 +resid(m.stress)  -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 
 + 
 +>  
 +</code> 
 +Multiple R-squared 인 0.08173 이 고유 설명력이고, 이 또한 significant 하지 않다.  
 +0.08173 값과 0.0178을 더한 값을 제외한 lm(happiness~bmi+stress) 에서의 R-squared 값이 공통설명력이 된다. 아래의 분석 결과에서 Multiple R-squared:  0.8217 이 두 변인을 모두 합한 설명력이다.  
 + 
 +<code> 
 +m.both <- lm(happiness~bmi+stress) 
 +summary(m.both) 
 +</code> 
 +<code> 
 +> m.both <- lm(happiness~bmi+stress) 
 +> summary(m.both) 
 + 
 +Call: 
 +lm(formula = happiness ~ bmi + stress) 
 + 
 +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 
 +</code> 
 + 
 +이 값은 0.72217 이다.  
 +<code> 
 +> 0.8217- (0.08173 + 0.0178) 
 +[1] 0.72217 
 +>  
 +</code> 
 + 
 +bmi나 stress 중 하나를 IV로 취하는 것이 좋다는 결론을 내린다. 
 + 
 + 
 +====== 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.txt · Last modified: 2023/10/21 13:26 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki