qcy_qin 发表于 2012-11-10 14:46 
谢谢你啊,感激你这方面的造诣确实比较深。我面临的问题是这样:现在已经收集到几个月的交易数据,建立 ...
mac1220兄弟有点激动了。其实,学习讨论,没有对错,都是交流一下。
既然mac1220兄弟对我那个关于non-informative先验分布有点意见,为了对MCMC负责,我就做出了那个GAMMA分布的例子。
即:已知有100个数据(数据见下面DATA部分)符合GAMMA分布,但参数(alpha, beta)不知,求alpha, beta. [注意:我用自编程序生成了alpha=5, beta (rate)=0.33333的GAMMA分布随机数100个来测试我所说的。]
解:用WINBUGS(免费软件)编程(注:此软件全名Baysian analysis Using Gibbs Sampling, 故名BUGS,大概是这个版本在Windows下运行,所以这个版本叫WINBUGS),程序全文在最下面。
计算结果(运行15万次,WINBUGS运行大约1分钟):
alpha估计的期望值是=4.728,95%置信区间=(3.57,6.07);
beta估计的期望值是=0.344,95%置信区间=(0.255,0.447).
注意:我试验用数据是来自于alpha=5, beta (rate)=0.33333的GAMMA分布,可见,运行结果精度颇好。如果不是100个数,而是1000个数,相信运行后效果还要好。注意,下面运行的先验分布是相当粗糙的(non-informative),即:我先验估计alpha是0-100的均匀分布,beta是0.01-1的均匀分布(注意作为rate变量的beta算作0.01-1均匀分布也是很粗糙的先验分布)。
抱歉我用万能来形容MCMC,主要因为我是Monte Carlo方法的粉丝,可能用词过当,mac1220指正是对的,没有东西是万能的。我只想表达“很有用”的意思,希望此词形容MCMC不太过分。
估计GAMMA分布数据的参数的WINBUGS程序全文:
MODEL {
for( j in 1 : N ) {
x[j]
~ dgamma(alpha, beta) #beta is rate, not scale
}
alpha~dunif(0,100)#it is a very non-informative prior
beta~dunif(0.01,1)#it is a very non-informative prior
}
DATA
list(N=100, x=c(11.84524767, 9.708104972, 16.49415807, 10.99153794, 5.385304998, 9.418692202, 9.072621943, 21.38534992, 17.34950565, 23.9611375, 15.43633211, 20.8442679, 15.75218542, 10.37746788, 17.86907719, 9.783414683, 12.58412357, 7.942704961, 5.564122853, 16.80276375, 14.71883864, 6.071883448, 22.73573137, 14.07994764, 14.65396108, 17.59253501, 9.530853926, 8.71994181, 8.501434976, 17.54338337, 24.3890357, 14.49163717, 10.46117615, 6.251054951, 5.139936399, 11.99244901, 6.436172461, 17.0739699, 6.881424755, 27.68744206, 5.306163629, 3.420765455, 7.395404743, 13.02700524, 29.64616639, 28.1788055, 18.20303018, 9.926019888, 7.11322463, 10.52217018, 15.70333865, 17.17850051, 13.82554226, 13.75681583, 19.41797552, 15.67165051, 10.49164377, 14.75079051, 9.691549028, 17.82475442, 18.99192082, 10.72737194, 14.21925723, 14.81770279, 27.53697511, 10.31232338, 12.56286656, 8.017582225, 10.04121424, 21.41362956, 22.70887882, 17.90629383, 8.072237433, 6.681193511, 5.207311642, 12.6722237, 8.101531152, 18.97004853, 12.48270646, 3.196478158, 22.91477947, 9.802356111, 10.39960976, 15.38522656, 3.801874068, 11.62363503, 10.65275324, 16.07606418, 15.43313882, 7.362055508, 20.79578481, 10.33514018, 7.140794509, 12.50320922, 13.55792908, 22.83272614, 21.47858176, 7.821753948, 30.32392129, 26.6399079))
FIRST INIT
list(alpha=0.5, beta=0.9)
SECOND INIT
list(alpha=50, beta=0.1)
Third INIT
list(alpha=99, beta=0.05)