데이터과학

[TIL]lm()함수 탐구생활

화공쟁이 2020. 7. 8. 22:10

anova(), shapiro.test()

anova함수를 사용하여 r프로그래밍 하던중 계산이 순조롭게 이루어지지 않고 자꾸 에러가 난다. 도움말을 찾아보니 anova 함수에 사용하는 인수는 model fitting 함수의 결과값이 들어가야 한단다. lm()은 linear model fitting에 사용되는 함수니까 조건을 만족하고, 드디어 에러가 멈췄다.

한편 data가 정규분포를 따르는 지를 확인하는 shapiro.test()는 숫자가 아닌 인수를 처리하지 못한다. 얼핏 교재의 프로그램을 보다가 aov()라는 model fitting 함수가 보여서 잠시 착각했는데 resid()를 이용하여 수치 data로 변환한 것에 주목

market <-  read.table("market-1.txt", header=T)
market.lm = lm(Y ~ X, data=market)
anova(market.lm)
## Analysis of Variance Table
## 
## Response: Y
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## X          1 485.57  485.57   192.9 3.554e-09 ***
## Residuals 13  32.72    2.52                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#anova 분석의 또다른 방법
out = aov(Y~X, data=market) 
out
## Call:
##    aov(formula = Y ~ X, data = market)
## 
## Terms:
##                        X Residuals
## Sum of Squares  485.5726   32.7234
## Deg. of Freedom        1        13
## 
## Residual standard error: 1.586563
## Estimated effects may be unbalanced
summary(out)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## X            1  485.6   485.6   192.9 3.55e-09 ***
## Residuals   13   32.7     2.5                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
shapiro.test(resid(out))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(out)
## W = 0.93448, p-value = 0.318

lm() 함수 사용 사례

market <-  read.table("market-1.txt", header=T)
market.lm = lm(Y ~ X, data=market)
market.lm
## 
## Call:
## lm(formula = Y ~ X, data = market)
## 
## Coefficients:
## (Intercept)            X  
##      0.3282       2.1497
summary(market.lm)
## 
## Call:
## lm(formula = Y ~ X, data = market)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.02908 -1.35349 -0.05685  0.98903  2.51517 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.3282     1.4302   0.229    0.822    
## X             2.1497     0.1548  13.889 3.55e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.587 on 13 degrees of freedom
## Multiple R-squared:  0.9369, Adjusted R-squared:  0.932 
## F-statistic: 192.9 on 1 and 13 DF,  p-value: 3.554e-09
names(market.lm)
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "xlevels"       "call"          "terms"         "model"