我正在使用 SAS 绘制具有内核密度的直方图。在文档中,指定我们可以选择参数 c:“大于 0 且小于或等于 100 的数字的标准化带宽”。但我找不到用于创建以下绘图的默认值。
有人有想法吗?谢谢!
我正在使用 SAS 绘制具有内核密度的直方图。在文档中,指定我们可以选择参数 c:“大于 0 且小于或等于 100 的数字的标准化带宽”。但我找不到用于创建以下绘图的默认值。
有人有想法吗?谢谢!
SGPLOT 最小化核密度函数的渐近均方积分平方误差 (AMISE)。根据PROC UNIVARIATE
,其中也可以做 KDE:
默认情况下,该过程使用 AMISE 方法来计算核密度估计。
我们可以通过比较输出来确认它们都具有相同的默认值。
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
。