multiple_regression_exercise
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
multiple_regression_exercise [2021/11/18 17:41] – [추가설명] hkimscil | multiple_regression_exercise [2023/11/27 10:24] – removed hkimscil | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Discussion ====== | ||
- | ===== Ex. 1 ===== | ||
- | * Install packages ISLR | ||
- | * use a dataset, Carseats | ||
- | * Build regression models with a DV, sales and IVs, your choices | ||
- | * Use ''? | ||
- | * Use '' | ||
- | * 변인설명을 토대로 가설만들기 | ||
- | * 종속변인 = Sales | ||
- | * 독립변인 = 숫자변인 1 + 종류변인 1 (조별 선택) | ||
- | * Multiple regression without interactin | ||
- | * Multiple regression with interaction | ||
- | * 가설 만들기 | ||
- | * 종속변인 Sales | ||
- | * 독립변인 여러개 (interaction 없이) | ||
- | * Modeling 해 볼 것 | ||
- | |||
- | see [[: | ||
- | see also [[: | ||
- | |||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | |||
- | < | ||
- | |||
- | [[./ | ||
- | |||
- | ===== Ex. 2 ===== | ||
- | * Install packages tidyverse | ||
- | * load the tidyverse | ||
- | * '' | ||
- | * '' | ||
- | * load the car and the carData | ||
- | * '' | ||
- | * '' | ||
- | * explain what it is | ||
- | * describe the data set | ||
- | ---- | ||
- | * Regress sex variable on salary variable | ||
- | * Write the regression model | ||
- | * Discuss the difference male and female (sex) | ||
- | |||
- | * Use rank variable for the same purpose | ||
- | * Write the regression model | ||
- | |||
- | * Regress rank + sex on salary | ||
- | * How do you interpret the result? | ||
- | * And regress rank + sex + rank:sex on salary | ||
- | * How do you interpret this result? | ||
- | * Do factorial ANOVA test with rank and sex on salary | ||
- | * How do you interpret the result? | ||
- | |||
- | * Test regression model of your own choice | ||
- | * Interpret the result | ||
- | |||
- | ----- | ||
- | 위의 Salaries 데이터사용이 안 될 때 | ||
- | * download to R from here {{: | ||
- | * use to import the data set. '' | ||
- | * for information about Salaries (it may not be loaded), | ||
- | * use '' | ||
- | ----- | ||
- | Please copy and paste the proper r command and output to a txt file (use notepad or some other text editing program). You could use MS Word, but, please make it sure that you use type-setting fonts such as " | ||
- | |||
- | |||
- | ====== Discussion 1 ====== | ||
- | 종속변인으로 salary 를 두고 소윤석 학생은 아래를 수행하였습니다. | ||
- | |||
- | < | ||
- | > | ||
- | > lm.sex <- lm(salary ~ sex, data = Salaries) | ||
- | > summary(lm.sex) | ||
- | |||
- | Call: | ||
- | lm(formula = salary ~ sex, data = Salaries) | ||
- | |||
- | Residuals: | ||
- | | ||
- | -57290 -23502 | ||
- | |||
- | Coefficients: | ||
- | Estimate Std. Error t value Pr(> | ||
- | (Intercept) | ||
- | sexMale | ||
- | --- | ||
- | Signif. codes: | ||
- | |||
- | Residual standard error: 30030 on 395 degrees of freedom | ||
- | Multiple R-squared: | ||
- | F-statistic: | ||
- | </ | ||
- | |||
- | 윤석학생은 테스트 결과를 보고 교수의 salary에 대한 sex의 설명력이 약 1.9% 이며, 이 때의 F-test 값은 F(1, 395) = 7.738, p < 0.005667 이었다고 기록 한 후, 이에 따라서 교수들의 salary에 대해 sex는 통계학적으로 유의미한 (significant) 기여를 한다고 판단하였습니다. 특히 | ||
- | |||
- | 윤석학생은 여기에 더하여 다른 독립변인님 rank를 추가해 보기로 하였습니다. 결과는 아래와 같았습니다. | ||
- | |||
- | < | ||
- | > lm.sexRank <- lm(salary ~ sex + rank, data = Salaries) | ||
- | > summary(lm.sexRank) | ||
- | |||
- | Call: | ||
- | lm(formula = salary ~ sex + rank, data = Salaries) | ||
- | |||
- | Residuals: | ||
- | | ||
- | -69307 -15757 | ||
- | |||
- | Coefficients: | ||
- | Estimate Std. Error t value Pr(> | ||
- | (Intercept) | ||
- | sexMale | ||
- | rankAssocProf | ||
- | rankProf | ||
- | --- | ||
- | Signif. codes: | ||
- | |||
- | Residual standard error: 23620 on 393 degrees of freedom | ||
- | Multiple R-squared: | ||
- | F-statistic: | ||
- | |||
- | </ | ||
- | |||
- | 윤석학생은 이 결과를 보고 즉시, R 제곱값이 39.66% 가 되었음을 보고 고무되었습니다. 두 독립변인의 설명력이 (둘을 합쳐) 39.66% 인 것은 이전의 sex만의 1.9%인가 되는 설명력에 비해 상당히 많아진 결과입니다. 당연히 이 모델은 (테스트 결과는) 통계학적으로 유의미하였습니다 (F(3, 393) = 86.09, p < 0.0001). | ||
- | |||
- | 그러나, 윤석학생은 이전에 독립적으로 사용하였던 sex의 설명력이 사라진 것을 알게 되었습니다 (p 0.22029). 윤석학생은 그러나, 이전의 결과에 비추어 어떻게 이 결과를 어떻게 해석해야 할 지 막막하다는 생각을 합니다. 만약에 두 번째 분석만을 했었더라면 sex 변인은 미국 교수들의 salary를 설명하는데에 큰 기여를 하지 않는다고 판단을 하겠지만, | ||
- | |||
- | ====== Discussion 2 ====== | ||
- | Carseats 데이터에 대한 것이다. Sales 를 dependent variable 로 하고 데이터 내의 다른 변인을 IV로 한다고 생각할 때, 어떤 것을 포함 시켜야 Carseats 판매를 가장 잘 설명하는 것이 될까? (Carseats sale을 가장 잘 설명하는 모델) | ||
- | |||
- | cor | ||
- | spcor | ||
- | pcor | ||
- | |||
- | 영향력 가장 큰 순서 . . . . | ||
- | |||
- | 독립변인 성격에 따라서 독립변인을 묶어서 (sequential) | ||
- | |||
- | ---- | ||
- | ===== 예 ===== | ||
- | * 우선 str(Carseats) 를 이용해서 데이터를 살펴보면 11개의 변인이 있음을 알 수 있고, 종속변인으로 Sales를 두고 Sales를 설명하는 변인으로 어떤 것을 취해야 하는가를 생각해 본다. | ||
- | * 변인들을 그냥 눈으로 (이론과 상시적으로) 살펴보면 크게 아래와 같이 나누어 진다 | ||
- | * Price, CompPrice 는 carseats의 가격과 관련된 변인으로 상품의 가격이 sales에 영향을 준다는 것이다 | ||
- | * Advertising은 인지도 혹은 인지력과 관련해서 사람들이 상품에 대해서 얼마나 알고 있게 되는가에 대한 변인이니 또 다른 종류의 변인이라고 생각할 수 있다. | ||
- | * 이 외의 변인들을 보면 가게가 있는 지역의 인구통계학적인 특징으로 볼 수 있다 (income, population, education, 등등) | ||
- | * 이렇게 3 종류의 변인이 독립변인군으로 남는 것 외에 | ||
- | * ShelveLoc은 상품을 사려고 하는 사람에게 직접적으로 영향을 주는 특별한 변인으로 볼 수 있다. | ||
- | * 따라서 이론적으로 연구자는 Price관련, | ||
- | * 이에 따라서 분석을 하기로 한다. | ||
- | |||
- | < | ||
- | head(Carseats) | ||
- | str(Carseats) | ||
- | cor(Carseats) | ||
- | cs.num <- Carseats[, c(1:6, 8, 9)] | ||
- | str(cs.num) | ||
- | head(cs.num) | ||
- | cor(cs.num) | ||
- | # install.packages(ppcor) | ||
- | # for partial and semipartial (part) correlation | ||
- | # library(ppcor) | ||
- | spcor(cs.num) | ||
- | round(spcor(cs.num)$estimate, | ||
- | round(cor(cs.num), | ||
- | |||
- | # regression analsys 시작 | ||
- | |||
- | # 우선 price관련 독립변인 | ||
- | lm.price <- lm(Sales ~ Price + CompPrice, data = cs.num) | ||
- | summary(lm.price) | ||
- | |||
- | # 다음으로 인지도 (Advertising) | ||
- | lm.price.ads <- lm(Sales ~ Price + CompPrice + Advertising, | ||
- | summary(lm.price.ads) | ||
- | |||
- | # 다음으로 인구통계학적 특징 | ||
- | lm.price.ads.pop <- lm(Sales ~ Price + compPrice + | ||
- | | ||
- | | ||
- | | ||
- | summary(lm.price.ads.pop) | ||
- | |||
- | # Population, Education out | ||
- | lm.price.ads.pop2 <- lm(Sales ~ Price + compPrice + | ||
- | | ||
- | | ||
- | | ||
- | summary(lm.price.ads.pop2) | ||
- | |||
- | # ShelveLoc 을 더해 본다 | ||
- | |||
- | lm.price.ads.pop2.sh <- lm(Sales ~ Price + compPrice | ||
- | + Advertising | ||
- | + Income + Age | ||
- | + ShelveLoc, | ||
- | | ||
- | summary(lm.price.ads.pop2.sh) | ||
- | |||
- | # interaction check | ||
- | # 이론적으로 그리고 상식적으로 Ads와 진열위치가 상호작용할 수 | ||
- | # 있을 듯 하다 | ||
- | |||
- | lm.price.ads.pop2.sh.ia <- lm(Sales ~ Price + CompPrice | ||
- | + Advertising | ||
- | + Income + Age | ||
- | + ShelveLoc | ||
- | + Advertising: | ||
- | | ||
- | summary(lm.price.ads.pop2.sh.ia) | ||
- | |||
- | # 독립변인 추가 때 마다 R 제곱값이 통계학적으로 유의미하게 바뀌었는가? | ||
- | |||
- | anova(lm.price, | ||
- | anova(lm.price.ads, | ||
- | anova(lm.price.ads.pop2, | ||
- | |||
- | # r square value 차이 | ||
- | # 참고로 names(summary(lm.price.ads)) 를 치면 | ||
- | # summary(model)의 개체가 갖는 리스트항목들이 출력이 됨 | ||
- | # 그 중의 하나가 r.squared | ||
- | summary(lm.price.ads)$r.squared - summary(lm.price)$r.squared | ||
- | summary(lm.price.ads.pop2)$r.squared - summary(lm.price.ads)$r.squared | ||
- | summary(lm.price.ads.pop2.sh)$r.squared - summary(lm.price.ads.pop2)$r.squared | ||
- | |||
- | # 위의 r squared value 차이는 모두 통계학적으로 의미있음, | ||
- | |||
- | |||
- | # 참고로 인터액션이 어떤 작용을 하는지 보기 위해서 Advertising을 제외하고 | ||
- | # Advertising: | ||
- | |||
- | |||
- | lm.price.pop2.sh.ia <- lm(Sales ~ Price + CompPrice | ||
- | + Income + Age | ||
- | + ShelveLoc | ||
- | + Advertising: | ||
- | data=Carseats) | ||
- | summary(lm.price.pop2.sh.ia) | ||
- | |||
- | </ | ||
- | |||
- | 마지막 분석은 Advertising의 주효과를 제외하고 이 변인과 ShelveLoc간의 interaction이 어떻게 전개되는가를 보기위한 궁금증 해소차원의 분석으로 | ||
- | < | ||
- | > lm.price.pop2.sh.ia <- lm(Sales ~ Price + CompPrice | ||
- | + + Income + Age | ||
- | + + ShelveLoc | ||
- | + + Advertising: | ||
- | + | ||
- | > summary(lm.price.pop2.sh.ia) | ||
- | |||
- | Call: | ||
- | lm(formula = Sales ~ Price + CompPrice + Income + Age + ShelveLoc + | ||
- | Advertising: | ||
- | |||
- | Residuals: | ||
- | Min 1Q Median | ||
- | -2.8255 -0.7178 | ||
- | |||
- | Coefficients: | ||
- | | ||
- | (Intercept) | ||
- | Price | ||
- | CompPrice | ||
- | Income | ||
- | Age | ||
- | ShelveLocGood | ||
- | ShelveLocMedium | ||
- | ShelveLocBad: | ||
- | ShelveLocGood: | ||
- | ShelveLocMedium: | ||
- | --- | ||
- | Signif. codes: | ||
- | |||
- | Residual standard error: 1.02 on 390 degrees of freedom | ||
- | Multiple R-squared: | ||
- | F-statistic: | ||
- | |||
- | > | ||
- | </ | ||
- | |||
- | 위에서 마지막 세줄을 보면 | ||
- | < | ||
- | |||
- | ShelveLocBad: | ||
- | ShelveLocGood: | ||
- | ShelveLocMedium: | ||
- | </ | ||
- | |||
- | Advertising의 값이 ShelveLocGood 일적에는 0.128358 증가하고 | ||
- | ShelveLocMedium 일때는 0.107273, 그리고 | ||
- | ShelveLocBad 일 때는 0.124994 으로 증가한다는 것을 보여주는데 세 조건에서 거의 비슷하게 진행됨을 알 수 있으며 | ||
- | 이는 interaction effect는 없음을 보여주는 것이다. | ||
- | |||
- | interaction effect가 있는 것처럼 나타나는 이유는 | ||
- | 각각의 기울기가 Advertising의 주효과를 포함하고 있기 때문으로 생각된다. | ||
- | |||
- | |||
- | ===== 추가설명 ===== | ||
- | |||
- | 명지학생을 위해서 조금 더 설명할께요. | ||
- | |||
- | 주효과를 없애고 인터액션을 보는 경우는 흔치 않습니다. | ||
- | < | ||
- | 를 한다고 할 때 x1과 x2 모두가 종류변인일 경우에는 main effect를 제외하고 볼 수는 없습니다. | ||
- | x1, x2가 모두 숫자변인이거나, | ||
- | |||
- | 아래는 Advertising을 없애질 않고 ShelveLoc을 없앤것이라서 약간 다르게 보이지만 요지는 같습니다. | ||
- | < | ||
- | > | ||
- | > lm.1 <- lm(Sales ~ Advertising + Advertising: | ||
- | > lm.1 | ||
- | |||
- | Call: | ||
- | lm(formula = Sales ~ Advertising + Advertising: | ||
- | |||
- | Coefficients: | ||
- | (Intercept) | ||
- | 6.76500 | ||
- | </ | ||
- | |||
- | 위에서 prediction model 식을 완성한다고 하면 | ||
- | |||
- | Sales hat = 6.76500 - 0.05412 * Advertising | ||
- | Sales hat = 6.76500 - (0.05412 + 0.14922) * Advertising | ||
- | Sales hat = 6.76500 - (0.05412 + 0.35597) * Advertising | ||
- | 라고 하겠습니다. | ||
- | |||
- | 기울기가 변하는 거죠. 이를 그래프로 그려보겠습니다. | ||
- | |||
- | < | ||
- | > plot(Advertising, | ||
- | </ | ||
- | 위의 plot 명령어는 fansy한 옵션을 쓰지는 않지만 그래프는 나타내 줍니다. 아래와 같습니다. | ||
- | {{: | ||
- | 이 데이터에서 각각의 Sales hat 에 대한 기울기 선을 그리려고 하면 아래와 같이 abline add-명령어를 써줍니다. 아웃풋은 아래와 같습니다. | ||
- | < | ||
- | > abline(a = 6.76500, b = 0.30185, col = " | ||
- | > abline(a = 6.76500, b = 0.0951, col = " | ||
- | > abline(a = 6.76500, b = -0.05412, col = " | ||
- | </ | ||
- | {{: | ||
- | 이 그림으로 해석을 하면 명확합니다. | ||
- | * 녹색선은 ShelveLoc 이 Good 일 때의 Advertising과 Sales 관계를 보여줍니다. | ||
- | * 빨간선은 ShelveLoc 이 Medium 일 때의 Advertising과 Sales 관계를 보여줍니다. | ||
- | * 파란선은 ShelveLoc 이 Bad 일 때의 Advertising과 Sales 관계를 보여줍니다. | ||
- | |||
- | 이를 풀어서 이야기하자면 | ||
- | * 광고를 해서 많이 알려진 상품을 좋은 곳에 진열하면 더 잘 팔리고 | ||
- | * 광고를 해서 잘 알려진 상품을 중간장소에 진열하면 팔리는 양이 좋은 곳 진열했을 때 보다 약간 떨어지고 | ||
- | * 가장 않좋은 장소 진열한 상품이 가장 판매가 떨어진다는 이야기입니다. | ||
- | 인터액션이 있는 것처럼 해석이 되죠. 그런데, 위의 이야기는 | ||
- | ShelveLoc을 Main effect를 보기 위해서 독립변인으로 넣었을 때, | ||
- | 장소에 따라서 상품의 판매가 달라진다는 것과 다를게 없습니다. 바로 이것때문에 | ||
- | < | ||
- | > lm.adsShelve <- lm(Sales ~ Advertising + ShelveLoc + Advertising: | ||
- | </ | ||
- | 의 결과가 Advertising과 ShelveLoc의 설명력만 있고 interaction은 없다고 나타나는 이윱니다 (아래 아웃풋). | ||
- | < | ||
- | > lm.adsShelve <- lm(Sales ~ Advertising + ShelveLoc + Advertising: | ||
- | > summary(lm.adsShelve) | ||
- | |||
- | Call: | ||
- | lm(formula = Sales ~ Advertising + ShelveLoc + Advertising: | ||
- | data = Carseats) | ||
- | |||
- | Residuals: | ||
- | Min 1Q Median | ||
- | -6.6074 -1.6079 -0.0678 | ||
- | |||
- | Coefficients: | ||
- | Estimate Std. Error t value Pr(> | ||
- | (Intercept) | ||
- | Advertising | ||
- | ShelveLocGood | ||
- | ShelveLocMedium | ||
- | Advertising: | ||
- | Advertising: | ||
- | --- | ||
- | Signif. codes: | ||
- | |||
- | Residual standard error: 2.249 on 394 degrees of freedom | ||
- | Multiple R-squared: | ||
- | F-statistic: | ||
- | |||
- | > | ||
- | </ | ||
- | 그리고 이렇게 해서 interaction effect는 없다고 보는 것이 맞지만, 선생님이 ShelveLoc이 Advertising과 어떤 관계로 나타나는지 살펴보기 위해서 temporary하게 ShelveLoc 의 main effect를 제외하고 (즉, regression에서 독립변인으로 제외하고), | ||
- | |||
- | 아래는 설명을 하지 않고 코드만 적었었는데 이는 아래 둘의 model이 동일한 것임을 보여주기 위한 것입니다. | ||
- | < | ||
- | lm.2 <- lm(Sales ~ Advertising: | ||
- | lm.1 <- lm(Sales ~ Advertising + Advertising: | ||
- | </ | ||
- | |||
- | 왜 같은지를 보기 위해서 아래를 보면 | ||
- | < | ||
- | > lm.2 <- lm(Sales ~ Advertising: | ||
- | > lm.2 | ||
- | |||
- | Call: | ||
- | lm(formula = Sales ~ Advertising: | ||
- | |||
- | Coefficients: | ||
- | (Intercept) | ||
- | 6.76500 | ||
- | > | ||
- | </ | ||
- | 1) ShelveLoc Good일 경우, ShelveLOcGood = 1이고 나머지는 0이므로 | ||
- | Sales hat = Intercept + Advertising: | ||
- | Sales hat = 6.76500 + 0.30185 * Advertising | ||
- | |||
- | 2) ShelveLoc Medium일 경우는 | ||
- | Sales hat = 6.76500 + 0.09510 * Advertising 이 됩니다 | ||
- | |||
- | 3) Bad 인 경우는 | ||
- | Sales hat = 6.76500 + -0.05412 * Advertising 이 됩니다. | ||
- | |||
- | 위는 결국 lm.1 과 같은 모델이라는 뜻입니다. | ||
- | |||
- | 참고로 위에서 원래 lm.1에서 우리가 살펴본 각 라인은 아래와 같았었습니다. | ||
- | < | ||
- | > abline(a = 6.76500, b = 0.30185, col = " | ||
- | > abline(a = 6.76500, b = 0.0951, col = " | ||
- | > abline(a = 6.76500, b = -0.05412, col = " | ||
- | </ | ||
- | |||
- | ===== 추가 설명 2 ===== | ||
- | 선생님이 처음 예에서는 Advertising을 빼고 interaction을 보고는 바로 위의 설명에서는 ShelveLoc을 빼서 (깜박하고 거꾸로 뺏어요) 좀 당황할 수 있으므로 원래대로 해도 마찬가지라는 걸 조금 보려고 합니다. 이것을 R code로 쓰면 아래와 같습니다. 처음것은 두변인과 두변인의 interaction을 모두 포함한 것이고 그 다음 것은 Advertising 주효과를 제외한 것입니다. | ||
- | |||
- | < | ||
- | > lm.adsShelve <- lm(Sales ~ Advertising + ShelveLoc + Advertising: | ||
- | > summary(lm.adsShelve) | ||
- | |||
- | Call: | ||
- | lm(formula = Sales ~ Advertising + ShelveLoc + Advertising: | ||
- | data = Carseats) | ||
- | |||
- | Residuals: | ||
- | Min 1Q Median | ||
- | -6.6074 -1.6079 -0.0678 | ||
- | |||
- | Coefficients: | ||
- | Estimate Std. Error t value Pr(> | ||
- | (Intercept) | ||
- | Advertising | ||
- | ShelveLocGood | ||
- | ShelveLocMedium | ||
- | Advertising: | ||
- | Advertising: | ||
- | --- | ||
- | Signif. codes: | ||
- | |||
- | Residual standard error: 2.249 on 394 degrees of freedom | ||
- | Multiple R-squared: | ||
- | F-statistic: | ||
- | </ | ||
- | |||
- | < | ||
- | > lm.5 <- lm(Sales ~ ShelveLoc + Advertising: | ||
- | > summary(lm.5) | ||
- | |||
- | Call: | ||
- | lm(formula = Sales ~ ShelveLoc + Advertising: | ||
- | |||
- | Residuals: | ||
- | Min 1Q Median | ||
- | -6.6074 -1.6079 -0.0678 | ||
- | |||
- | Coefficients: | ||
- | Estimate Std. Error t value Pr(> | ||
- | (Intercept) | ||
- | ShelveLocGood | ||
- | ShelveLocMedium | ||
- | ShelveLocBad: | ||
- | ShelveLocGood: | ||
- | ShelveLocMedium: | ||
- | --- | ||
- | Signif. codes: | ||
- | |||
- | Residual standard error: 2.249 on 394 degrees of freedom | ||
- | Multiple R-squared: | ||
- | F-statistic: | ||
- | </ | ||
- | |||
- | 위의 결과를 보면 (번호 (1)에서 (6)까지) | ||
- | |||
- | Sales hat = 5.01234 + 0.08210 | ||
- | 이 첫번째 경우가 | ||
- | * ShelveBad일 경우 intercept만 남고 (5.01234) | ||
- | * ShelveBad 가 1이고 나머지는 (Medium 과 Good) 0으로 보는 것이기에 | ||
- | * ShelveLocBad: | ||
- | * (1)에다 (4)의 (ShelveLocBad: | ||
- | * 그냥 Bad와 (5.01234) | ||
- | * Advertising이 섞인 Bad (5.01234 + 0.08210) 이 됩니다. | ||
- | |||
- | 두번째 Medium일 경우는 | ||
- | * 5.01234에 (1) 1.59511을 (3) 더한 것이 ShleveLoc Medium 의 효과로 | ||
- | * Sales hat = (5.01234 + 1.59511) 이고 여기에 Advertising의 interaction을 고려하면 여기에 (6)을 고려해서 | ||
- | * Sales hat = (5.01234 + 1.59511) + 0.10692 이 되겠습니다. | ||
- | |||
- | 세번째 Good일 경우는 | ||
- | * Sales hat = (5.01234 + 4.43573) 이고 여기에 Advertising의 interaction을 고려하면 | ||
- | * Sales hat = (5.01234 + 4.43573) + 0.10417 이 됩니다. | ||
- | |||
- | 그런데 Advertising 과의 상호작용 때문에 증가하는 양이 비슷비슷합니다. 이것을 그래프로 그리면 | ||
- | < | ||
- | > plot(ShelveLoc, | ||
- | </ | ||
- | {{: | ||
- | |||
- | < | ||
- | > plot(as.integer(ShelveLoc), | ||
- | </ | ||
- | {{: | ||
- | |||
- | 위에서 가운데가 Good이고 오른 쪽이 Medium 왼쪽이 Bad입니다. | ||
- | 여기에 Advertising의 interaction 이펙트를 더하면 왼쪽부터 각 개인의 점수가 | ||
- | 모두 0.08210 씩, 0.10417 씩, 그리고 0.10692씩 올라가게 된다는 겁니다. | ||
- | |||
- | 그러니 이렇게 보아도 마찬가지임을 알 수 있죠? | ||
- | ====== Discussion 3 ====== | ||
- | {{: | ||
- | < | ||
- | 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에서 구한 제곱값들을 제외한 나머지를 보면 된겠다. | ||
- | |||
- | * 결론을 내기 위한 계획을 세우고 실행한다. | ||
- | * 이는 아래와 같이 정리할 수 있다 | ||
- | |||
- | {{: | ||
- | |||
- | |||
- | |||
- | |||
- | ====== Making Questionnaire ====== | ||
- | [[https:// | ||
- | Then we will list questions in Google docs [[https:// | ||
- | |||
- | |||
multiple_regression_exercise.txt · Last modified: 2023/12/10 21:41 by hkimscil