BMA Poisson只选择1个模型,所有变量的包含概率均为100%

时间:2016-08-31 09:49:07

标签: r bayesian poisson

我正在尝试将贝叶斯模型平均(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。

0 个答案:

没有答案