year <- c(2000:2004)
year

value <- c(2.3, 3.2, 5.6, 5.4, 5.8) # 약간 선형으로 증가하게 만듬

# 기본 plot
plot(year, value)

# 대략적인 2005년도 값 추정하기 위해 선을 그리는데, 오차범위(잔차, residual)가 존재한다
# 각 점들과 선의 오차가 최소로 되도록 선을 긋는 것을 선형모델 Linear Regression model이라고 한다.
lm(value ~ year) # y ~ X

# 오차를 최소로하는 선을 긋는 lm()의 결과값은  절편과 기울기 +@(가 생김
fit <- lm(value ~ year)
fit

# linear regression model의 선을 그래프에 추가
abline(fit)
image

# y가 잘리니까 그래프의 y축 범위 늘려주기
plot(year, value,
      ylim = c(0, 10))

# 선 추가 + 색 추가
abline(fit, col="red")
image

# *** 선<-> 점들 간에 차이인 잔차(residual)을 최소로 하는 선이 그어진다. ***

# *** lm()결과에서 성분들 뽑아보기***
fit$coefficients[[1]] # 1) 절편값
fit$coefficients[[2]] # 2) 기울기
fit$residuals # 3) x 5개의 y값에 대한 선들과의 잔차(y-선)

# *** lm()이후 결과값 fit에 대해 summary()를 하는 버릇을 가지자 ***
# *** 선형 모델이 말이 된다/안된다를 판단하는 대략 기준
# 1) summary()시 *가 찍혀있는지/없는지  2) p-value(선형모델이 우연히 나올 확률*)가 0.05이하인지
summary(fit)


#### 2005 - 100값으로 확 증가하는 1개의 점 추가하고 fit결과를 summary()해보기 ####
year <- c(2000:2005)
value <- c(2.3, 3.2, 5.6, 5.4, 5.8, 100) # 약간 선형으로 증가하게 만듬

fit <- lm(value ~ year)

plot(year, value,
      ylim = c(0, 150))


abline(fit, col="red")

summary(fit) # 1) *가 없어지고 2) p-value가 0.05보다 훨씬 큰 0.13이 나옴. --> 데이터를 설명 잘 못하는 모델이다.
image


#### 더 직선에 가깝게 y값을 조절해보자.
year <- c(2000:2004)
value <- c(2.3, 3.2, 4.9, 5.4, 5.8) # 2003의 값을 더욱 선형에 가깝게 조절

fit <- lm(value ~ year)

plot(year, value,
      ylim = c(0, 10))


abline(fit, col="red")

summary(fit) # 1) ** 2개 2) p-value : 0.006 => 이 선형모델은 우연x 데이터를 잘 설명하는 모델이며 받아들일 수 있다.
image


# ***받아들인 모델을 가지고 다음 값 추정해보기****
# 선형이므로 fit의 결과값 2개인 절편/기울기로  선형식만들어 대입한다( y = ax+b)
predict <- fit$coefficients[[2]] * (2015) + fit$coefficients[[1]]

plot(year, value,
      ylim = c(0, 20),
      xlim = c(2000, 2020))
abline(fit, col="red")


# 예측점 추가
points(2015, predict, col="blue")
image

+ Recent posts