전산통계학 15주차 강의 (마지막) - linear model, regression
코딩 공부/R-전산 통계학 2020. 1. 30. 21:18Regression (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)