【问题标题】:Default value used for Kernel density SAS用于内核密度 SAS 的默认值
【发布时间】:2020-09-13 07:07:57
【问题描述】:

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

有人有想法吗?谢谢!

【问题讨论】:

    标签: sas kernel-density sgplot


    【解决方案1】:

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

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

    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= 选项获得更高精度的估算值。

    【讨论】:

    • 非常感谢 Stu Sztukowski,一切都非常清楚! :)
    • 很高兴它有帮助!他们也应该在 sgplot 中包含这个文档。我会通过电子邮件向技术支持发送反馈。
    猜你喜欢
    • 2019-11-19
    • 2014-05-27
    • 2019-06-18
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2016-07-19
    相关资源
    最近更新 更多