# 계량경제학 강의 R 코드

# 제3장

# 3.1 자료

url <- "http://econ.korea.ac.kr/~chirokhan/book/data/co2gdp2005.csv"
ekc <- read.csv(url)
datadir <- "http://econ.korea.ac.kr/~chirokhan/book/data"
ekc <- read.csv(file.path(datadir,"co2gdp2005.csv"))
names(ekc)
nrow(ekc)
head(ekc)
summary(ekc)
datadir <- "http://econ.korea.ac.kr/~chirokhan/book/data"
serv <- read.csv(file.path(datadir,"serv.csv"))
nrow(serv)
summary(serv)
plot(finind~servpc,data=serv,subset=servpc<28)

# 3.3 최소제곱법

#install.packages("quantreg")
library(quantreg)
serv1 <- serv[serv$servpc<28,]
plot(finind~servpc,data=serv1,pch=19)
abline(lm(finind~servpc,data=serv1)$coef,lty=1)
abline(rq(finind~servpc,data=serv1)$coef,lty=2)

# 3.4 짧은 예제들

# 공무원 비율과 재정자립도

datadir <- "http://econ.korea.ac.kr/~chirokhan/book/data"
serv <- read.csv(file.path(datadir,"serv.csv"))
serv1 <- serv[serv$servpc<28,]
nrow(serv1)
lm(log(finind)~log(servpc),data=serv1)
x <- log(serv1$servpc)
y <- log(serv1$finind)
xd <- x-mean(x)
b1 <- sum(xd*y)/sum(xd^2)
b0 <- mean(y)-b1*mean(x)
c(b0,b1)
plot(log(finind)~log(servpc),data=serv1)
abline(lm(log(finind)~log(servpc),data=serv1))

# 소비함수

data(Consumption,package="Ecdat")
colnames(Consumption)
lm(ce~yd,data=Consumption)
plot(ce~yd,data=Consumption,pch=19)
abline(lm(ce~yd,data=Consumption))

# 우주의 나이

#install.packages("gamair")
data(hubble,package="gamair")
hubble[1:5,]
plot(y~x, data=hubble, xlab="Distance", ylab="Velocity")
#install.packages("ggplot2")
library(ggplot2)
qplot(x,y, data=hubble, xlab="Distance", ylab="Velocity")
ols <- lm(y~x-1,data=hubble)
ols
p <- qplot(x,y, data=hubble, xlab="Distance", ylab="Velocity")
p + geom_abline(intercept=0,slope=ols$coef[1],lty="dashed")

# 담배 가격과 판매량

data(Cigar,package="Ecdat")
names(Cigar)
sum(Cigar$year==90)
lm(log(sales)~log(price),data=Cigar,subset=year==90)

# 3.6 맞춘값과 잔차

yhat <- b0 + b1*x
uhat <- y - yhat
ols <- lm(log(finind)~log(servpc),data=serv1)
serv1$yhat <- ols$fitted.values
serv1$uhat <- ols$residuals
serv1$yhat <- ols$fit
serv1$uhat <- ols$resid
plot(log(finind)~log(servpc),data=serv1)
abline(ols)
points(yhat~log(servpc),data=serv1,pch=19,col="blue")
with(serv1,sum(uhat))
with(serv1,sum(log(servpc)*uhat))
with(serv1,sum(yhat*uhat))

# 3.9 R제곱: 모형의 설명력

datadir <- "http://econ.korea.ac.kr/~chirokhan/book/data"
serv <- read.csv(file.path(datadir,"serv.csv"))
serv1 <- serv[serv$servpc<28,]
ols <- lm(log(finind)~log(servpc),data=serv1)
summary(ols)
summary(ols)$r.sq
SST <- with(serv1, sum((log(finind)-mean(log(finind)))^2))
SSR <- sum(ols$resid^2)
1-SSR/SST