대학성적에 미치는 요인

통제변수 몇 개를 추가하고 왜 그변수들을 추가해야 하는지 설명을 쓰고 추정 결과를 제시하시오.

##필요한 패키지와 파일을 불러오기

(원래는 echo = FALSE로 감춰야하지만 과제라서 다 보이게 작성하겠습니다…!)

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.3
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.0.3
library(mlbench)
## Warning: package 'mlbench' was built under R version 4.0.3
library(leaps)
## Warning: package 'leaps' was built under R version 4.0.3
library(stargazer)
## Warning: package 'stargazer' was built under R version 4.0.3
library(RColorBrewer)
gpa <- read.csv('gpa1.csv',
                header = T,
                sep = '\t')

sep = ’ 통해 데이터 요소들을 분리시킨다.

불러온 파일 확인하기

1.제대로 파일이 불러와졌는지 확인한다.

head(gpa, n = 5)
##   age soph junior senior senior5 male campus business engineer colGPA hsGPA ACT
## 1  21    0      0      1       0    0      0        1        0    3.0   3.0  21
## 2  21    0      0      1       0    0      0        1        0    3.4   3.2  24
## 3  20    0      1      0       0    0      0        1        0    3.0   3.6  26
## 4  19    1      0      0       0    1      1        1        0    3.5   3.5  27
## 5  20    0      1      0       0    0      0        1        0    3.6   3.9  28
##   job19 job20 drive bike walk voluntr PC greek car siblings bgfriend clubs
## 1     0     1     1    0    0       0  0     0   1        1        0     0
## 2     0     1     1    0    0       0  0     0   1        0        1     1
## 3     1     0     0    0    1       0  0     0   1        1        0     1
## 4     1     0     0    0    1       0  0     0   0        1        0     0
## 5     0     1     0    1    0       0  0     0   1        1        1     0
##   skipped alcohol gradMI fathcoll mothcoll
## 1       2     1.0      1        0        0
## 2       0     1.0      1        1        1
## 3       0     1.0      1        1        1
## 4       0     0.0      0        0        0
## 5       0     1.5      1        1        0
  1. 데이터의 속성과 구성요소들을 확인한다.
str(gpa)
## 'data.frame':    141 obs. of  29 variables:
##  $ age     : int  21 21 20 19 20 20 22 22 22 19 ...
##  $ soph    : int  0 0 0 1 0 0 0 0 0 1 ...
##  $ junior  : int  0 0 1 0 1 0 0 0 0 0 ...
##  $ senior  : int  1 1 0 0 0 1 0 0 0 0 ...
##  $ senior5 : int  0 0 0 0 0 0 1 1 1 0 ...
##  $ male    : int  0 0 0 1 0 1 0 0 0 0 ...
##  $ campus  : int  0 0 0 1 0 1 0 0 0 0 ...
##  $ business: int  1 1 1 1 1 1 1 0 0 1 ...
##  $ engineer: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ colGPA  : num  3 3.4 3 3.5 3.6 ...
##  $ hsGPA   : num  3 3.2 3.6 3.5 3.9 ...
##  $ ACT     : int  21 24 26 27 28 25 25 22 21 27 ...
##  $ job19   : int  0 0 1 1 0 0 0 1 1 1 ...
##  $ job20   : int  1 1 0 0 1 0 0 0 0 0 ...
##  $ drive   : int  1 1 0 0 0 0 0 1 1 0 ...
##  $ bike    : int  0 0 0 0 1 0 1 0 0 0 ...
##  $ walk    : int  0 0 1 1 0 1 0 0 0 1 ...
##  $ voluntr : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ PC      : int  0 0 0 0 0 0 0 1 0 1 ...
##  $ greek   : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ car     : int  1 1 1 0 1 1 1 0 1 0 ...
##  $ siblings: int  1 0 1 1 1 1 1 1 1 1 ...
##  $ bgfriend: int  0 1 0 0 1 0 0 1 1 0 ...
##  $ clubs   : int  0 1 1 0 0 0 1 0 1 1 ...
##  $ skipped : num  2 0 0 0 0 0 0 3 2 0.5 ...
##  $ alcohol : num  1 1 1 0 1.5 0 2 3 2.5 0.75 ...
##  $ gradMI  : int  1 1 1 0 1 0 1 1 1 1 ...
##  $ fathcoll: int  0 1 1 0 1 1 0 1 1 0 ...
##  $ mothcoll: int  0 1 1 0 0 0 1 1 1 1 ...

대학교 학점과 고등학교 학점의 관계

우선 이 둘의 관계를 산포도를 통해 확인한다.

gpa %>%
        ggplot(aes(x = hsGPA, y = colGPA))+
        geom_jitter(aes(size = 3,
                        alpha = 0.4))+
        geom_smooth(method = 'lm',
                    color = 'red')+
        labs(x = 'high school GPA',
            y = 'collage GPA')

고등학교 학점과 대학교 학점의 상관관계를 나타내는 산포도 상 회귀선은 위 그래프와 같이 우상향하는 것으로 나타난다. 이를 바탕으로 회귀 모형을 가정해보도록 하겠다.

회기모형 가정하기

lm_gpa <- lm(colGPA ~ hsGPA , data =gpa)
summary(lm_gpa)
## 
## Call:
## lm(formula = colGPA ~ hsGPA, data = gpa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.85220 -0.26274 -0.04868  0.28902  0.88551 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.41543    0.30694   4.611 8.98e-06 ***
## hsGPA        0.48243    0.08983   5.371 3.21e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.34 on 139 degrees of freedom
## Multiple R-squared:  0.1719, Adjusted R-squared:  0.1659 
## F-statistic: 28.85 on 1 and 139 DF,  p-value: 3.211e-07

우선 단순회귀 모형을 가정하여 대학교 학점고등학교 학점의 상관관계를 파악한다. 우선 이 모형의 결정계수는 0.1719이며, 조정된 결정계수는 0.1659이다. 또한 고등학교 학점을 나타내는 hsGPA의 p-value는 0.001 수준에서 유의한 것으로 나타난다.

통제 변수의 적합성

위 두 요소의 관계에 대한 간접효과를 배제하기 위한 방법으로 통제 변수를 설정할 필요가 있다. 따라서 모형에 특정 변수에 대한 통제를 통해 두 변수간 적절한 상관관계 및 인과관계를 파악해보기로 하겠다.

##다중 회귀모형의 추정

각 변수에 대한 다중 회귀모형을 추정해 통제변수로 적합한 변수들을 확인한다.

우선 colGPA와 관련성이 있는 변수들을 알아내기 위해 colGPA를 종속변수로 다중 회귀모형을 추정한다.

lm_gpa_h <- lm(colGPA ~ ., data = gpa)
summary(lm_gpa_h)
## 
## Call:
## lm(formula = colGPA ~ ., data = gpa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.70062 -0.19192  0.01191  0.22293  0.56458 
## 
## Coefficients: (2 not defined because of singularities)
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.3855097  0.8384647   0.460  0.64655    
## age          0.0346817  0.0312473   1.110  0.26937    
## soph         0.3317017  0.2513325   1.320  0.18956    
## junior       0.0330885  0.1241377   0.267  0.79030    
## senior      -0.0005738  0.1073523  -0.005  0.99574    
## senior5             NA         NA      NA       NA    
## male         0.0610685  0.0703393   0.868  0.38711    
## campus      -0.0929607  0.0832369  -1.117  0.26642    
## business     0.0767623  0.0842040   0.912  0.36389    
## engineer    -0.1847074  0.1837136  -1.005  0.31683    
## hsGPA        0.4520842  0.1055536   4.283 3.87e-05 ***
## ACT          0.0082167  0.0114974   0.715  0.47628    
## job19        0.0025063  0.0673896   0.037  0.97040    
## job20       -0.0454327  0.0875966  -0.519  0.60500    
## drive        0.0135408  0.0904015   0.150  0.88120    
## bike        -0.0233484  0.0698659  -0.334  0.73885    
## walk                NA         NA      NA       NA    
## voluntr     -0.0667434  0.0776006  -0.860  0.39155    
## PC           0.1352781  0.0620784   2.179  0.03138 *  
## greek        0.0750345  0.0652210   1.150  0.25236    
## car         -0.0571927  0.0732231  -0.781  0.43638    
## siblings    -0.0883061  0.1242033  -0.711  0.47855    
## bgfriend     0.0993964  0.0599499   1.658  0.10007    
## clubs        0.0932476  0.0611600   1.525  0.13012    
## skipped     -0.0889829  0.0323827  -2.748  0.00698 ** 
## alcohol      0.0181863  0.0262423   0.693  0.48971    
## gradMI       0.1783460  0.0898218   1.986  0.04948 *  
## fathcoll     0.0500783  0.0649191   0.771  0.44207    
## mothcoll    -0.0572119  0.0691025  -0.828  0.40944    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3234 on 114 degrees of freedom
## Multiple R-squared:  0.3858, Adjusted R-squared:  0.2457 
## F-statistic: 2.754 on 26 and 114 DF,  p-value: 0.0001204

다중 회귀분석 결과 hsGPA와 관련성이 높은 변수로는 hsGPA, PC, skipped, gradMI가 있는 것으로 나타난다. 따라서 종속변수로 colGPA, 독립변수로 hsGPA를 두는 모형에서는 PC, skipped, gradMI를 통제하는 것이 적절하다고 판단된다.

통제변수를 통한 회기모형 가정해본다.

lm_gpa_t <- lm(colGPA ~ hsGPA + PC + skipped + gradMI, data = gpa)
summary(lm_gpa_t)
## 
## Call:
## lm(formula = colGPA ~ hsGPA + PC + skipped + gradMI, data = gpa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.82493 -0.21630 -0.00151  0.23295  0.77130 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.37243    0.30501   4.500 1.45e-05 ***
## hsGPA        0.45684    0.08537   5.351 3.61e-07 ***
## PC           0.12356    0.05668   2.180   0.0310 *  
## skipped     -0.06425    0.02563  -2.507   0.0134 *  
## gradMI       0.17214    0.08133   2.116   0.0361 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3218 on 136 degrees of freedom
## Multiple R-squared:  0.2743, Adjusted R-squared:  0.2529 
## F-statistic: 12.85 on 4 and 136 DF,  p-value: 6.693e-09

통제변수 설정을 통한 회귀분석 결과 결정계수는 0.2743이며, 조정된 결정계수는 0.2529로 통제변수 설정 전의 수치보다 설명력이 증가했음을 알 수 있다. 통제변수의 개별 p-value는 모두 0.05 범위 내에서 유의한 것으로 나타난다.

##통제변수 설정 전/후 비교

stargazer(lm_gpa, lm_gpa_t,
            type = "text",
            keep.stat = c("n","rsq","adj.rsq"))
## 
## =========================================
##                  Dependent variable:     
##              ----------------------------
##                         colGPA           
##                   (1)            (2)     
## -----------------------------------------
## hsGPA           0.482***      0.457***   
##                 (0.090)        (0.085)   
##                                          
## PC                             0.124**   
##                                (0.057)   
##                                          
## skipped                       -0.064**   
##                                (0.026)   
##                                          
## gradMI                         0.172**   
##                                (0.081)   
##                                          
## Constant        1.415***      1.372***   
##                 (0.307)        (0.305)   
##                                          
## -----------------------------------------
## Observations      141            141     
## R2               0.172          0.274    
## Adjusted R2      0.166          0.253    
## =========================================
## Note:         *p<0.1; **p<0.05; ***p<0.01

비교

\[ y_i = 1.415 +0.482 x_i +e_i\] 통제변수 적용 전:

hsGPA 1단위 증가 - 0.482 만큼 colGPA 증가.

\[ y_i = 1.372 + 0.457x_i + 0.124p_i - 0.064s_i + 0.172g_i + e_i \] 통제변수 적용 후:

hsGPA 1단위 증가 - 0.457만큼 colGPA 증가.

PC 1단위 증가 - 0.124만큼 colGPA 증가.

skipped 1단위 증가 - 0.064만큼 colGPA 감소.

gradMI 1단위 증가 - 0.172만큼 colGPA 증가.