2013-11-11 6 views
0

Пожалуйста, обратите внимание этот пример кода:построения гистограммы точек данных

figure 
data = [0,2,9,2,5,8,7,3,1,9,4,3,5,8,10,0,1,2,9,5,10]; 
hist(data) 

Почему это гистограмма участки точек данных 0 & 1 с частотой 4 (по оси ординат), когда на самом деле 0 & 1 появляются два раз в данных?

ответ

1

У вас есть 21 точек данных , По умолчанию hist использует 10 бункеров. если и выполнить свой hist следующим образом:

figure 
data = [0,2,9,2,5,8,7,3,1,9,4,3,5,8,10,0,1,2,9,5,10]; 
hist(data, 21) 

вы получите правильный ответ:

enter image description here

+0

Я предпочитаю использовать 'Hist (данные, 0 : 10) 'в таком случае, чтобы явно объявить 11 бункеров. Не знаете, почему вы звоните на '21'? Похоже, что вы (намеренно или случайно) создаете дополнительные бункеры между главными, т. Е. У вас есть бит [0 0,5>, [0,5 1> и т. Д., И каждый другой бит имеет в нем счет). Так получилось, что соответствует 21 ячейке (не то же самое, что «21 точка данных», поэтому я задаюсь вопросом, случайно ли это или преднамеренно). – Floris

+0

@Floris Я представил пример для данных в вопросе, и использование дополнительных бункеров позволяет хорошо разделять данные. Но более обобщенный пример был бы полезен. – Marcin

+0

@Marcin: спасибо, и да, используя 21 ячейку, позволяет хорошо разделять данные. – user2888999

0

N = HIST (Y) объединяет элементы Y в 10 равноотстоящих контейнеров и возвращает количество элементов в каждом контейнере. Если Y - матрица, HIST работает по столбцам. Здесь для 0 и 1 один бин сделано, поэтому гистограмма участков точек данных 0 & 1 с частотой 4 (по оси ординат), когда на самом деле 0 & 1 появляется два раза в данных

1

Если вы сделали

[hy hx] = hist(data) 

вы бы увидеть контейнеры, используемые в переменной hx , Если вы не укажете бункера, они будут указаны для вас - и по умолчанию это не очень разумно.

Если у вас есть целочисленные данные, и вы хотите, целые контейнеры,

hist(data, min(data):max(data)) 

довольно хороший способ, чтобы получить его. Если вам нужно закромах больше 1, что-то вроде

n = 5; 
hist(data, (floor(min(data)/n):ceil(max(data)/n))*n) 

работает довольно хорошо, и дать вам размер бен п (5, в данном случае)

Смежные вопросы