用于内核密度 SAS 的默认值

Default value used for Kernel density SAS

我正在使用 SAS 绘制具有内核密度的直方图。文档中规定我们可以选择参数c:“大于0小于等于100的数字的标准化带宽”。但是我找不到用于创建以下图的默认值。

有人有想法吗?谢谢!

SGPLOT 最小化核密度函数的渐近均方积分误差 (AMISE)。根据PROC UNIVARIATE,这也可以做KDE:

By default, the procedure uses the AMISE method to compute kernel density estimates.

PROC UNIVARIATE documentation

我们可以通过比较输出来确认它们具有相同的默认值。

proc univariate data=sashelp.cars;
    var horsepower;
    histogram / kernel;
run;

在日志中,我们发现:

NOTE: The normal kernel estimate for c=0.7852 has a bandwidth of 21.035 and an AMISE of 392E-7.

让我们一起绘制它们并比较值。

proc sgplot data=sashelp.cars;  
   density horsepower/TYPE=KERNEL;  
   density horsepower/TYPE=KERNEL(c=0.7852);
   ods output sgplot;
run;

data diff;
    set sgplot;
    abs_diff = abs(KERNEL_Horsepower____Y - KERNEL_Horsepower_C_0_7852____Y);
run;

proc univariate data=diff;
    var abs_diff;
run;

绘制的所有点之间的平均差异为 1.65x10^-9,整体最大差异为 6.76x10^-9。这基本上是零。差异的原因是日志中给用户的c值比proc sgplot计算的精度低。您也可以使用 proc univariate 中的 outkernel= 选项获得更高精度的估计值。