0

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

有人有想法吗?谢谢!

4

1 回答 1

1

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

默认情况下,该过程使用 AMISE 方法来计算核密度估计。

PROC 单变量文档

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

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. outkernel=您也可以使用其中的选项获得更高精度的估计proc univariate

于 2020-05-26T15:36:59.130 回答