multiple_regression_examples
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
multiple_regression_examples [2019/11/01 13:17] – [Backward elimination] hkimscil | multiple_regression_examples [2023/10/21 13:26] (current) – 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 ===== | ||
+ | 이를 위해서 아래를 계획, 수행해본다. | ||
+ | |||
+ | - 각각의 독립변인이 고유하게 미치는 영향력은 (설명력은) 무엇인지를 본다. | ||
+ | - 공통설명력은 얼마나 되는지 본다. | ||
+ | |||
+ | - 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 | ||
+ | > | ||
+ | </ | ||
+ | 즉, '' | ||
+ | |||
+ | 이를 파티션을 하면서 직접 살펴보려면 | ||
+ | * 우선 $\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 그 자체이다. | ||
+ | |||
+ | < | ||
+ | m.bmi <- lm(bmi ~ stress) | ||
+ | mod <- lm(happiness ~ resid(m.bmi)) | ||
+ | summary(mod) | ||
+ | </ | ||
+ | < | ||
+ | > m.bmi <- lm(bmi ~ stress) | ||
+ | > mod <- lm(happiness ~ resid(m.bmi)) | ||
+ | > summary(mod) | ||
+ | |||
+ | Call: | ||
+ | lm(formula = happiness ~ resid(m.bmi)) | ||
+ | |||
+ | Residuals: | ||
+ | | ||
+ | -1.97283 -0.94440 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | (Intercept) | ||
+ | resid(m.bmi) -0.05954 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 1.353 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | </ | ||
+ | |||
+ | 위의 분석에서 R-square 값인 0.0178 이 bmi의 고유의 설명력이다. r값은 sqrt(0.0178)이다. 그리고, 위의 모델은 significant하지 않음을 주목한다. | ||
+ | |||
+ | 다음으로 $\frac {d}{a+b+c+d}$을 구해서 stress 고유설명력을 본다. 이제는 | ||
+ | < | ||
+ | m.stress <- lm(stress ~ bmi) | ||
+ | mod2 <- lm(happiness ~ resid(m.stress)) | ||
+ | sumary(mod2) | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | > m.stress <- lm(stress ~ bmi) | ||
+ | > mod2 <- lm(happiness ~ resid(m.stress)) | ||
+ | > summary(mod2) | ||
+ | |||
+ | Call: | ||
+ | lm(formula = happiness ~ resid(m.stress)) | ||
+ | |||
+ | Residuals: | ||
+ | Min 1Q Median | ||
+ | -1.9383 -1.2297 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error t value Pr(> | ||
+ | (Intercept) | ||
+ | resid(m.stress) | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | Residual standard error: 1.308 on 28 degrees of freedom | ||
+ | Multiple R-squared: | ||
+ | F-statistic: | ||
+ | |||
+ | > | ||
+ | </ | ||
+ | Multiple R-squared 인 0.08173 이 고유 설명력이고, | ||
+ | 0.08173 값과 0.0178을 더한 값을 제외한 lm(happiness~bmi+stress) 에서의 R-squared 값이 공통설명력이 된다. 아래의 분석 결과에서 Multiple R-squared: | ||
+ | |||
+ | < | ||
+ | m.both <- lm(happiness~bmi+stress) | ||
+ | summary(m.both) | ||
+ | </ | ||
+ | < | ||
+ | > m.both <- lm(happiness~bmi+stress) | ||
+ | > summary(m.both) | ||
+ | |||
+ | Call: | ||
+ | lm(formula = happiness ~ bmi + stress) | ||
+ | |||
+ | 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: | ||
+ | </ | ||
+ | |||
+ | 이 값은 0.72217 이다. | ||
+ | < | ||
+ | > 0.8217- (0.08173 + 0.0178) | ||
+ | [1] 0.72217 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | bmi나 stress 중 하나를 IV로 취하는 것이 좋다는 결론을 내린다. | ||
+ | |||
+ | |||
+ | ====== | ||
data file: {{: | data file: {{: | ||
Line 1190: | Line 1546: | ||
<WRAP group> | <WRAP group> | ||
<WRAP half column> | <WRAP half column> | ||
- | < | + | < |
- | + | | |
- | cf. | + | |
- | < | + | |
- | lm.fit.01 <- lm(Sales ~ CompPrice + Income + Advertising + Price + ShelveLoc + Age, data = Carseats) | + | |
+ | 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) | ||
Line 1231: | Line 1591: | ||
<WRAP half column> | <WRAP half column> | ||
+ | < | ||
lm.fit.01 <- lm(formula = Sales ~ | lm.fit.01 <- lm(formula = Sales ~ | ||
| | ||
Line 1237: | Line 1598: | ||
data = Carseats) | data = Carseats) | ||
summary(lm.fit.01) | summary(lm.fit.01) | ||
+ | </ | ||
+ | |||
+ | < | ||
> lm.fit.01 <- lm(formula = Sales ~ CompPrice + | > lm.fit.01 <- lm(formula = Sales ~ CompPrice + | ||
| | ||
Line 1266: | Line 1630: | ||
Multiple R-squared: | Multiple R-squared: | ||
F-statistic: | F-statistic: | ||
+ | |||
+ | </ | ||
</ | </ | ||
</ | </ |
multiple_regression_examples.txt · Last modified: 2023/10/21 13:26 by hkimscil