我正在尝试将贝叶斯模型平均(BMA)用于泊松模型,以从大量变量中选择相关变量。在选择过程中,我强制模型中的一些变量,因为从计量经济学的角度来看它们是必要的(固定效应)。
问题是BMA似乎只通过了一种可能的模型,或者至少只报告了1,因此(因此?)包含了该模型中的所有变量。但是,我当然希望BMA只选择一部分变量。
我的脚本如下所示(我跳过大约80个变量来简化这里的事情)。
### Prep
rm(list = ls())
setwd("H:\\DAF_ENV Climate Change\\2015\\CPF bid on clean energy\\Models\\3rd model\\R-scripts and tables")
library(BMA)
## Loading data
D.all <- read.csv("H:/Data/full sets/3rd model/poissonbmadata.csv")
### Poisson family BMA run
fes<-c(2:15,16:20) #fixed effects
indepvar<-c(65,66,67,68,72,74,75,76,77,78,79,80,81,82,83,84:91) #other independent variables
x<- D.all[,c(fes,indepvar)] #all independent vars
y<-D.all[,c(1)] #dependent variable
force<- 1:dim(x)[2] #creates the force indicator variable
force[1:dim(x)[2]] <- 0.5 #sets all variables in the set to "not forced"
force[1:length(fes)] <- 1 #sets the FEs as forced
glm.out.invbma <- bic.glm( x, y, glm.family = poisson(),prior.param = force, factor.type=FALSE)
summary(glm.out.invbma)
输出结果为:
1 models were selected
Best 1 models (cumulative posterior probability = 1 ):
p!=0 EV SD model 1
Intercept 100 1.020e+01 1.304e-02 1.020e+01
yeardummy2001 100 -1.499e+00 6.912e-03 -1.499e+00
yeardummy2002 100 -1.369e+00 6.187e-03 -1.369e+00
yeardummy2003 100 -1.496e+00 6.575e-03 -1.496e+00
yeardummy2004 100 -1.250e+00 6.032e-03 -1.250e+00
yeardummy2005 100 -4.798e-01 5.219e-03 -4.798e-01
yeardummy2006 100 3.142e-01 3.956e-03 3.142e-01
yeardummy2007 100 5.242e-01 3.723e-03 5.242e-01
yeardummy2008 100 5.977e-01 3.697e-03 5.977e-01
yeardummy2009 100 5.813e-01 3.787e-03 5.813e-01
yeardummy2011 100 8.794e-01 3.603e-03 8.794e-01
yeardummy2012 100 8.238e-01 3.709e-03 8.238e-01
yeardummy2013 100 6.407e-01 3.771e-03 6.407e-01
yeardummy2014 100 -2.690e+00 7.676e-02 -2.690e+00
secdummy5 100 1.830e-01 2.335e-03 1.830e-01
nrecomp 100 -7.020e-06 8.813e-08 -7.020e-06
fit 100 2.453e+00 5.869e-03 2.453e+00
tender 100 1.188e-03 2.087e-06 1.188e-03
pmr 100 -3.908e-02 2.645e-03 -3.908e-02
etspart 100 -5.910e-01 2.354e-03 -5.910e-01
terteduc 100 -1.288e-02 7.119e-05 -1.288e-02
wdi532 100 8.007e-03 5.450e-05 8.007e-03
wdi533 100 -1.473e-02 1.651e-04 -1.473e-02
wdi534 100 -7.677e-02 4.526e-04 -7.677e-02
wdi535 100 -4.996e-03 2.699e-05 -4.996e-03
wdi537 100 -3.188e-03 1.241e-05 -3.188e-03
wdi538 100 -1.778e-03 1.679e-05 -1.778e-03
wdi5310 0 0.000e+00 0.000e+00 .
dobus 100 -2.662e-02 1.208e-04 -2.662e-02
transloss 100 -9.329e-02 3.339e-04 -9.329e-02
nVar 28
BIC 5.970e+06
post prob 1
我已经测试过删除FE,添加更多或更少的变量并强制使用不同的变量或不变量。几乎在所有情况下,所有变量均为100%包含概率。在某些情况下,选择了两个模型,但仍然所有变量都包含在> 50%的包含概率。
该模型的背景是因素对可再生电力投资的影响。并且,不,我不认为所有这些因素都有影响,保证100%的包含概率。 :)
编辑:上述版本在关于NA的bic.glm之后也发出了警告。一旦我通过D.all<-D.all.original[complete.cases(D.all.original),]
移除了NA,并排除了年假人(由于NA移除,其中一个或两个可能与常量共线),结果看起来仍然相似,除了现在丢失年的FE。