## 단순 선형회귀분석 모의실험
# 미리 정해둔 모수( beta0, beta1, sigma )에 대해 생성한 데이터로 추정하고 맞는지 확인하기
beta0 = 2.5
beta1 = -3
sigma = 4
x = rnorm(100, 10, 4)
y <- beta0 + beta1 * x + rnorm(100, 0, sigma)
data <- data.frame( x,y )
plot(y~x, data)
# LSE
n=nrow(data) # obs
Sxx = sum( (x-mean(x))^2)
Sxy = sum((x-mean(x))*(y-mean(y)))
Beta1H = Sxy/Sxx
Beta0H = mean(y)-Beta1H*mean(x)
yH = Beta0H + Beta1H*x
s = sqrt(sum((y-yH)^2)/(n-2))
SE_Beta1H = s/sqrt(Sxx)
SE_Beta0H = s*sqrt(1/n + mean(x)^2 / Sxx )
summary(lm(y~x, data))
# 직접 구한 결과가 모델에서 구한 결과와 같음을 알 수 있다.
# 실제 정한 모수와 추정값이 꽤 다른 이유는 표준편차가 크기 때문이다.(sigma=4)
# 분산분석 in reg
# ANOVA table
SST = sum((y-mean(y))^2)
SSR = sum((yH-mean(y))^2)
SSE = SST-SSR
R2 = SSR/SST
cor(x,y)^2 # 단순선형회귀에서 R^2값은 상관계수의 제곱과 같음
MSR=SSR/1
MSE=SSE/(n-2)
F=MSR/MSE
pvalue=1-pf(F,1,n-2)
SS=c(SSR, SSE, SST)
df=c(1, n-2, n-1)
MS=c(MSR, MSE, 0)
F=c(F, 0, 0)
pvalue=c(pvalue, 0, 0)
AOV_table=cbind(SS, df, MS, F, pvalue)
summary(lm(y~x, data))
## 잔차 분석
e=y-yH
mean(e)
sd(e)
hist(e)
plot(y,e)
## plotting
mod <- lm(y~x, data)
plot(mod)
'분석 > 통계' 카테고리의 다른 글
결측치값 처리에 대하여 (0) | 2018.05.04 |
---|---|
T-test와 정규성을 따르지 않는 자료에 대한 강건함(Robustness) (0) | 2018.04.21 |
[스크랩] 딥러닝 연습을 위한 여러가지 데이터 셋 (0) | 2018.04.05 |
learning statistics on YouTube (0) | 2018.04.03 |
통계 관련 구직 인터뷰 (0) | 2018.03.20 |