刚搜索了下论坛,发现关于分布拟合的帖子也有很多,不过主要是问连续型随机变量分布类型的拟合。
前段时间我也为分布拟合的问题折腾了很久,以下是我之前拟合过的一个数据,仅供参考,不足之处还请各位高手指正。。。
对于离散型变量的分布类型,比如你现在要检验的负二项分布,首先要知道该分布的概率分布律(也有称为概率质量函数pmf)、及相关数字特征(如常见的均值和方差等),了解这些的目的是对其进行参数估计!
以负二项分布为例,这里引用文献“住院次数的负二项分布,陈平”中的数据。
假设负二项分布参数为a和b。 其pmf为:P(x=k)=C(k,k+a-1)*b**a*(1-b)**k ,其中C ( )为组合数符号。
data mm;
input k f;
cards;
0 3490
1 176
2 19
3 7
;
run;
proc means data=mm mean var;
var k;
freq f;
run;
*mean=0.0636511,var=0.0812902;
*矩估计;
data ;
mean=0.0636511;var=0.0812902;
b=mean/var;
a=mean*b/(1-b);
proc print ;
run;
*a=0.22969,b=0.78301;
*最大似然估计(NLP过程);
proc nlp data=mm;
max l;
parms a=0.22,b=0.78;*迭代初始值可取矩估计值。;
bounds a>0,0<b<1;
l=f*(log( gamma(a+k-1+1)/( gamma(k+1)*gamma(a-1+1) ) )+a*log(b)+k*log(1-b));
run;
*a=0.231512,b=0.784353;
最大似然估计也可通过NLMIXED过程实现。
proc nlmixed data=mm;
parms a=0.22, b=0.78;
bounds a>0,0<b<1;
l=f*(log( gamma(a+k-1+1)/( gamma(k+1)*gamma(a-1+1) ) )+a*log(b)+k*log(1-b));
model k ~ general(l);
run;
最大似然估计的关键是构造对数似然函数l,关于NLP和NLMIXED过程的详细介绍可参考帮助文档。
至于拟合优度检验,离散型变量一般采用卡方检验,可以参考下人卫版颜虹主编的《医学统计学》P161。
个人感觉分布拟合的重点还是理解概念,比如pmf、最大似然估计、对数似然函数、分布拟合优度的卡方检验过程等等,至于实现方法很多软件都可以做的
推荐阅读:陈峰老师“疾病的统计分布模型”系列文献