SGPLOT минимизирует асимптотическую c среднеквадратичную ошибку (AMISE) для функции плотности ядра. Согласно PROC UNIVARIATE
, который также может выполнять KDE:
По умолчанию процедура использует метод AMISE для вычисления оценок плотности ядра.
PRO C UNIVARIATE документация
Мы можем подтвердить, что у них обоих одинаковые значения по умолчанию, сравнив вывод.
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
.