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:11] – [Backward elimination] hkimscil | multiple_regression_examples [2020/12/01 17:05] – [각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다] 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와 공통으로 기여하는 부분을 제외한 나머지는 얼마일까? | ||
+ | |||
+ | 이를 위해서 아래를 계획, 수행해본다. | ||
+ | |||
+ | - 각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다. | ||
+ | - 공통설명력은 얼마나 되는지 본다. | ||
+ | |||
+ | - 1을 위해서는 각 독립변인과 종속변인인 happiness의 semi-partial correlation값을 구해서 제곱해보면 되겠다. | ||
+ | - 2를 위해서는 두 독립변인을 써서 구했던 r 제곱값에서 위의 1에서 구한 제곱값들을 제외한 나머지를 보면 된겠다. | ||
+ | |||
+ | * 결론을 내기 위한 계획을 세우고 실행한다. | ||
+ | * 이는 아래와 같이 정리할 수 있다 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== 각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다 ===== | ||
+ | < | ||
+ | > spcor(d.yyk) | ||
+ | $estimate | ||
+ | | ||
+ | bmi 1.0000000 | ||
+ | stress | ||
+ | happiness -0.1334127 -0.2858909 | ||
+ | |||
+ | $p.value | ||
+ | bmi stress happiness | ||
+ | bmi | ||
+ | stress | ||
+ | happiness 0.4902316 0.1327284 0.0000000 | ||
+ | |||
+ | $statistic | ||
+ | | ||
+ | bmi 0.0000000 | ||
+ | stress | ||
+ | happiness -0.6994855 -1.550236 | ||
+ | |||
+ | $n | ||
+ | [1] 30 | ||
+ | |||
+ | $gp | ||
+ | [1] 1 | ||
+ | |||
+ | $method | ||
+ | [1] " | ||
+ | |||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | happiness에 영향을 주는 변인을 보는 것이므로 | ||
+ | < | ||
+ | | ||
+ | happiness -0.1334127 -0.2858909 | ||
+ | </ | ||
+ | 를 본다. 그리고 이 값의 제곱값이 각 독립변인의 고유 설명력이다. | ||
+ | < | ||
+ | > (-0.1334127)^2 | ||
+ | [1] 0.01779895 | ||
+ | > (-0.2858909)^2 | ||
+ | [1] 0.08173361 | ||
+ | > | ||
+ | </ | ||
+ | 즉, '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== | ||
data file: {{: | data file: {{: | ||
Line 1140: | Line 1388: | ||
< | < | ||
- | drop1(update(lm.full, | + | drop1(update(lm.full, |
</ | </ | ||
< | < | ||
- | > drop1(update(lm.full, | + | > drop1(update(lm.full, |
Single term deletions | Single term deletions | ||
Model: | Model: | ||
Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + | Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + | ||
- | | + | |
- | Df Sum of Sq | + | Df Sum of Sq |
- | < | + | < |
- | CompPrice | + | CompPrice |
- | Income | + | Income |
- | Advertising | + | Advertising |
- | Price 1 1269.23 1891.14 637.39 797.9785 < 2.2e-16 *** | + | Price 1 1322.83 1728.58 601.44 1274.7123 <2e-16 *** |
- | ShelveLoc | + | ShelveLoc |
- | Education | + | Age |
- | US | + | US |
--- | --- | ||
Signif. codes: | Signif. codes: | ||
> | > | ||
- | > </ | + | </ |
< | < | ||
- | drop1(update(lm.full, | + | drop1(update(lm.full, |
</ | </ | ||
- | < | + | < |
+ | > drop1(update(lm.full, | ||
Single term deletions | Single term deletions | ||
Model: | Model: | ||
Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + | Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + | ||
- | | + | |
Df Sum of Sq | Df Sum of Sq | ||
- | < | + | < |
- | CompPrice | + | CompPrice |
- | Income | + | Income |
- | Advertising | + | Advertising |
- | Price 1 1269.21 1892.94 635.77 797.6724 < 2.2e-16 *** | + | Price 1 1324.42 1731.81 600.18 1274.400 < 2.2e-16 *** |
- | ShelveLoc | + | ShelveLoc |
- | US 1 2.78 | + | Age |
--- | --- | ||
Signif. codes: | Signif. codes: | ||
> </ | > </ | ||
- | < | ||
- | <code>> | + | <WRAP group> |
- | Single term deletions | + | <WRAP half column> |
+ | <code>lm.fit.be <- lm(Sales ~ | ||
+ | CompPrice + Income + | ||
+ | Advertising + Price + | ||
+ | ShelveLoc + Age, data = Carseats) | ||
+ | |||
+ | summary(lm.fit.be) | ||
+ | </ | ||
- | Model: | + | < |
- | Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc | + | > lm.fit.be <- lm(Sales ~ CompPrice + |
- | Df Sum of Sq | + | Income + Advertising + |
- | < | + | Price + ShelveLoc + |
- | CompPrice | + | Age, data = Carseats) |
- | Income | + | > summary(lm.fit.be) |
- | Advertising | + | |
- | Price | + | Call: |
- | ShelveLoc | + | lm(formula = Sales ~ CompPrice + Income + Advertising + Price + |
+ | | ||
+ | |||
+ | Residuals: | ||
+ | | ||
+ | -2.7728 -0.6954 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | (Intercept) | ||
+ | CompPrice | ||
+ | Income | ||
+ | Advertising | ||
+ | Price -0.095319 | ||
+ | ShelveLocGood | ||
+ | ShelveLocMedium | ||
+ | Age -0.046128 | ||
--- | --- | ||
Signif. codes: | Signif. codes: | ||
- | > | ||
- | > </ | ||
- | < | + | Residual standard error: 1.019 on 392 degrees of freedom |
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
- | cf. | + | > |
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP half column> | ||
< | < | ||
- | lm.fit.01 <- lm(Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + Age, data = Carseats) | + | lm.fit.01 <- lm(formula = Sales ~ |
+ | CompPrice + Income + | ||
+ | Advertising + Price + | ||
+ | ShelveLoc + Age, | ||
+ | data = Carseats) | ||
+ | summary(lm.fit.01) | ||
</ | </ | ||
< | < | ||
- | > lm.fit.be <- lm(Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc, data=Carseats) | + | > lm.fit.01 <- lm(formula = Sales ~ CompPrice + |
- | > summary(lm.fit.be) | + | Income + Advertising + Price + |
+ | ShelveLoc | ||
+ | > summary(lm.fit.01) | ||
Call: | Call: | ||
lm(formula = Sales ~ CompPrice + Income + Advertising + Price + | lm(formula = Sales ~ CompPrice + Income + Advertising + Price + | ||
- | ShelveLoc, data = Carseats) | + | ShelveLoc |
Residuals: | Residuals: | ||
Min 1Q Median | Min 1Q Median | ||
- | -3.7962 -0.9251 0.0043 0.8457 4.4179 | + | -2.7728 -0.6954 0.0282 0.6732 3.3292 |
Coefficients: | Coefficients: | ||
| | ||
- | (Intercept) | + | (Intercept) |
- | CompPrice | + | CompPrice |
- | Income | + | Income |
- | Advertising | + | Advertising |
- | Price -0.093241 | + | Price -0.095319 |
- | ShelveLocGood | + | ShelveLocGood |
- | ShelveLocMedium | + | ShelveLocMedium |
+ | Age | ||
--- | --- | ||
Signif. codes: | Signif. codes: | ||
- | Residual standard error: 1.263 on 393 degrees of freedom | + | Residual standard error: 1.019 on 392 degrees of freedom |
- | Multiple R-squared: | + | Multiple R-squared: |
- | F-statistic: | + | F-statistic: |
- | > | ||
</ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ |
multiple_regression_examples.txt · Last modified: 2023/10/21 13:26 by hkimscil