我的目标是将数据拟合到任何有积极支持的发行版。 (weibull(2p),gamma(2p),pareto(2p),对数正态(2p),指数(1P))。第一次尝试,我使用了proc univariate。这是我的代码
proc univariate data=fit plot outtable=table;
var week1;
histogram / exp gamma lognormal weibull pareto;
inset n mean(5.3) std='Standar Deviasi'(5.3)
/ pos = ne header = 'Summary Statistics';
axis1 label=(a=90 r=0);
run;
我注意到的第一件事是,没有为weibull分布显示kolmogorov统计数据。然后我使用了proc严重性。
proc severity data=fit print=all plots(histogram kernel)=all;
loss week1;
dist exp pareto gamma logn weibull;
run;
现在,我获得了威布尔分布的KS统计量。 然后我比较了由proc严重性和proc单变量产生的KS统计量。他们与众不同。为什么?我应该使用哪一个?
答案 0 :(得分:2)
我无法访问SAS / ETS,因此无法使用proc severity
进行确认,但我认为您所看到的差异归结为分布参数的拟合方式。
使用您的proc univriate
代码,您不会要求对几个参数进行估算(默认情况下某些参数设置为1或0,请参阅用户中的sigma和theta指南)。例如:
data have;
do i = 1 to 1000;
x = rand("weibull", 5, 5);
output;
end;
run;
ods graphics on;
proc univariate data = have;
var x;
/* Request maximum liklihood estimate of scale and threshold parameters */
histogram / weibull(theta = EST sigma = EST);
/* Request maximum liklihood estimate of scale parameter and 0 as threshold */
histogram / weibull;
run;
您将注意到,当请求估计θ时,SAS也会生成KS统计量,这是由于SAS估计需要知道分布参数的拟合统计量的方式(完整解释here)。
我的猜测是,您在两个程序之间看到不同的拟合统计数据,因为它们返回的略有不同,或者它们使用不同的计算来估计拟合统计数据。如果您有兴趣,可以在用户指南(proc severity
和proc univariate
)中调查他们如何执行参数估算。如果您想进一步调查,可以强制分配参数在两个过程中匹配,然后比较拟合统计信息以查看它们的差异程度。
我建议您尽可能只使用其中一个程序,并选择最符合您输出要求的程序。