c:ms:multiple_regression_lecture_note_for_r
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| c:ms:multiple_regression_lecture_note_for_r [2024/09/30 08:55] – [Multiple regression] hkimscil | c:ms:multiple_regression_lecture_note_for_r [2024/09/30 08:56] (current) – [Simple regression] hkimscil | ||
|---|---|---|---|
| Line 152: | Line 152: | ||
| ====== Output ====== | ====== Output ====== | ||
| - | ===== Simple regression ===== | + | ===== Multiple regression ===== |
| + | < | ||
| + | > | ||
| + | > lm.y.x1x2 <- lm(y ~ x1+x2, data=d) | ||
| + | > summary(lm.y.x1x2) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ x1 + x2, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.2173 -0.5779 -0.1515 | ||
| + | |||
| + | Coefficients: | ||
| + | | ||
| + | (Intercept) | ||
| + | x1 | ||
| + | x2 -0.544727 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 0.9301 on 7 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > | ||
| + | > | ||
| + | > lm.y.x1x2$coefficient | ||
| + | (Intercept) | ||
| + | | ||
| + | > # y.hat = 6.399103 + (0.011841)*x1 + (−0.544727)*x2 | ||
| + | > a <- lm.y.x1x2$coefficient[1] | ||
| + | > b1 <- lm.y.x1x2$coefficient[2] | ||
| + | > b2 <- lm.y.x1x2$coefficient[3] | ||
| + | > | ||
| + | > y.pred <- a + (b1 * x1) + (b2 * x2) | ||
| + | > y.pred | ||
| + | | ||
| + | | ||
| + | > y.real <- y | ||
| + | > y.real | ||
| + | | ||
| + | > y.mean <- mean(y) | ||
| + | > y.mean | ||
| + | [1] 8 | ||
| + | > | ||
| + | > res <- y.real - y.pred | ||
| + | > reg <- y.pred - y.mean | ||
| + | > ss.res <- sum(res^2) | ||
| + | > ss.reg <- sum(reg^2) | ||
| + | > | ||
| + | > ss.tot <- var(y) * (length(y)-1) | ||
| + | > ss.tot | ||
| + | [1] 30 | ||
| + | > ss.res | ||
| + | [1] 6.056235 | ||
| + | > ss.reg | ||
| + | [1] 23.94376 | ||
| + | > ss.res+ss.reg | ||
| + | [1] 30 | ||
| + | > | ||
| + | > # slope test | ||
| + | > summary(lm.y.x1x2) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ x1 + x2, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.2173 -0.5779 -0.1515 | ||
| + | |||
| + | Coefficients: | ||
| + | | ||
| + | (Intercept) | ||
| + | x1 | ||
| + | x2 -0.544727 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 0.9301 on 7 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > # note on 2 t-tests | ||
| + | > | ||
| + | > # beta coefficient (standardized b) | ||
| + | > # beta <- b * (sd(x)/ | ||
| + | > beta1 <- b1 * (sd(x1)/ | ||
| + | > beta2 <- b2 * (sd(x2)/ | ||
| + | > beta1 | ||
| + | x1 | ||
| + | 0.616097 | ||
| + | > beta2 | ||
| + | x2 | ||
| + | -0.4458785 | ||
| + | > | ||
| + | > # install.packages(" | ||
| + | > library(lm.beta) | ||
| + | > lm.beta(lm.y.x1x2) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ x1 + x2, data = d) | ||
| + | |||
| + | Standardized Coefficients:: | ||
| + | (Intercept) | ||
| + | | ||
| + | |||
| + | > | ||
| + | > ####################################################### | ||
| + | > # partial correlation coefficient and pr2 | ||
| + | > # x2's explanation? | ||
| + | > lm.tmp.1 <- lm(x2~x1, data=d) | ||
| + | > res.x2.x1 <- lm.tmp.1$residuals | ||
| + | > | ||
| + | > lm.tmp.2 <- lm(y~x1, data=d) | ||
| + | > res.y.x1 <- lm.tmp.2$residuals | ||
| + | > | ||
| + | > lm.tmp.3 <- lm(res.y.x1 ~ res.x2.x1, data=d) | ||
| + | > summary(lm.tmp.3) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = res.y.x1 ~ res.x2.x1, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.2173 -0.5779 -0.1515 | ||
| + | |||
| + | Coefficients: | ||
| + | Estimate Std. Error t value Pr(> | ||
| + | (Intercept) | ||
| + | res.x2.x1 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 0.8701 on 8 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > | ||
| + | > # install.packages(" | ||
| + | > library(ppcor) | ||
| + | > pcor(d) | ||
| + | $estimate | ||
| + | y x1 x2 | ||
| + | y | ||
| + | x1 0.7825112 1.0000000 | ||
| + | x2 -0.6728560 0.3422911 | ||
| + | |||
| + | $p.value | ||
| + | y | ||
| + | y 0.00000000 0.01267595 0.04702022 | ||
| + | x1 0.01267595 0.00000000 0.36723388 | ||
| + | x2 0.04702022 0.36723388 0.00000000 | ||
| + | |||
| + | $statistic | ||
| + | | ||
| + | y | ||
| + | x1 3.325102 0.0000000 | ||
| + | x2 -2.406425 0.9638389 | ||
| + | |||
| + | $n | ||
| + | [1] 10 | ||
| + | |||
| + | $gp | ||
| + | [1] 1 | ||
| + | |||
| + | $method | ||
| + | [1] " | ||
| + | |||
| + | > spcor(d) | ||
| + | $estimate | ||
| + | y x1 x2 | ||
| + | y | ||
| + | x1 0.7171965 1.0000000 | ||
| + | x2 -0.6166940 0.2470028 | ||
| + | |||
| + | $p.value | ||
| + | y | ||
| + | y 0.00000000 0.113182 0.2748117 | ||
| + | x1 0.02964029 0.000000 0.5914441 | ||
| + | x2 0.07691195 0.521696 0.0000000 | ||
| + | |||
| + | $statistic | ||
| + | | ||
| + | y | ||
| + | x1 2.722920 0.0000000 | ||
| + | x2 -2.072679 0.6744045 | ||
| + | |||
| + | $n | ||
| + | [1] 10 | ||
| + | |||
| + | $gp | ||
| + | [1] 1 | ||
| + | |||
| + | $method | ||
| + | [1] " | ||
| + | |||
| + | > partial.r <- pcor.test(y, | ||
| + | > partial.r | ||
| + | | ||
| + | 1 -0.672856 0.04702022 -2.406425 10 1 pearson | ||
| + | > str(partial.r) | ||
| + | ' | ||
| + | $ estimate : num -0.673 | ||
| + | $ p.value | ||
| + | $ statistic: num -2.41 | ||
| + | $ n : int 10 | ||
| + | $ gp : num 1 | ||
| + | $ Method | ||
| + | > partial.r$estimate^2 | ||
| + | [1] 0.4527352 | ||
| + | > | ||
| + | > # x1's own explanation? | ||
| + | > lm.tmp.4 <- lm(x1~x2, data=d) | ||
| + | > res.x1.x2 <- lm.tmp.4$residuals | ||
| + | > | ||
| + | > lm.tmp.5 <- lm(y~x2, data=d) | ||
| + | > res.y.x2 <- lm.tmp.5$residuals | ||
| + | > | ||
| + | > lm.tmp.6 <- lm(res.y.x2 ~ res.x1.x2, data=d) | ||
| + | > summary(lm.tmp.6) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = res.y.x2 ~ res.x1.x2, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.2173 -0.5779 -0.1515 | ||
| + | |||
| + | Coefficients: | ||
| + | | ||
| + | (Intercept) 1.330e-17 | ||
| + | res.x1.x2 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 0.8701 on 8 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > | ||
| + | > partial.r2 <- pcor.test(y, | ||
| + | > str(partial.r2) | ||
| + | ' | ||
| + | $ estimate : num 0.783 | ||
| + | $ p.value | ||
| + | $ statistic: num 3.33 | ||
| + | $ n : int 10 | ||
| + | $ gp : num 1 | ||
| + | $ Method | ||
| + | > partial.r2$estimate^2 | ||
| + | [1] 0.6123238 | ||
| + | > ####################################################### | ||
| + | > | ||
| + | > # semipartial correlation coefficient and spr2 | ||
| + | > # | ||
| + | > spr.1 <- spcor.test(y, | ||
| + | > spr.2 <- spcor.test(y, | ||
| + | > spr.1 | ||
| + | estimate | ||
| + | 1 -0.4086619 0.2748117 -1.184655 10 1 pearson | ||
| + | > spr.2 | ||
| + | | ||
| + | 1 0.5646726 0.113182 | ||
| + | > spr.1$estimate^2 | ||
| + | [1] 0.1670045 | ||
| + | > spr.2$estimate^2 | ||
| + | [1] 0.3188552 | ||
| + | > | ||
| + | > lm.tmp.7 <- lm(y ~ res.x2.x1, data = d) | ||
| + | > summary(lm.tmp.7) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ res.x2.x1, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.8617 -1.1712 -0.4940 | ||
| + | |||
| + | Coefficients: | ||
| + | Estimate Std. Error t value Pr(> | ||
| + | (Intercept) | ||
| + | res.x2.x1 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 1.767 on 8 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > ####################################################### | ||
| + | > | ||
| + | > # get the common area that explain the y variable | ||
| + | > # 1. | ||
| + | > summary(lm.y.x2) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ x2, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.2537 -0.8881 -0.4851 | ||
| + | |||
| + | Coefficients: | ||
| + | Estimate Std. Error t value Pr(> | ||
| + | (Intercept) | ||
| + | x2 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 1.397 on 8 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > all.x2 <- summary(lm.y.x2)$r.squared | ||
| + | > sp.x2 <- spr.1$estimate^2 | ||
| + | > all.x2 | ||
| + | [1] 0.4792703 | ||
| + | > sp.x2 | ||
| + | [1] 0.1670045 | ||
| + | > cma.1 <- all.x2 - sp.x2 | ||
| + | > cma.1 | ||
| + | [1] 0.3122658 | ||
| + | > | ||
| + | > # 2. | ||
| + | > summary(lm.y.x1) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ x1, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.5189 -0.8969 -0.1297 | ||
| + | |||
| + | Coefficients: | ||
| + | Estimate Std. Error t value Pr(> | ||
| + | (Intercept) 3.617781 | ||
| + | x1 0.015269 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 1.176 on 8 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > all.x1 <- summary(lm.y.x1)$r.squared | ||
| + | > sp.x1 <- spr.2$estimate^2 | ||
| + | > all.x1 | ||
| + | [1] 0.631121 | ||
| + | > sp.x1 | ||
| + | [1] 0.3188552 | ||
| + | > cma.2 <- all.x1 - sp.x1 | ||
| + | > cma.2 | ||
| + | [1] 0.3122658 | ||
| + | > | ||
| + | > # OR 3. | ||
| + | > summary(lm.y.x1x2) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = y ~ x1 + x2, data = d) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -1.2173 -0.5779 -0.1515 | ||
| + | |||
| + | Coefficients: | ||
| + | | ||
| + | (Intercept) | ||
| + | x1 | ||
| + | x2 -0.544727 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 0.9301 on 7 degrees of freedom | ||
| + | Multiple R-squared: | ||
| + | F-statistic: | ||
| + | |||
| + | > r2.y.x1x2 <- summary(lm.y.x1x2)$r.square | ||
| + | > r2.y.x1x2 | ||
| + | [1] 0.7981255 | ||
| + | > sp.x1 | ||
| + | [1] 0.3188552 | ||
| + | > sp.x2 | ||
| + | [1] 0.1670045 | ||
| + | > cma.3 <- r2.y.x1x2 - (sp.x1 + sp.x2) | ||
| + | > cma.3 | ||
| + | [1] 0.3122658 | ||
| + | > | ||
| + | > cma.1 | ||
| + | [1] 0.3122658 | ||
| + | > cma.2 | ||
| + | [1] 0.3122658 | ||
| + | > cma.3 | ||
| + | [1] 0.3122658 | ||
| + | > # Note that sorting out unique and common | ||
| + | > # explanation area is only possible with | ||
| + | > # semi-partial correlation determinant | ||
| + | > # NOT partial correlation determinant | ||
| + | > # because only semi-partial correlation | ||
| + | > # shares the same denominator (as total | ||
| + | > # y). | ||
| + | > ############################################# | ||
| + | > | ||
| + | > | ||
| + | > | ||
| + | </ | ||
| + | ====== Simple regression | ||
| < | < | ||
| > # multiple regression: a simple e.g. | > # multiple regression: a simple e.g. | ||
c/ms/multiple_regression_lecture_note_for_r.1727654146.txt.gz · Last modified: by hkimscil
