# NOT RUN {
data(industry)
# Estimation without adaptation of lag shapes
indus.code <- list(
Consum~ecq(Job,0,5),
Pollution~ecq(Job,1,8)+ecq(Consum,1,7)
)
indus.mod <- dlsem(indus.code,group="Region",time="Year",exogenous=c("Population","GDP"),
data=industry,log=TRUE)
# Adaptation of lag shapes (estimation takes some seconds more)
indus.global <- list(adapt=TRUE,max.gestation=5,max.lead=15,min.width=3,sign="+")
## NOT RUN:
# indus.mod <- dlsem(indus.code,group="Region",time="Year",exogenous=c("Population","GDP"),
# data=industry,global.control=indus.global,log=TRUE)
# Summary of estimation
summary(indus.mod)$endogenous
# DAG with edges coloured according to the sign
plot(indus.mod)
# DAG disregarding statistical significance
plot(indus.mod,style=0)
### Comparison among alternative models
# Model 2: quadratic decreasing lag shapes
indus.code_2 <- list(
Job ~ 1,
Consum~qd(Job),
Pollution~qd(Job)+qd(Consum)
)
## NOT RUN:
# indus.mod_2 <- dlsem(indus.code_2,group="Region",time="Year",exogenous=c("Population","GDP"),
# data=industry,global.control=indus.global,log=TRUE)
# Model 3: linearly decreasing lag shapes
indus.code_3 <- list(
Job ~ 1,
Consum~ld(Job),
Pollution~ld(Job)+ld(Consum)
)
## NOT RUN:
# indus.mod_3 <- dlsem(indus.code_3,group="Region",time="Year",exogenous=c("Population","GDP"),
# data=industry,global.control=indus.global,log=TRUE)
# Model 4: gamma lag shapes
indus.code_4 <- list(
Job ~ 1,
Consum~gam(Job),
Pollution~gam(Job)+gam(Consum)
)
## NOT RUN:
# indus.mod_4 <- dlsem(indus.code_4,group="Region",time="Year",exogenous=c("Population","GDP"),
# data=industry,global.control=indus.global,log=TRUE)
# comparison of the three models
## NOT RUN:
# compareModels(list(indus.mod,indus.mod_2,indus.mod_3,indus.mod_4))
### A more complex model
data(agres)
# Qualitative exogenous variable
agres$POLICY <- factor(1*(agres$YEAR>=2005))
levels(agres$POLICY) <- c("no","yes")
# Causal levels
context.var <- c("GDP","EMPL_AGR","UAA","PATENT_OTHER","POLICY")
investment.var <- c("GBAORD_AGR","BERD_AGR")
research.var <- c("RD_EDU_AGR","PATENT_AGR")
impact.var <- c("GVA_AGR","PPI_AGR")
agres.var <- c(context.var,investment.var,research.var,impact.var)
# Constraints on lag shapes
agres.global <- list(adapt=TRUE,max.gestation=5,max.lead=15,sign="+")
agres.local <- list(
sign=list(
PPI_AGR=c(GBAORD_AGR="-",BERD_AGR="-",RD_EDU_AGR="-",PATENT_AGR="-")
)
)
# Endpoint-constrained quadratic lag shapes (estimation takes a couple of minutes)
auxcode <- c(paste(investment.var,"~1",sep=""),
paste(research.var,"~",paste("ecq(",investment.var,",,)",
collapse="+",sep=""),sep=""),
paste(impact.var,"~",paste("ecq(",c(investment.var,research.var),",,)",
collapse="+",sep=""),sep=""))
agres.code <- list()
for(i in 1:length(auxcode)) {
agres.code[[i]] <- formula(auxcode[i])
}
## NOT RUN:
# agres.mod <- dlsem(agres.code,group="COUNTRY",time="YEAR",exogenous=context.var,
# data=agres,global.control=agres.global,local.control=agres.local,log=TRUE)
# summary(agres.mod)$endogenous
## Gamma lag shapes (estimation takes some minutes)
auxcode_2 <- c(paste(investment.var,"~1",sep=""),
paste(research.var,"~",paste("gam(",investment.var,",,)",
collapse="+",sep=""),sep=""),
paste(impact.var,"~",paste("gam(",c(investment.var,research.var),",,)",
collapse="+",sep=""),sep=""))
agres.code_2 <- list()
for(i in 1:length(auxcode_2)) {
agres.code_2[[i]] <- formula(auxcode_2[i])
}
## NOT RUN:
# agres.mod_2 <- dlsem(agres.code_2,group="COUNTRY",time="YEAR",exogenous=context.var,
# data=agres,global.control=agres.global,local.control=agres.local,log=TRUE)
# summary(agres.mod_2)$endogenous
# compareModels(list(agres.mod,agres.mod_2))
# }
Run the code above in your browser using DataLab