User Tools

Site Tools


interpretation_of_multiple_regression

This is an old revision of the document!


Interpretation of Multiple Regression (회귀분석결과 해석)

options(digits = 4)
HSGPA <- c(3.0, 3.2, 2.8, 2.5, 3.2, 3.8, 3.9, 3.8, 3.5, 3.1)
FGPA <-  c(2.8, 3.0, 2.8, 2.2, 3.3, 3.3, 3.5, 3.7, 3.4, 2.9)
SATV <-  c(500, 550, 450, 400, 600, 650, 700, 550, 650, 550)

scholar <- data.frame(FGPA, HSGPA, SATV) # collect into a data frame
describe(scholar) # provides descrptive information about each variable

corrs <- cor(scholar) # find the correlations and set them into an object called 'corrs'
corrs                 # print corrs

pairs(scholar)        # pairwise scatterplots
attach(scholar)
# freshman's gpa ~ hischool gpa + sat
mod.all <- lm(FGPA ~ HSGPA + SATV, data = scholar)
summary(mod.all)

m1 <- lm(FGPA ~ SATV, data = scholar)
summary(m1)
> options(digits = 4)
> HSGPA <- c(3.0, 3.2, 2.8, 2.5, 3.2, 3.8, 3.9, 3.8, 3.5, 3.1)
> FGPA <-  c(2.8, 3.0, 2.8, 2.2, 3.3, 3.3, 3.5, 3.7, 3.4, 2.9)
> SATV <-  c(500, 550, 450, 400, 600, 650, 700, 550, 650, 550)
> 
> scholar <- data.frame(FGPA, HSGPA, SATV) # collect into a data frame
> describe(scholar) # provides descrptive information about each variable
Error in describe(scholar) : could not find function "describe"
> 
> corrs <- cor(scholar) # find the correlations and set them into an object called 'corrs'
> corrs                 # print corrs
        FGPA  HSGPA   SATV
FGPA  1.0000 0.9226 0.8144
HSGPA 0.9226 1.0000 0.8745
SATV  0.8144 0.8745 1.0000
> 
> pairs(scholar)        # pairwise scatterplots
> attach(scholar)
The following objects are masked _by_ .GlobalEnv:

    FGPA, HSGPA, SATV

> # freshman's gpa ~ hischool gpa + sat
> mod.all <- lm(FGPA ~ HSGPA + SATV, data = scholar)
> summary(mod.all)

Call:
lm(formula = FGPA ~ HSGPA + SATV, data = scholar)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.2431 -0.1125 -0.0286  0.1269  0.2716 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 0.233102   0.456379    0.51    0.625  
HSGPA       0.845192   0.283816    2.98    0.021 *
SATV        0.000151   0.001405    0.11    0.917  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.192 on 7 degrees of freedom
Multiple R-squared:  0.851,	Adjusted R-squared:  0.809 
F-statistic: 20.1 on 2 and 7 DF,  p-value: 0.00126
> m1 <- lm(FGPA ~ SATV, data = scholar)
> summary(m1)

Call:
lm(formula = FGPA ~ SATV, data = scholar)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.2804 -0.1305 -0.0566  0.0350  0.6481 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.95633    0.54419    1.76   0.1169   
SATV         0.00381    0.00096    3.97   0.0041 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.27 on 8 degrees of freedom
Multiple R-squared:  0.663,	Adjusted R-squared:  0.621 
F-statistic: 15.8 on 1 and 8 DF,  p-value: 0.00412

위 linear modeling 에서 아래와 같은 선형모델을 얻는다.
y hat (FGPA) = 0.95633 + 0.00381 * SATV

  • 기본적으로 SAT 점수가 0 일 때 FGPA 는 0.95633 이다 (절편값).
  • SAT와 FGPA는 양의 상관관계를 갖는다 (계수 값이 양수이므로).
  • SAT 점수 단위가 한점이 올라갈 때마다 FGPA 점수가 0.00381이 올라간다.
  • SAT가 100점이 올라가면 GPA는 0.381이 올라간다.
  • 아래는 그것을 확인해보는 R 코드이다.
p <- data.frame(c(400,500,600,700,800))
colnames(p) <- "SATV"
pred <- predict(m1, p)
pred[2]-pred[1]
pred[5]-pred[4]
> p <- data.frame(c(400,500,600,700,800))
> colnames(p) <- "SATV"
> pred <- predict(m1, p)
> pred[2]-pred[1]
    2 
0.381 
> pred[5]-pred[4]
    5 
0.381 

아래는 원 데이터를 d 로 바꾼후 독립변인인 SATV를 평균점수를 0으로 하는 SATV_centered 로 바꾸어서 다시 regression을 한 것이다. m1_centered의 결과를 보면

  • SATV의 계수 값은 원래와 (m1) 같다.
  • 절편값은 3.09 인데, 이는 SATV 점수가 평균일 (mean(SATV) = 560) 때의 FGPA 값을 말한다.
d <- scholar
d$SATV_centered <- d$SATV - mean(d$SATV)
mean(d$SATV)
m1_centered <- lm(FGPA ~ SATV_centered, data=d)
summary(m1_centered)
> d <- scholar
> d$SATV_centered <- d$SATV - mean(d$SATV)
> mean(d$SATV)
[1] 560
> m1_centered <- lm(FGPA ~ SATV_centered, data=d)
> summary(m1_centered)

Call:
lm(formula = FGPA ~ SATV_centered, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.2804 -0.1305 -0.0566  0.0350  0.6481 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)    3.09000    0.08531   36.22  3.7e-10 ***
SATV_centered  0.00381    0.00096    3.97   0.0041 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.27 on 8 degrees of freedom
Multiple R-squared:  0.663,	Adjusted R-squared:  0.621 
F-statistic: 15.8 on 1 and 8 DF,  p-value: 0.00412

기울기 계수로 독립변인의 영향력 평가하기

SATV의 기울기 계수인 0.00381은 모델 직선의 (데이터를 관통하는) 위치를 알려주는 것이고 이 선을 중심으로 데이터들이 포진하게 된다. 그리고 선에서 데이터 까지의 거리가 에러 값이다. 또한 이 거리는 표준편차 값을 갖게 되고 이를 이용하여 표준오차 (standard error) 값을 구해볼 수 있다. 즉 이 표준오차 값은 에러값들이 선을 중심으로 얼마나 잘 포진되어 있는지를 보여주는 지표가 된다.

이 논리도 연구자는 계수 값을 표준오차 값으로 (standard error)값으로 나누고 이를 t 계산값으로 (t-calculated value) 삼아서 significance 테스트를 할 수 있다.

> m1 <- lm(FGPA ~ SATV, data = scholar)
> summary(m1)

Call:
lm(formula = FGPA ~ SATV, data = scholar)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.2804 -0.1305 -0.0566  0.0350  0.6481 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.95633    0.54419    1.76   0.1169   
SATV         0.00381    0.00096    3.97   0.0041 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.27 on 8 degrees of freedom
Multiple R-squared:  0.663,	Adjusted R-squared:  0.621 
F-statistic: 15.8 on 1 and 8 DF,  p-value: 0.00412

위에서 SATV의

  • 계수값은 (Estimate) 0.00381 이고 (a라고 하자) 이에 대한
  • standard error값은 0.00096 이다 (b라고 하자). 따라서
  • t값은 a/b 인 3.97 이 된다.
    • t-test의 원리는 그룹 간 차이를 (특별한 종류의) 표준편차로 (이것이 표준오차) 나눈 값임을 기억
  • 이 깂이 확률적으로 유의미한 지를 (significant) 보려면
  • pt(3.97, df = 8, lower.tail = F) 를 이용하여 probability를 구한다.
    • df 값은 n-2로 (변수의 갯수) 구한다.
  • 이 값은 0.002059 이고 이는 한 쪽 날개에 해당하는 probability이므로 2를 곱하여
  • 0.004119 를 구한다. 이것이 Pr(>|t|) 값인 0.0041 이다.

회귀분석의 조건

  1. Linearity. 선형관계를 전제로 한다. 즉 이차방정식, 삼차방정식, 로그방정식 등의 관계가 아닌 직선에 기초한 관계이다.
  2. Normality of residuals. 회귀식을 중심으로 한 에러값 혹은 잔차값의 분포는 정상적이어야 한다.
  3. Homoscedasticity of the residuals. 에러의 분산 값은 x 값의 range에서 공히 일정해야 한다. homoscedasticity
  4. No outlier. 숫자로 측정된 데이터의 경우 아웃라이어는 전체 평균치에 (statistics) 큰 영향을 미친다. 따라서 아웃라이어를 확인하고 제외할 필요가 있는지 확인해야 한다.

플로팅

library(visreg)
visreg(m1)

# load necessary libraries
library(ggpubr)

# create plot with regression line, regression equation and R^2
ggplot(scholar, aes(x = SATV, y = FGPA)) +
    geom_smooth(method = "lm") +
    xlim(380, 720) +
    geom_point() +
    theme_minimal()

Multiple regression 다중회귀분석

ggplot(scholar) +
  aes(x = SATV, y = FGPA, size = HSGPA) +
  geom_point() +
  scale_color_gradient() +
  labs(
    y = "First Year GPA",
    x = "SAT score",
    size = "Hi School GPA"
  ) +
  theme_minimal()

m2 <- lm(FGPA~SATV+HSGPA, data=scholar)
summary(m2)
> m2 <- lm(FGPA~SATV+HSGPA, data=scholar)
> summary(m2)

Call:
lm(formula = FGPA ~ SATV + HSGPA, data = scholar)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.2431 -0.1125 -0.0286  0.1269  0.2716 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 0.233102   0.456379    0.51    0.625  
SATV        0.000151   0.001405    0.11    0.917  
HSGPA       0.845192   0.283816    2.98    0.021 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.192 on 7 degrees of freedom
Multiple R-squared:  0.851,	Adjusted R-squared:  0.809 
F-statistic: 20.1 on 2 and 7 DF,  p-value: 0.00126

> 
> 

회귀계수 분서 Regression coefficients

Y hat (FGPA) = 0.000151 SATV + 0.845192 HSGPA

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 0.233102   0.456379    0.51    0.625  
SATV        0.000151   0.001405    0.11    0.917  
HSGPA       0.845192   0.283816    2.98    0.021 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
interpretation_of_multiple_regression.1684266765.txt.gz · Last modified: 2023/05/17 04:52 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki