拟合连续(正支持)分布的 Proc 单变量和 Proc 严重性之间的差异
Posted
技术标签:
【中文标题】拟合连续(正支持)分布的 Proc 单变量和 Proc 严重性之间的差异【英文标题】:Difference between Proc univarite and Proc severity for fitting continuous (positive support) distribution 【发布时间】:2015-05-12 18:32:23 【问题描述】:我的目标是使数据适合任何具有积极支持的分布。 (威布尔(2p),伽玛(2p),帕累托(2p),对数正态(2p),指数(1P))。第一次尝试,我使用 proc 单变量。这是我的代码
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 统计量。他们是不同的。为什么?我应该使用哪一个?
【问题讨论】:
【参考方案1】:我无权访问 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;
您会注意到,当请求估计 theta 时,SAS 也会生成 KS 统计量,这是由于 SAS 估计需要知道分布参数的拟合统计量的方式(完整解释 here)。
我的猜测是,您看到两个程序之间的拟合统计量不同,因为它们返回的拟合值略有不同,或者它们使用不同的计算来估计拟合统计量。如果您有兴趣,可以在用户指南(proc severity
和proc univariate
)中研究他们如何执行参数估计。如果您想进一步调查,您可以强制分布参数在两个过程中匹配,然后比较拟合统计量以查看它们的差异程度。
如果可能,我建议您仅使用其中一种程序,并选择最适合您的输出需求的一种程序。
【讨论】:
我刚刚意识到 proc 严重性只适合带有两个参数的 weibull 分布。这就是我需要的。但是是否可以使用 proc 单变量来适应 weibull (2P) 分布?看起来指定 theta 并不能提供我真正想要的东西。非常感谢! 查看here 和here 似乎附加参数是由于proc univariate
将PDF 拟合到直方图而不是基础数据。当v=1, h=1, θ=0
在proc univariate
中时,PDF 是等效的,其中c = τ
和σ = θ
(将proc univariate
参数转换为proc severity
名称)。以上是关于拟合连续(正支持)分布的 Proc 单变量和 Proc 严重性之间的差异的主要内容,如果未能解决你的问题,请参考以下文章