# 계량경제학 강의 R 코드

# 제17장 검열된 자료와 표본선택

# 17.1 검열된 자료

# 예제 17.1 이항반응모형을 이용한 검열자료 모형의 추정

library(Ecdat)
data(Tobacco)
Tobacco$tobyes <- as.numeric(Tobacco$stobacco>0)
mean(Tobacco$tobyes)
model <- tobyes~nkids+nkids2+nadults+lnx+age
pbt <- glm(model,data=Tobacco,family=binomial(link='probit'))
summary(pbt)
z0 <- z1 <- z2 <- Tobacco
z0$nkids2 <- 0
z1$nkids2 <- 1
z2$nkids2 <- 2
mean(predict(pbt,z0,type='r'))
mean(predict(pbt,z1,type='r'))
mean(predict(pbt,z2,type='r'))
z1$nkids2 <- Tobacco$nkids2+1
mean(predict(pbt,z1,type='r')-predict(pbt,type='r'))
pbt$coef['lnx']*mean(dnorm(predict(pbt,type='l')))*0.1

# 17.2 검열된 자료와 OLS

# 예제 17.2 검열된 자료의 OLS 추정

model <- stobacco~nkids+nkids2+nadults+lnx+age
ols <- lm(model,data=Tobacco)
summary(ols)

# 예제 17.3 검열된 자료를 절단한 후 OLS 회귀

trunc <- lm(model,data=Tobacco,subset=stobacco>0)
summary(trunc)

# 17.3 토빗 추정

# 예제 17.4 담배 지출액 비중에 관한 토빗 추정

library(AER)
model <- stobacco~nkids+nkids2+nadults+lnx+age
tobinfit <- tobit(model,data=Tobacco,left=0)
summary(tobinfit)

# 예제 17.5 토빗 추정에서 양의 값을 갖는 대상의 평균 한계효과

Tobacco$xb <- predict(tobinfit,type='lp')
Tobacco$xb1 <- Tobacco$xb/tobinfit$scale
Tobacco$imr <- with(Tobacco, dnorm(xb1)/pnorm(xb1))
b1 <- tobinfit$coef['lnx']
b1*mean(1-with(Tobacco, imr*(xb1+imr)))

# 예제 17.6 토빗 추정에서 평균 한계효과

b1*mean(pnorm(Tobacco$xb1))

# 17.4 표본선택

# 예제 17.7 표본선택

library(sampleSelection)
data(Mroz87)
seleq <- lfp~nwifeinc+educ+exper+I(exper^2)+age+kids5+kids618
outcomeeq <- log(wage)~educ+exper+I(exper^2)
twostep <- heckit(seleq,outcomeeq,data=Mroz87)
summary(twostep)
summary(lm(outcomeeq,data=Mroz87,subset=lfp==1))
mle <- heckit(seleq,outcomeeq,data=Mroz87,method="ml")
summary(mle)