# NOT RUN {
# Takes long time to run, as it makes a call to the function ml.gb2
# }
# NOT RUN {
library(laeken)
data(eusilc)
# Personal income
inc <- as.vector(eusilc$eqIncome)
# Sampling weights
w <- eusilc$rb050
# Data set
d <- data.frame(inc, w)
d <- d[!is.na(d$inc),]
# Truncate at 0
d <- d[d$inc > 0,]
inc <- d$inc
w <- d$w
# ML fit, full log-likelihood
fitf <- ml.gb2(inc, w)$opt1
# Estimated parameters
af <- fitf$par[1]
bf <- fitf$par[2]
pf <- fitf$par[3]
qf <- fitf$par[4]
gb2.par <- c(af, bf, pf, qf)
# Empirical indicators
indicEMP <- main.emp(inc, w)
indicEMP <- c(indicEMP[1],indicEMP[3:6])
indicE <- round(indicEMP, digits=3)
# Nonlinear fit
nn <- nlsfit.gb2(indicEMP[1,3:6],indicEMP[3:6])
an <- nn[[1]][1]
bn <- nn[[1]][2]
pn <- nn[[1]][3]
qn <- nn[[1]][4]
# GB2 indicators
indicNLS <- c(main.gb2(0.6, an, bn, pn, qn)[1], main.gb2(0.6, an, bn, pn, qn)[3:6])
indicML <- c(main.gb2(0.6, af, bf, pf, qf)[1], main.gb2(0.6, af, bf, pf, qf)[3:6])
indicN <- round(indicNLS, digits=3)
indicM <- round(indicML, digits=3)
# Likelihoods
nlik <- loglp.gb2(inc, an, bn, pn, qn, w)
mlik <- loglp.gb2(inc, af, bf, pf, qf, w)
# Results
type=c("Emp. est", "NLS", "ML full")
results <- data.frame(type=type,
median=c(indicE[1], indicN[1], indicM[1]),
ARPR=c(indicE[2], indicN[2], indicM[2]),
RMPG=c(indicE[3], indicN[3], indicM[3]),
QSR =c(indicE[4], indicN[4], indicM[4]),
GINI=c(indicE[5], indicN[5], indicM[5]),
likelihood=c(NA, nlik, mlik),
a=c(NA, an, af), b=c(NA, bn, bf) ,p=c(NA, pn, pf), q=c(NA, qn, qf))
# }
Run the code above in your browser using DataLab