Multiple Linear Regressionn

Task 1

  • 읽기(Reading) 점수를 종속 변수(Dependent Variable) 로 설정하여 회귀 분석을 수행
  1. haven 패키지의 read_dta() 함수를 사용하여 데이터를 불러오기. 데이터를 grades라는 객체에 저장
  1. avgverb (읽기 점수)를 종속 변수로, classize와 disadvantaged를 독립 변수로 사용하여 회귀분석. 결과를 reg 객체에 저장. 각 계수(coefficient)의 의미는 무엇인가? 단순 선형 회귀(Simple Linear Regression)와 비교했을 때 계수는 어떻게 달라졌는가? 수학 점수 회귀 분석(Math Score Regression)과 비교했을 때 계수의 차이점은 무엇인가?
reg <- lm(avgverb ~ classize + disadvantaged, grades)
reg
## 
## Call:
## lm(formula = avgverb ~ classize + disadvantaged, data = grades)
## 
## Coefficients:
##   (Intercept)       classize  disadvantaged  
##      80.23878       -0.03083       -0.34967

절편(intercept)은 학급 크기(class size)와 저소득 학생 비율이 0일 때의 예상 읽기 점수이며, 그 값은 80입니다. 수업에서 논의했듯이, 현실에서는 학생이 없으면 시험 점수도 존재할 수 없기 때문에 이 값은 의미가 없습니다. 학급 규모에 대한 계수는 -0.03으로, 저소득 학생 비율을 통제할 때 학급에 학생 1명이 추가되면 평균 읽기 점수가 0.03점 감소한다는 뜻입니다. 이는 수학 점수를 종속 변수로 했을 때 양의 값을 보였던 것과 반대이며, 읽기 점수가 0에서 100까지인 점을 고려할 때 매우 작은 효과입니다. 저소득 학생 비율(disadvantaged)의 계수는 -0.35로, 학급 크기를 고정하면 저소득 학생 비율이 1%p 증가할 때 평균 읽기 점수는 0.35점 감소한다는 뜻입니다. 이는 수학 점수 분석 결과와 유사한 크기이며, 10%p 증가 시에도 점수는 3.5점 정도만 감소합니다.

(Optional) 데이터셋에서 추가 가능한 변수를 확인하고 회귀 분석을 확장하시오. 모든 변수를 포함한 회귀 분석을 수행하고 reg_full 객체에 저장.

  • 추가된 변수들의 계수(sign & magnitude)를 해석하시오.
  • 추가된 변수가 포함됨으로 인해 classize 및 disadvantaged의 계수는 어떻게 변했는가?
  • 전체 모델의 설명력이 증가했는가? (R^2 값 확인)
reg_full <- lm(avgverb ~ classize + disadvantaged + school_enrollment + female + religious, grades)
reg_full
## 
## Call:
## lm(formula = avgverb ~ classize + disadvantaged + school_enrollment + 
##     female + religious, data = grades)
## 
## Coefficients:
##       (Intercept)           classize      disadvantaged  school_enrollment  
##        78.5607253          0.0033208         -0.3893330          0.0007583  
##            female          religious  
##         0.9237105          2.8761467

Task 2

  1. STAR 데이터를 다운로드 링크. read.csv()를 사용하여 star_df 객체에 저장. NA 값이 있는 행을 제거: star_df <- star_df[complete.cases(star_df),]
library(tidyverse)

star_df <- read.csv("https://chung-jiwoong.github.io/FMB819-Slides/chapter_causality/data/star_data.csv")

star_df <- star_df[complete.cases(star_df),]

star_df_2 <- star_df %>%
    filter(grade == "2")
  1. 세 개의 더미 변수를 생성 (힌트: dummy = (variable=="value")):
  • small: 학생이 소규모 학급에 배정되었으면 TRUE, 아니면 FALSE
  • regular: 학생이 일반 학급에 배정되었으면 TRUE, 아니면 FALSE
  • regular_plus: 학생이 보조 교사가 있는 일반 학급에 배정되었으면 TRUE, 아니면 FALSE
  • 또한, sum 변수를 만들어 위 세 개 변수의 합을 확인. 무엇을 뜻하는가?
star_df_2 <- star_df_2 %>%
    mutate(small = (star == "small"),
           regular = (star == "regular"),
           regular_plus = (star == "regular+aide"),
           sum = small + regular + regular_plus)

star_df_2 %>% count(sum)
##   sum    n
## 1   1 5672

** sum 변수는 항상 1입니다. 이는 small, regular, regular_plus 세 변수는 완전히 공선형(collinear)이라는 의미입니다. 즉, 서로 선형 결합으로 표현할 수 있습니다. 예: small = 1 - (regular + regular_plus) **

  1. mathregular_plus로 회귀 분석. regular+aide 반에 있는 학생의 평균 math 점수는?
reg_small <- lm(math ~ small, star_df_2)
reg_small
## 
## Call:
## lm(formula = math ~ small, data = star_df_2)
## 
## Coefficients:
## (Intercept)    smallTRUE  
##     579.074        7.564

**회귀 변수인 small이 더미 변수인 경우, 절편은 FALSE 그룹의 평균이며 계수는 TRUE와 FALSE 그룹 간 평균 차이를 의미합니다. 이 경우, 작은 학급이 아닌 학생들의 예상 수학 점수는 약 579.07이고, 작은 학급에 속한 학생들과의 차이는 7.56점입니다. 따라서 작은 학급 학생의 예상 점수는 579.07 + 7.56 = 586.64 입니다.

수학적으로는 다음과 같습니다:** \[ \mathbb{E}(\text{math score } | \text{ small} = 0) = b_0 + b_1 \times 0 = b_0 \approx 579.07 \\ \mathbb{E}(\text{math score } | \text{ small} = 1) = b_0 + b_1 \times 1 = b_0 + b_1 \approx 586.64 \]

reg_regular <- lm(math ~ regular, star_df_2)
reg_regular
## 
## Call:
## lm(formula = math ~ regular, data = star_df_2)
## 
## Coefficients:
## (Intercept)  regularTRUE  
##     583.231       -5.535
reg_plus <- lm(math ~ regular_plus, star_df_2)
reg_plus
## 
## Call:
## lm(formula = math ~ regular_plus, data = star_df_2)
## 
## Coefficients:
##      (Intercept)  regular_plusTRUE  
##          581.859            -1.466

다음이 성립함: \[ \mathbb{E}(\text{math score } | \text{ regular} = 0) = b_0 + b_1 \times 0 = b_0 \approx 583.23 \\ \mathbb{E}(\text{math score } | \text{ regular} = 1) = b_0 + b_1 \times 1 = b_0 + b_1 \approx 577.7 \\ \mathbb{E}(\text{math score } | \text{ regular+aide} = 0) = b_0 + b_1 \times 0 = b_0 \approx 581.86 \\ \mathbb{E}(\text{math score } | \text{ regular+aide} = 1) = b_0 + b_1 \times 1 = b_0 + b_1 \approx 580.39 \]

  1. mathsmall, regular, regular_plus로 회귀 분석. 어느 범주가 사라졌나?
reg_full <- lm(math ~ small + regular + regular_plus, star_df_2)
reg_full
## 
## Call:
## lm(formula = math ~ small + regular + regular_plus, data = star_df_2)
## 
## Coefficients:
##      (Intercept)         smallTRUE       regularTRUE  regular_plusTRUE  
##          580.393             6.246            -2.696                NA

regular_plus 변수가 자동으로 제외됩니다. 이는 small, regular, regular_plus 사이에 완전한 선형 종속성이 있기 때문입니다. 기준 범주는 regular+aide이며, 다른 계수들은 이 그룹을 기준으로 해석됩니다. 즉, 작은 학급 학생은 regular+aide 그룹보다 평균 6.25점 높고, 일반 학급 학생은 2.7점 낮습니다.

\[\begin{align} b_0 &= \mathbb{E}(\text{math score } | \text{ small} = 0 \text{ & } \text{ regular} = 0) \\ &= \mathbb{E}(\text{math score } | \text{ regular + aide} = 1) \\ &\approx 580.39 \end{align}\]

이 결과를 이전 질문의 답과 비교해 보면, 정확히 같은 결과를 얻는다는 것을 알 수 있습니다.

같은 방식으로, 우리는 다음과 같은 결론에 도달합니다:

\[\begin{align} b_1 &= \mathbb{E}(\text{math score } | \text{ small} = 1 \text{ & } \text{ regular} \in \{0,1\}) - \mathbb{E}(\text{math score } | \text{ small} = 0 \text{ & } \text{ regular} \in \{0,1\}) \\ &= b_0 + b_1 \times 1 + b_2 \times \text{regular} - (b_0 + b_1 \times 0 + b_2 \times \text{regular}) \\ &\approx 6.25 \end{align}\]

\[\begin{align} b_2 &= \mathbb{E}(\text{math score } | \text{ small} \in \{0,1\} \text{ & } \text{ regular} = 1) - \mathbb{E}(\text{math score } | \text{ small} \in \{0,1\} \text{ & } \text{ regular} = 0) \\ &= b_0 + b_1 \times \text{small} + b_2 \times 1 - (b_0 + b_1 \times \text{small} + b_2 \times 0) \\ &\approx -2.7 \end{align}\]

쉽게 말하면, 해석은 다음과 같습니다: regular+aide 그룹을 기준으로 할 때, 작은 학급에 속한 학생들은 수학 시험에서 평균 6.25점 더 높은 점수를 받고, 일반 학급에 속한 학생들은 평균 2.7점 더 낮은 점수를 받습니다.

  1. mathstar 변수로 회귀 분석. 어느 범주가 사라졌나? 계수를 해석하시오.
lm(math ~ star, star_df_2)
## 
## Call:
## lm(formula = math ~ star, data = star_df_2)
## 
## Coefficients:
##      (Intercept)  starregular+aide         starsmall  
##          577.696             2.696             8.942

R은 실제로 범주형 변수에 대해 자동으로 더미 변수를 생성해 주기 때문에, 위에서 각 범주별로 일일이 더미 변수를 만드는 번거로운 작업을 할 필요가 없습니다! 기준(생략) 범주는 regular이므로, 회귀 계수들은 모두 regular 학급 학생들을 기준으로 한 평균 수학 점수의 차이로 해석해야 합니다.

Task 3

  1. Task 2에서 필터링한 STAR 데이터를 사용하여 mathschool 변수에 대해 회귀 분석하시오. school 변수가 포함하는 값들을 먼저 확인. 회귀 계수를 해석하시오. 누락된 범주 (category)는? 결과가 예상과 일치하는가? 만약 다르다면 왜 그런가? 누락된 변수가 존재할 가능성이 있는가?
star_df_2 %>% count(school)
##       school    n
## 1 inner-city 1199
## 2      rural 2665
## 3   suburban 1476
## 4      urban  332
lm(math ~ school, star_df_2)
## 
## Call:
## lm(formula = math ~ school, data = star_df_2)
## 
## Coefficients:
##    (Intercept)     schoolrural  schoolsuburban     schoolurban  
##         561.56           30.18           16.93           20.33

school 변수는 학교의 위치 유형을 나타내는 범주형 변수입니다. 네 가지 범주가 있으며, 각각은 inner-city(도심), suburban(교외), rural(농촌), urban(도시)입니다.

회귀 분석에서 생략된 기준 범주는 inner-city이므로, 절편은 inner-city에 위치한 학교 학생들의 평균 수학 점수를 나타냅니다. 나머지 계수들은 모두 inner-city 학생들의 예상 점수를 기준으로 해석해야 합니다. 예를 들어, 농촌 학교 학생들은 평균적으로 inner-city 학교 학생들보다 30점 더 높고, 교외 지역 학생들은 약 17점, 도시 지역 학생들은 약 20점 더 높습니다. 일반적으로 inner-city 지역은 저소득층 비율이 높기 때문에, 다른 지역에 비해 점수가 낮은 것이 그로 인해 설명될 수 있습니다. 생략된 변수는 학생 개인 혹은 학교 차원의 불리함을 나타내는 변수일 수 있습니다.

  1. lunch 변수가 "free"인 학생들의 비율을 학교 위치(school) 별로 계산하시오. 결과를 보고, 무료 점심 자격 여부(free) 변수를 추가하여 이전 회귀 분석을 다시 수행하시오. free 변수를 추가했을 때 회귀 계수는 어떻게 변화하는가?
star_df_2 %>%
    group_by(school) %>%
    summarise(mean(lunch == "free"))
## # A tibble: 4 × 2
##   school     `mean(lunch == "free")`
##   <chr>                        <dbl>
## 1 inner-city                   0.897
## 2 rural                        0.389
## 3 suburban                     0.335
## 4 urban                        0.443

예상한 대로, 무료 급식 자격을 갖춘 학생들의 비율(이는 일반적으로 불리함을 나타내는 지표로 사용됨)은 inner-city 학교에서 현저히 높습니다 (해당 학생 비율이 거의 90%에 달함). 반면, 다른 지역에서는 그 비율이 34%에서 44% 사이로 나타납니다.

lm(math ~ school + lunch, star_df_2)
## 
## Call:
## lm(formula = math ~ school + lunch, data = star_df_2)
## 
## Coefficients:
##    (Intercept)     schoolrural  schoolsuburban     schoolurban   lunchnon-free  
##        559.228          18.750           4.289          10.114          22.517

학생들의 무료 급식 자격 여부를 회귀에 포함하면, rural, suburban, urban 지역에 대한 계수들이 크게 감소하는 것을 확인할 수 있습니다. 이는 학교 위치를 통제한 상태에서도, 무료 급식 자격이 없는 학생들이 평균적으로 자격이 있는 학생들보다 수학 점수가 유의미하게 더 높다는 것을 보여줍니다.

  1. mathstar 변수에 대해 회귀 분석하시오. 다음의 모든 변수를 포함하여 다중 회귀 분석을 수행하시오:
    math ~ star + gender + ethnicity + lunch + degree + experience + school. 무작위 실험이 잘 수행되었다고 판단할 수 있는가?
lm(math ~ gender + experience, star_df_2)
## 
## Call:
## lm(formula = math ~ gender + experience, data = star_df_2)
## 
## Coefficients:
## (Intercept)   gendermale   experience  
##   581.35255     -0.91383      0.03453

절편 계수는 교사의 경력을 일정하게 유지했을 때 여학생들의 평균 수학 점수를 나타냅니다. 숫자형 변수와 더미 변수를 모두 독립 변수로 포함하고 있기 때문에, 절편은 생략된 범주(이 경우 여성)에 해당하는 회귀선의 절편으로 해석할 수 있습니다.

성별(gender)에 대한 계수는, 교사의 경력이 일정할 때 남학생과 여학생 간 수학 점수의 기대 차이를 나타냅니다. 이 계수는 음수이지만 크기가 작으며, 이는 교사의 경력이 동일할 때 평균적으로 남학생이 여학생보다 약간 낮은 점수를 받는다는 것을 의미합니다. 시각적으로 표현하면, 남학생의 회귀선이 여학생의 회귀선보다 아래에 위치한다는 뜻입니다.

경력(experience)에 대한 계수는 교사의 경력이 1년 늘어날 때 평균적으로 수학 점수가 얼마나 변화하는지를 보여줍니다(성별을 통제한 상태에서). 평균적으로 교사의 경력이 1년 증가할 때 수학 점수는 0.03점 증가합니다. 이는 매우 미미한 효과로, 점수가 3점 오르기 위해서는 100년의 경력 증가가 필요하다는 의미입니다.

  1. 다중 회귀 분석에서 얻은 수정된 \(R^2\) 값을 확인하시오. 수정된 \(R^2\) 값이 의미하는 바는 무엇인가? 관측 가능한 개별 학생, 교사, 학교 특성이 학업 성취도에 미치는 중요성에 대해 어떤 결론을 내릴 수 있는가?
lm(math ~ star, star_df_2)
## 
## Call:
## lm(formula = math ~ star, data = star_df_2)
## 
## Coefficients:
##      (Intercept)  starregular+aide         starsmall  
##          577.696             2.696             8.942

계수의 해석은 일반적인 조건부 평균 간의 비교입니다. 즉, 작은 학급에 속한 학생들은 일반 학급(생략된 기준 범주)에 속한 학생들보다 평균적으로 8.94점 더 높은 수학 점수를 받으며, 일반+보조교사 학급에 속한 학생들은 평균적으로 2.70점 더 높게 나타납니다.

reg_all <- lm(math ~ star + gender + ethnicity + lunch + degree + experience + school, star_df_2)
reg_all
## 
## Call:
## lm(formula = math ~ star + gender + ethnicity + lunch + degree + 
##     experience + school, data = star_df_2)
## 
## Coefficients:
##       (Intercept)   starregular+aide          starsmall         gendermale  
##         557.64898            2.01899            7.89579           -1.07263  
## ethnicityamindian     ethnicityasian      ethnicitycauc  ethnicityhispanic  
##         -21.91483           42.16429           18.61906           15.04510  
##    ethnicityother      lunchnon-free       degreemaster          degreephd  
##          54.67051           18.40555           -1.29047            0.97823  
##  degreespecialist         experience        schoolrural     schoolsuburban  
##          12.11634           -0.05146            3.99491           -4.65503  
##       schoolurban  
##          -3.97039

처치 변수 star에 대한 계수는 이전의 단순 회귀에 비해 아주 약간만 감소합니다. 이는 무작위 실험(randomized experiment)이었기 때문에 예상 가능한 결과이며, 무작위 배정이 잘 이루어졌다고 볼 수 있습니다. 만약 무작위 배정이 제대로 되지 않았다면, 다른 변수들을 통제했을 때 star의 계수가 더 크게 변했을 것입니다.

  1. (Optional) mathgenderexperience 변수에 대해 회귀 분석하시오. 회귀 계수를 어떻게 해석할 수 있는가? 이러한 회귀 분석 결과를 시각적으로 표현한다면 어떻게 보일 것인가?
summary(reg_all)
## 
## Call:
## lm(formula = math ~ star + gender + ethnicity + lunch + degree + 
##     experience + school, data = star_df_2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -137.882  -27.033   -1.892   25.174  144.834 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       557.64898    1.68995 329.979  < 2e-16 ***
## starregular+aide    2.01899    1.30760   1.544 0.122635    
## starsmall           7.89579    1.36425   5.788 7.52e-09 ***
## gendermale         -1.07263    1.08674  -0.987 0.323675    
## ethnicityamindian -21.91483   28.97355  -0.756 0.449457    
## ethnicityasian     42.16429   11.90591   3.541 0.000401 ***
## ethnicitycauc      18.61906    1.76609  10.543  < 2e-16 ***
## ethnicityhispanic  15.04510   14.53924   1.035 0.300810    
## ethnicityother     54.67051   13.71246   3.987 6.78e-05 ***
## lunchnon-free      18.40555    1.25646  14.649  < 2e-16 ***
## degreemaster       -1.29047    1.17370  -1.099 0.271603    
## degreephd           0.97823    7.08286   0.138 0.890157    
## degreespecialist   12.11634    5.50130   2.202 0.027674 *  
## experience         -0.05146    0.06398  -0.804 0.421259    
## schoolrural         3.99491    2.09764   1.904 0.056898 .  
## schoolsuburban     -4.65503    1.90889  -2.439 0.014775 *  
## schoolurban        -3.97039    2.91817  -1.361 0.173703    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 40.86 on 5655 degrees of freedom
## Multiple R-squared:  0.1489, Adjusted R-squared:  0.1465 
## F-statistic: 61.85 on 16 and 5655 DF,  p-value: < 2.2e-16

이전 회귀의 조정된 \(R^2\) 값은 약 0.15로, 이는 해당 모형이 학생들의 수학 점수 변동 중 약 15%만 설명한다는 것을 의미합니다. 다시 말해, 전체 점수 변동의 85%는 설명되지 않은 상태로 남아 있습니다. 쉽게 말하면, 학급 규모, 성별, 인종, 무료 급식 여부, 교사 경력 및 학위, 학교 위치 등은 이 데이터에서 학생들의 수학 점수 차이를 설명하는 데 큰 역할을 하지 못한다는 뜻입니다. 이를 조금 확대 해석하면, 교육 성과의 대부분은 이러한 관측 가능한 변수들로 설명되지 않는다는 주장도 가능합니다. 다만, 이것이 해당 변수들이 교육 성과에 중요한 인과적 효과를 갖지 않는다는 뜻은 절대 아닙니다.**