ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] 단순회귀분석 (Simple Linear Regression) 실습
    Data Analysis/R 2023. 1. 10. 16:00
    반응형

    단순선형회귀분석 개념은 아래 링크를 참고해주세요.

    https://summerindata.tistory.com/14

     

    [통계] 회귀분석 기본 개념 - 단순회귀분석 (Simple Linear Regression)

    단순선형회귀모형 $Y=\beta _{0} +\beta _{1}X + \varepsilon , \epsilon _{i} ~ iid\ N(0,\ \sigma ^{2})$ 절편 ( $\beta _{0}$ ) : X = 0일때 Y의 평균값 기울기 $\beta _{1}$ ​ : X의 한 단위 변화에 대한 Y의 변화량 오차(error)는

    summerindata.tistory.com

     

    데이터 다운로드

     

    P031.txt
    0.00MB

    이 데이터는 Units(X) : 수리될부품의 수 , Minutes(Y) : 수리시간으로 이루어진 데이터 입니다.

     

     

    데이터 불러오기

     

    setwd("폴더경로")
    
    ## 상관분석 ##
    p031<-read.table("P031.txt", header=T)
    names(p031)<-c("y", "x") #변수명 변경
    p031
    # 결과
    # y  x
    # 1   23  1
    # 2   29  2
    # 3   49  3
    # 4   64  4
    # 5   74  4
    # 6   87  5
    # 7   96  6
    # 8   97  6
    # 9  109  7
    # 10 119  8
    # 11 149  9
    # 12 145  9
    # 13 154 10
    # 14 166 10

     

    x와 y의 상관관계

     

    attach(p031)
    plot(x,y) #직선적인 관계보임
    cor(x,y)
    # 결과
    # [1] 0.9936987  #강한 양의 상관관계
    
    cor(p031) # matrix 형태로 나타내기
    # 결과
    # y         x
    # y 1.0000000 0.9936987
    # x 0.9936987 1.0000000

    x와 y가 직선적인 관계를 보이고, 상관계수가 약 0.99로 강한 양의 상관관계를 보인다고 할 수 있습니다.

     

    두 변수간의 직선적인 관계가 있음을 확인했고, 그 직선식을 추정하는 단순선형회귀분석을 진행하겠습니다.

     

    단순선형회귀분석

     

    fit<-lm(y~x, data=p031) #linear model
    fit  #추정값
    # 결과
    # Coefficients:
    #   (Intercept)        x
    # 4.162         15.509
    
    summary(fit)
    # 결과
    # Call:
    #   lm(formula = y ~ x, data = p031)
    # 
    # Residuals:
    #   Min      1Q  Median      3Q     Max 
    # -9.2318 -3.3415 -0.7143  4.7769  7.8033 
    # 
    # Coefficients:
    #   Estimate Std. Error t value Pr(>|t|)    
    # (Intercept)    4.162      3.355    1.24    0.239    
    # x             15.509      0.505   30.71 8.92e-13 ***
    #   ---
    #   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    # 
    # Residual standard error: 5.392 on 12 degrees of freedom
    # Multiple R-squared:  0.9874,	Adjusted R-squared:  0.9864 
    # F-statistic: 943.2 on 1 and 12 DF,  p-value: 8.916e-13
    
    ##필요한 부분 불러오기
    names(fit) #요소 확인
    # 결과
    # [1] "coefficients"  "residuals"     "effects"       "rank"          "fitted.values"
    # [6] "assign"        "qr"            "df.residual"   "xlevels"       "call"         
    # [11] "terms"         "model"  
    
    fit$coefficients
    fit$residuals
    fit$fitted.values

     

    회귀모수에 대한 가설검정
     
     
    $ \hat{y} =  4.162  +  15.509 \hat{x} $

     

    summary 함수를 써서 위의 추정식을 얻었습니다.

     

    $H_{0}:\beta _{1} = \beta _{1}^{*} \ vs \ H_{1}:\beta _{1} \neq  \beta _{1}^{*}$​​
    $H_{0}:\beta _{0} = \beta _{0}^{*} \ vs \ H_{1}:\beta _{0} \neq  \beta _{0}^{*}$​​

     

    회귀 모수에 대한 p-value 도 각각 8.92e-13 ***, 0.239 으로 유의수준 0.05하에 귀무가설(H0)을 기각하고,

    X가 Y에 대하여 통계적으로 유의한 변수임을 확인했습니다.

    #추정식 그래프 그리기
    plot(x, y, xlab="Units",ylab="Minutes", xlim=c(0, 12), ylim=c(0, 180))
    abline(fit) #추정된 회귀선

    fit함수로 모델을 적합하여 회귀식을 추정해 보았습니다.

    추정된 회귀식은 abline 함수를 사용해서 plot 함수 그림 위에 나타냈습니다.

     

    모형에 대한 적합성 측정

     

    · 분산분석 (ANOVA)

    ##  단순선형회귀분석: ANOVA ##
    anova(fit)
    # 결과
    # Analysis of Variance Table
    # 
    # Response: y
    # Df  Sum Sq Mean Sq F value    Pr(>F)    
    # x          1 27419.5 27419.5   943.2 8.916e-13 ***
    #   Residuals 12   348.8    29.1                      
    # ---
    #   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

    MSR이 MSE 대비 큰 값을 가지고 이에 따른 F통계량 값은 943.2를 가지고,

    이에 해당되는 p-value는 8.916e-13 ***으로 매우 작은 값을 가집니다.

    따라서 적합된 직선식이 유의미하다고 할 수 있습니다.

    · 결정계수(R-squared)

    결정계수 값도 0.9874로 1에 근접한 매우 큰 값을 가지므로

    추정한 회귀식이 적합하다고 할 수 있습니다.

    수정된 결정계수는 단순회귀분석에서는 의미를 가지지 않고, 다중회귀분석에서 의미있으므로 생략하겠습니다.

     

    예측 : x가 주어졌을 때 y값 ​

     

    ## 단순선형회귀 분석: 예측 ##  
    new <- data.frame(x = seq(1, 4, by=1))
    
    predict(fit, new)
    # 결과
    # 1        2        3        4 
    # 19.67043 35.17920 50.68797 66.19674

     

    반응형

    댓글

Designed by Tistory.