【发布时间】:2020-09-13 07:07:57
【问题描述】:
我正在使用 SAS 绘制具有内核密度的直方图。在文档中,指定我们可以选择参数 c:“大于 0 且小于或等于 100 的数字的标准化带宽”。但我找不到用于创建以下绘图的默认值。
有人有想法吗?谢谢!
【问题讨论】:
标签: sas kernel-density sgplot
我正在使用 SAS 绘制具有内核密度的直方图。在文档中,指定我们可以选择参数 c:“大于 0 且小于或等于 100 的数字的标准化带宽”。但我找不到用于创建以下绘图的默认值。
有人有想法吗?谢谢!
【问题讨论】:
标签: sas kernel-density sgplot
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 计算的精度。您也可以使用proc univariate 中的outkernel= 选项获得更高精度的估算值。
【讨论】: