multiple_regression_examples
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
multiple_regression_examples [2019/11/01 13:20] – [Backward elimination] hkimscil | multiple_regression_examples [2020/07/06 15:04] – [E.g. 1] hkimscil | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Multiple Regression with Two Predictor Variables ====== | + | ====== Multiple Regression |
+ | ====== E.g. 1 ====== | ||
+ | {{: | ||
+ | < | ||
+ | d.yyk <- read.csv(" | ||
+ | d.yyk | ||
+ | d.yyk <- subset(d.yyk, | ||
+ | d.yyk | ||
+ | </ | ||
+ | < | ||
+ | > d.yyk <- subset(d.yyk, | ||
+ | > 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 | ||
+ | </ | ||
+ | 우선 여기에서 종속변인인 (dv) happiness에 bmi와 stress를 리그레션 해본다. | ||
+ | < | ||
+ | attach(d.yyk) | ||
+ | lm.happiness.bmistress <- lm(happiness ~ bmi + stress, data=d.yyk) | ||
+ | summary(lm.happiness.bmistress) | ||
+ | anova(lm.happiness.bmistress) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > 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: | ||
+ | | ||
+ | -0.89293 -0.40909 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | bmi | ||
+ | stress | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 0.5869 on 27 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | > | ||
+ | > | ||
+ | > anova(lm.happiness.bmistress) | ||
+ | Analysis of Variance Table | ||
+ | |||
+ | Response: happiness | ||
+ | Df Sum Sq Mean Sq F value Pr(> | ||
+ | bmi 1 38.603 | ||
+ | stress | ||
+ | Residuals 27 9.300 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | > | ||
+ | |||
+ | </ | ||
+ | |||
+ | 위의 분석을 보면 | ||
+ | R< | ||
+ | |||
+ | 그러나, coefficient 값을 보면 bmi는 significant 하지 않고, stress는 significant하다. 이는 R제곱에 영향을 주는 것으로 stress가 주이고 bmi의 영향력은 미미하다고 하다는 결론을 내리도록 해준다. 그러나, [[:multiple regression]]에서 언급한 것처럼 독립변인이 두 개 이상일 때에는 무엇이 얼마나 종속변인에 영향을 주는지 그림을 그릴 수 있어야 하므로, 아래와 같이 bmi만을 가지고 regression을 다시 해본다. | ||
+ | |||
+ | < | ||
+ | lm.happiness.bmi <- lm(happiness ~ bmi, data=d.yyk) | ||
+ | summary(lm.happiness.bmi) | ||
+ | anova(lm.happiness.bmi) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > lm.happiness.bmi <- lm(happiness ~ bmi, data=d.yyk) | ||
+ | > | ||
+ | > summary(lm.happiness.bmi) | ||
+ | |||
+ | Call: | ||
+ | lm(formula = happiness ~ bmi, data = d.yyk) | ||
+ | |||
+ | Residuals: | ||
+ | | ||
+ | -1.20754 -0.49871 -0.03181 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | bmi | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 0.696 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | |||
+ | > anova(lm.happiness.bmi) | ||
+ | Analysis of Variance Table | ||
+ | |||
+ | Response: happiness | ||
+ | Df Sum Sq Mean Sq F value Pr(> | ||
+ | bmi 1 38.603 | ||
+ | Residuals 28 13.564 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | > | ||
+ | </ | ||
+ | 놀랍게도 bmi 하나만을 가지고 regression을 했더니, R제곱 값이 .74이었다 (F(1,28) = 79.69, p = 1.109e-09). 이런 결과가 나올 수 있는 이유는 독립변인인 bmi와 stress 간의 상관관계가 높아서 처음 분석에서 그 영향력을 (설명력, R제곱에 기여하는 부분을) 하나의 독립변인이 모두 가졌갔기 때문이라고 생각할 수 있다. 이 경우에는 그 독립변인이 stress이다. | ||
+ | |||
+ | happiness에 stress 만을 regression 해본 결과는 아래와 같다. | ||
+ | |||
+ | < | ||
+ | lm.happiness.stress <- lm(happiness ~ stress, data = d.yyk) | ||
+ | summary(lm.happiness.stress) | ||
+ | anova(lm.happiness.stress) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > 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 | ||
+ | -0.7449 -0.6657 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | stress | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 0.6044 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | |||
+ | > anova(lm.happiness.stress) | ||
+ | Analysis of Variance Table | ||
+ | |||
+ | Response: happiness | ||
+ | Df Sum Sq Mean Sq F value Pr(> | ||
+ | stress | ||
+ | Residuals 28 10.229 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | R제곱값은 0.80로 (F(1, 28) = 114.8, 2.053e-11) 스트레스만으로도 significant한 결과를 갖는다. | ||
+ | |||
+ | 그렇다면 stress 와 bmi가 공통으로 기여하는 부분을 뺀 순수 기여분은 어떻게 될까? 즉, 위의 .80 부분 중 bmi와 공통으로 기여하는 부분을 제외한 나머지는 얼마일까? | ||
+ | |||
+ | 이를 위해서 아래를 계획, 수행해본다. | ||
+ | |||
+ | - 독립변인 간의 regression을 수행한다 | ||
+ | * stress의 순수영향력을 보기 위한 것이므로 bmi와의 상관관계 제곱값, 즉, R제곱 값을 구한다 | ||
+ | * '' | ||
+ | - 위의 R제곱기여 분의 나머지를 가지고 종속변인인 happiness에 regression한다. | ||
+ | |||
+ | < | ||
+ | lm.stress.bmi <- lm(stress ~ bmi) | ||
+ | summary(lm.stress.bmi) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > lm.stress.bmi <- lm(stress ~ bmi) | ||
+ | > summary(lm.stress.bmi) | ||
+ | |||
+ | Call: | ||
+ | lm(formula = stress ~ bmi) | ||
+ | |||
+ | Residuals: | ||
+ | | ||
+ | -1.17393 -0.35678 -0.01209 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) -1.40167 | ||
+ | bmi 0.16787 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 0.5755 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | 위의 아웃풋에서 우리는 bmi와 stress간의 상관관계는 sqrt(0.796)임을 알 수 있고, stress 총 분산 중, R제곱 값인 .796 (약 80%)를 bmi가 설명하고 있다고 하겠다. 여기서 아래의 코드를 이용하여 residual을 알아볼 수 있다. | ||
+ | |||
+ | < | ||
+ | res.lm.stress.bmi <- lm.stress.bmi$residuals | ||
+ | res.lm.stress.bmi | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > res.lm.stress.bmi <- lm.stress.bmi$residuals | ||
+ | > res.lm.stress.bmi | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 13 | ||
+ | -0.576813795 | ||
+ | 19 | ||
+ | -0.030058633 -0.214713937 -0.399369241 | ||
+ | 25 | ||
+ | -0.154777303 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | 이 residuals이 DV (종속변인) 설명에 얼마나 기여하는지를 보기 위해서 regression을 하면 stress 고유분의 영향력을 파악할 수 있다. | ||
+ | |||
+ | < | ||
+ | lm.happiness.reslmstressbmi <- lm(happiness ~ res.lm.stress.bmi) | ||
+ | summary(lm.happiness.reslmstressbmi) | ||
+ | anova(lm.happiness.reslmstressbmi) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > 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 | ||
+ | -1.9383 -1.2297 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | res.lm.stress.bmi | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 1.308 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | |||
+ | > anova(lm.happiness.reslmstressbmi) | ||
+ | Analysis of Variance Table | ||
+ | |||
+ | Response: happiness | ||
+ | Df Sum Sq Mean Sq F value Pr(>F) | ||
+ | res.lm.stress.bmi | ||
+ | Residuals | ||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | </ | ||
+ | |||
+ | 이제 반대로 bmi 고유의 설명력을 보려면 | ||
+ | < | ||
+ | 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) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > lm.bmi.stress <- lm(bmi~stress) | ||
+ | > summary(lm.bmi.stress) | ||
+ | |||
+ | Call: | ||
+ | lm(formula = bmi ~ stress) | ||
+ | |||
+ | Residuals: | ||
+ | Min 1Q Median | ||
+ | -6.2169 -2.0524 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | stress | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 3.059 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | |||
+ | > anova(lm.bmi.stress) | ||
+ | Analysis of Variance Table | ||
+ | |||
+ | Response: bmi | ||
+ | Df Sum Sq Mean Sq F value | ||
+ | stress | ||
+ | Residuals 28 261.95 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | > 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: | ||
+ | | ||
+ | -1.97283 -0.94440 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | res.lm.bmi.stress -0.05954 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 1.353 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | |||
+ | > anova(lm.happiness.reslmbmistress) | ||
+ | Analysis of Variance Table | ||
+ | |||
+ | Response: happiness | ||
+ | Df Sum Sq Mean Sq F value Pr(>F) | ||
+ | res.lm.bmi.stress | ||
+ | Residuals | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | </ | ||
+ | |||
+ | stress: 8.1% | ||
+ | bmi: 1.78% | ||
+ | 만이 독립변인의 고유영향력이고 이를 제외한 | ||
+ | 82.17 - (9.88) = 72.29 가 | ||
+ | 공통영향력이라고 하겠다. | ||
+ | |||
+ | |||
+ | ====== | ||
data file: {{: | data file: {{: | ||
Line 1190: | Line 1564: | ||
<WRAP group> | <WRAP group> | ||
<WRAP half column> | <WRAP half column> | ||
- | < | + | < |
- | Income + Advertising + Price + | + | |
+ | | ||
ShelveLoc + Age, data = Carseats) | ShelveLoc + Age, data = Carseats) | ||
+ | | ||
summary(lm.fit.be) | summary(lm.fit.be) | ||
</ | </ | ||
< | < | ||
- | > lm.fit.be <- lm(Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + Age, data = Carseats) | + | > lm.fit.be <- lm(Sales ~ CompPrice + |
+ | | ||
+ | | ||
+ | | ||
> summary(lm.fit.be) | > summary(lm.fit.be) | ||
multiple_regression_examples.txt · Last modified: 2023/10/21 13:26 by hkimscil