Только с этими 4 значениями данных гистограмма выглядит следующим образом:
Подпрограмма построения графика вычисляет возрастной диапазон для бункеров и расположение центров бинов. Вычисление - это некоторый внутренний алгоритм, который вы можете контролировать с помощью histogram
параметров оператора / binstart= binwidth= nbins=
.
Конечно, гистограммы для бинов, а высота масштабируется до относительного количества значений, попадающих в бункер. Ось Y будет либо фактическим счетом, либо процентом отсчетов. У вас было 4 значения, попадающих в 3 ячейки, поэтому для одной ячейки будет 2 (или 50% = 2/4). Столбец с наивысшим значением короче, чем столбец с наименьшим значением, поскольку высокие значения были меньше, чем низкие значения.
Что происходит, когда у вас есть больше данных?
Вот некоторый код, который создает 250 значений, соответствующих нормальному распределению, и гистограммирует их, также показан график накопления частотной стрелки.
data work.have;
do personid = 1 to 250;
do until (18 <= age <= 60);
age = floor(18 + (32 + sqrt(62) * rannor(123)));
end;
output;
end;
run;
proc freq noprint data=have;
table age / out=freq outcum; * data for needle plot;
run;
proc sgplot data=have;
title height=14pt "Default bins";
histogram age / showbins;
density age;
density age / type=Kernel;
run;
proc sgplot data=have;
title height=14pt "binstart=20 binwidth=2";
histogram age / showbins binstart=20 binwidth=2;
density age;
density age / type=Kernel;
run;
proc sgplot data=freq;
title height=10pt "cum_freq needle plot of data from Proc FREQ output";
needle x=age y=cum_freq;
run;
Еще пример кода, демонстрирующий эффекты nbins
и xaxis
ods graphics / reset width=500px height=250px imagemap;
proc sgplot data=have;
title height=12pt "binstart=0 nbins=25";
title2 height=12pt "xaxis min=0 max=100";
histogram age / showbins binstart=0 binwidth=2 nbins=50;
density age;
density age / type=Kernel;
xaxis min=0 max=100;
run;
proc sgplot data=have;
title height=12pt "binstart=0 nbins=10";
title2 height=12pt "xaxis min=-100 max=200";
histogram age / showbins binstart=0 binwidth=2 nbins=50;
density age;
density age / type=Kernel;
xaxis min=-100 max=200;
run;
В случае просмотра распределений переменной в разных категориальных группах вы можете перейти к SGPANEL:
data work.have2;
do year = 2017, 2018;
do group = 'Team A', 'Team B', 'Team C';
do _n_ = 1 to 250;
personId + 1;
do until (18 <= age <= 95);
age = floor(6 + (32 + sqrt(95) * rannor(123)));
end;
output;
end;
end;
end;
run;
ods graphics / reset;
title;
proc sgpanel data=have2;
panelby year group / layout=lattice;
histogram age;
xaxis
run;