Nothing
### R code from vignette source 'selection.Rnw'
###################################################
### code chunk number 1: selection.Rnw:68-69
###################################################
options( prompt = "R> ", ctinue = "+ " )
###################################################
### code chunk number 2: code:t2generate
###################################################
set.seed(0)
library("sampleSelection")
library("mvtnorm")
eps <- rmvnorm(500, c(0,0), matrix(c(1,-0.7,-0.7,1), 2, 2))
xs <- runif(500)
ys <- xs + eps[,1] > 0
xo <- runif(500)
yoX <- xo + eps[,2]
yo <- yoX*(ys > 0)
###################################################
### code chunk number 3: code:t2summary
###################################################
summary( selection(ys~xs, yo ~xo))
###################################################
### code chunk number 4: selection.Rnw:701-702
###################################################
m <- selection(ys~xs, yo ~xo)
###################################################
### code chunk number 5: selection.Rnw:720-731
###################################################
par(mar=c(3,3,0,0) + 0.1,
mgp=c(2,1,0))
pch <- c(1, 16)
plot(xo, yoX, pch=pch[1 + ys], cex=0.5, lwd=0.3)
abline(a=0, b=1, lty=1)
# True dependence
abline(a=coef(m)[3], b=coef(m)[4], lty=2)
# Heckman's model
cf <- coef(lm(yo ~ xo, subset=ys==1))
abline(a=cf[1], b=cf[2], lty=3)
# OLS
###################################################
### code chunk number 6: selection.Rnw:743-746
###################################################
yoX <- xs + eps[,2]
yo <- yoX*(ys > 0)
summary(selection(ys ~ xs, yo ~ xs))
###################################################
### code chunk number 7: selection.Rnw:765-776
###################################################
par(mar=c(3,3,0,0) + 0.1,
mgp=c(2,1,0))
pch <- c(1, 16)
plot(xs, yoX, pch=pch[1 + ys], cex=0.5, lwd=0.3)
abline(a=0, b=1, lty=1)
# True dependence
abline(a=coef(m)[3], b=coef(m)[4], lty=2)
# Heckman's model
cf <- coef(lm(yo ~ xs, subset=ys==1))
abline(a=cf[1], b=cf[2], lty=3)
# OLS
###################################################
### code chunk number 8: selection.Rnw:802-807
###################################################
xs <- runif(500, -5, 5)
ys <- xs + eps[,1] > 0
yoX <- xs + eps[,2]
yo <- yoX*(ys > 0)
summary( selection(ys ~ xs, yo ~ xs))
###################################################
### code chunk number 9: selection.Rnw:809-810
###################################################
m <- selection(ys ~ xs, yo ~ xs)
###################################################
### code chunk number 10: selection.Rnw:823-834
###################################################
par(mar=c(3,3,0,0) + 0.1,
mgp=c(2,1,0))
pch <- c(1, 16)
plot(xs, yoX, pch=pch[1 + ys], cex=0.5, lwd=0.3)
abline(a=0, b=1, lty=1)
# True dependence
abline(a=coef(m)[3], b=coef(m)[4], lty=2)
# Heckman's model
cf <- coef(lm(yo ~ xs, subset=ys==1))
abline(a=cf[1], b=cf[2], lty=3)
# OLS
###################################################
### code chunk number 11: selection.Rnw:849-860
###################################################
set.seed(0)
vc <- diag(3)
vc[lower.tri(vc)] <- c(0.9, 0.5, 0.1)
vc[upper.tri(vc)] <- vc[lower.tri(vc)]
eps <- rmvnorm(500, c(0,0,0), vc)
xs <- runif(500)
ys <- xs + eps[,1] > 0
xo1 <- runif(500)
yo1 <- xo1 + eps[,2]
xo2 <- runif(500)
yo2 <- xo2 + eps[,3]
###################################################
### code chunk number 12: selection.Rnw:875-876
###################################################
summary(selection(ys~xs, list(yo1 ~ xo1, yo2 ~ xo2)))
###################################################
### code chunk number 13: selection.Rnw:886-897
###################################################
set.seed(5)
eps <- rmvnorm(1000, rep(0, 3), vc)
eps <- eps^2 - 1
xs <- runif(1000, -1, 0)
ys <- xs + eps[,1] > 0
xo1 <- runif(1000)
yo1 <- xo1 + eps[,2]
xo2 <- runif(1000)
yo2 <- xo2 + eps[,3]
summary(selection(ys~xs, list(yo1 ~ xo1, yo2 ~ xo2), iterlim=20))
###################################################
### code chunk number 14: code:t5chi_woER
###################################################
set.seed(6)
xs <- runif(1000, -1, 1)
ys <- xs + eps[,1] > 0
yo1 <- xs + eps[,2]
yo2 <- xs + eps[,3]
summary(tmp <- selection(ys~xs, list(yo1 ~ xs, yo2 ~ xs), iterlim=20))
###################################################
### code chunk number 15: selection.Rnw:929-990
###################################################
EUlower <- function(alpha) {
alpha[alpha >= 1] <- NA
alpha <- sqrt(-alpha + 1)
EUalpha <- ss^2 - 2*ss*alpha*dnorm(alpha/ss)/(1 - 2*pnorm(-alpha/ss))
s1s^2/ss^2*EUalpha + s1^2 - s1s^2/ss^2 - 1
}
EUupper <- function(alpha) {
alpha[alpha >= 1] <- 1
alpha <- sqrt(-alpha + 1)
EUalpha <- (ss*alpha*dnorm(alpha/ss) + ss^2*(1 - pnorm(alpha/ss)))/(1 - pnorm(alpha/ss))
s2s^2/ss^2*EUalpha + s2^2 - s2s^2/ss^2 - 1
}
Nlower <- function(alpha) {
alpha <- -alpha
-Ns1s*dnorm(alpha)/pnorm(alpha)
}
Nupper <- function(alpha) {
alpha <- -alpha
Ns2s*dnorm(-alpha)/pnorm(-alpha)
}
ss <- sqrt(vc[1,1])
s1 <- sqrt(vc[2,2])
s2 <- sqrt(vc[3,3])
s1s <- vc[1,2]
s2s <- vc[1,3]
Ns1s <- coef(tmp)["sigma1"]*coef(tmp)["rho1"]
Ns2s <- coef(tmp)["sigma2"]*coef(tmp)["rho2"]
hatb1O <- coef(tmp)[c("XO1(Intercept)", "XO1xs")]
hatb2O <- coef(tmp)[c("XO2(Intercept)", "XO2xs")]
es <- eps[,1]
e1 <- eps[,2]
e2 <- eps[,3]
ex <- seq(-5, 5, length=200)
ey <- cbind(EUlower(ex), EUupper(ex),
## -31*Nupper(cbind(1, ex)%*%hatb1O), 5.5*Nlower(cbind(1,ex)%*%hatb2O),
-s1s*dnorm(-ex)/pnorm(-ex),
s2s*dnorm(ex)/pnorm(ex)
)
mcy <- matrix(0, length(ex), 2)
for(i in seq(length=nrow(mcy))) {
mcy[i,1] <- mean(e1[es < -ex[i]])
mcy[i,2] <- mean(e2[es > -ex[i]])
}
par(cex=0.8, mar=c(3,3,0,0) + 0.1, mgp=c(2,1,0))
matplot(ex, ey, type="l", lty=c(1,1,2,2,3,3), col=1,
xlab=expression(x^S), ylab="",
ylim=c(-1.5,2.5))
abline(v=-1,lty=3)
abline(v=1, lty=3)
# matpoints(ex, mcy, pch=c(1,2), cex=0.5, col=1)
axis(4)
text(-3.5, 0.8,
expression(paste("correct ")*E*group("[", epsilon^{O2}*group("|", epsilon^S > -bold(beta)^S*minute*bold(x)^S, ""), "]")))
text(-3.6, -0.4,
expression(paste("correct ")*E*group("[", epsilon^{O1}*group("|", epsilon^S < -bold(beta)^S*minute*bold(x)^S, ""), "]")))
text(-2.5, 1.5,
expression(paste("assumed ")*E*group("[", epsilon^{O2}*group("|",
epsilon^S > -bold(beta)^S*minute*bold(x)^S, ""), "]")), pos = 4 )
text(1, -1.4,
expression(paste("assumed ")*E*group("[", epsilon^{O1}*group("|",
epsilon^S < -bold(beta)^S*minute*bold(x)^S, ""), "]")), pos = 2 )
###################################################
### code chunk number 16: selection.Rnw:1012-1014
###################################################
coef(summary(lm(yo1~xs, subset=ys==0)))
coef(summary(lm(yo2~xs, subset=ys==1)))
###################################################
### code chunk number 17: greene22.8start
###################################################
data( "Mroz87" )
Mroz87$kids <- ( Mroz87$kids5 + Mroz87$kids618 > 0 )
###################################################
### code chunk number 18: greene22.8TwoStep
###################################################
greeneTS <- selection( lfp ~ age + I( age^2 ) + faminc + kids + educ,
wage ~ exper + I( exper^2 ) + educ + city,
data = Mroz87, method = "2step" )
###################################################
### code chunk number 19: greene22.8ML
###################################################
greeneML <- selection( lfp ~ age + I( age^2 ) + faminc + kids + educ,
wage ~ exper + I( exper^2 ) + educ + city, data = Mroz87,
maxMethod = "BHHH", iterlim = 500 )
###################################################
### code chunk number 20: cameron16.6start
###################################################
data( "RandHIE" )
subsample <- RandHIE$year == 2 & !is.na( RandHIE$educdec )
selectEq <- binexp ~ logc + idp + lpi + fmde + physlm + disea +
hlthg + hlthf + hlthp + linc + lfam + educdec + xage + female +
child + fchild + black
outcomeEq <- lnmeddol ~ logc + idp + lpi + fmde + physlm + disea +
hlthg + hlthf + hlthp + linc + lfam + educdec + xage + female +
child + fchild + black
###################################################
### code chunk number 21: cameron16.6TwoStep
###################################################
rhieTS <- selection( selectEq, outcomeEq, data = RandHIE[ subsample, ],
method = "2step" )
###################################################
### code chunk number 22: cameron16.6ML
###################################################
rhieML <- selection( selectEq, outcomeEq, data = RandHIE[ subsample, ] )
###################################################
### code chunk number 23: Greene22.8NoConvergence
###################################################
greeneStart <- selection( lfp ~ age + I( age^2 ) + faminc + kids + educ,
wage ~ exper + I( exper^2 ) + educ + city,
data = Mroz87, start = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.9))
cat( greeneStart$message )
coef( summary( greeneStart ) )[ "rho", ]
###################################################
### code chunk number 24: Greene22.8SANN
###################################################
set.seed(0)
greeneSANN <- selection( lfp ~ age + I( age^2 ) + faminc + kids + educ,
wage ~ exper + I( exper^2 ) + educ + city,
data = Mroz87, start = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.9),
maxMethod="SANN", parscale = 0.001 )
greeneStartSANN <- selection( lfp ~ age + I( age^2 ) + faminc + kids + educ,
wage ~ exper + I( exper^2 ) + educ + city,
data = Mroz87, start = coef( greeneSANN ) )
cat( greeneStartSANN$message )
###################################################
### code chunk number 25: selection.Rnw:1213-1215
###################################################
logLik( greeneML )
logLik( greeneStartSANN )
###################################################
### code chunk number 26: tobit_tobit2
###################################################
set.seed(0)
x <- runif(1000)
y <- x + rnorm(1000)
ys <- y > 0
tobitML <- selection(ys~x, y~x)
cat( tobitML$message )
coef( summary( tobitML ) )[ "rho", ]
###################################################
### code chunk number 27: tobit_tobit2_summary
###################################################
tobitTS <- selection(ys~x, y~x, method="2step")
coef( summary( tobitTS ) )[ "rho", ]
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.