전산통계학 15주차 강의 (마지막) - linear model, regression

코딩 공부/R-전산 통계학 2020. 1. 30. 21:18
반응형

Regression  (linear model, lm)

head(mtcars)
dim(mtcars)

fit <- lm(mpg~wt, data=mtcars)             "입력방법 : y벡터~x벡터"
fit                                "b0=intercept 하고, b1만 나온다"
fit$coefficients       
fit$residuals


<첨언>

403p. 데이터를 이용해서 lm 분석을 해봅시다


x <- c(1.35, 1.9, 1.7, 1.8, 1.3,2.05, 1.6, 1.8, 1.85, 1.4)
y <- c(17.9, 16.5, 16.4, 16.8, 18.8, 15.5, 17.5, 16.4, 15.9, 18.3)
example <- lm(y~x)
example


example$"coefficients"[1]
example$residuals                       ;  "yi-(yi hat) 을 의미합니다"
y[2]-example$"residuals"[2]        ; "y2 hat 을 의미합니다"
y[2]-example$"fitted.values"[2]  ; "yi-(yi hat) 을 의미합니다"


example$df.residual                       ; "degree of freedom = n-2 = 8"


summary(example)                         ; "B0 =0 인지 아닌지 테스트 | B1 =0 인지 아닌지 테스트"
names(summary(example))
summary(example)$r.squared        ; "R^2 을 의미합니다 425p."


<첨언>

mtcars 의 데이터를 이용해서 각 유의수준에 대한 신뢰구간을 찾는 법을 알아봅시다
fit <- lm(mpg~wt, data=mtcars)
confint(fit)                                  
confint(fit, level=0.9)


summary(fit)$sigma


<문제>

다음의 명령어 (함수) 를 보고 어떤 것을 구하기 위한 함수였을지 생각해봅시다 (x0 가 변수임을 생각해보면 쉬울 거에요)

 

x <- c(1.35, 1.9, 1.7, 1.8, 1.3, 2.05, 1.6, 1.8, 1.85, 1.4)
y <- c(17.9, 16.5, 16.4, 16.8, 18.8, 15.5, 17.5, 16.4, 15.9, 18.3)

c.i <- function (x,y,x0,level) {
  n <- length(y)
  model <- lm(y~x)
  b0 <- model$"coefficients"[1] ; b1 <- model$"coefficients"[2]
  df <- model$df.residual
  sxx=sum((x-mean(x))^2) ; syy=sum((y-mean(y))^2) ; sxy=sum((x-mean(x))*(y-mean(y)))
  sse <- syy-b1*sxy 
  s <- sqrt(sse/(n-2))
  
  lowerbound <- b0+b1*x0-qt((1-level)/2,df)*s*sqrt(1+1/n+(x0-mean(x))^2/sxx)
  upperbound <- b0+b1*x0+qt((1-level)/2,df)*s*sqrt(1+1/n+(x0-mean(x))^2/sxx)
  
  CI <- c()
  CI <- c(lowerbound,upperbound)
  CI
}
c.i(x,y,x0=1.7,level=0.90)

TAG