Какое значение по умолчанию используется для плотности ядра в SGPLOT (SAS)? - PullRequest
0 голосов
/ 26 мая 2020

Я использую SAS для построения гистограммы с плотностью ядра. В документации указано, что мы можем выбрать параметр c: «стандартизованная пропускная способность для числа, которое больше 0 и меньше или равно 100». Но я не могу найти значение по умолчанию, используемое для создания следующего графика:

proc sgplot data=test;  
   density variable/GROUP=newgroup TYPE=KERNEL lineattrs=(thickness=1.5);  
run;  

Есть у кого-нибудь идея?
Спасибо!

1 Ответ

1 голос
/ 26 мая 2020

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;

enter image description here

Средняя разница между всеми нанесенными точками составляет 1,65x10 ^ -9, с самым большим размером 6,76x10 ^ -9. Это, по сути, ноль. Причина различий заключается в том, что значение c, данное пользователю в журнале, имеет меньшую точность, чем значение, вычисленное с помощью proc sgplot. Вы также можете получить более высокую оценку точности с помощью опции outkernel= в proc univariate.

...