Гистограмма распределения данных по месяцам

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Гистограмма распределения данных по месяцам

Сообщение Petruxin » 22 окт 2013, 17:55

Продолжаю.
Возникла необходимость научиться строить гистограммы в распределении по времени(конкретно по месяцам). Примера не нашел, чтобы повториьь со своими данными. Пытаюсь сделать так:

Код: Выделить всё

 unemployed2010<-c(rep(1,24552),rep(2,25688),rep(3,27287),rep(4,26045),rep(5, 24364),rep(6,21967))
где 1....6 -месяца, а по y - количество граждан(и гражданок).
Вывожу график так :

Код: Выделить всё

 hist(unemployed2010,breaks=1:6)
и получается график от большего к меньшему, (рис hist) а надо (должно?) чтобы гистограмма описывалась чем то типа перевернутой параболы
если же попробовать

Код: Выделить всё

 plot(density(unemployed2010), type="l", col="seagreen")
, то вроде получается около дела. (рис density)
Пробовал использовать , но это уж совсем в ручную получается.
Может все не так делается? Где нибудь пример расмотрен?
Вложения
hist.png
hist.png (10.34 КБ) 11350 просмотров
density.png
density.png (14.85 КБ) 11350 просмотров
Последний раз редактировалось Petruxin 24 окт 2013, 08:02, всего редактировалось 1 раз.

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Гистограмма распределения данных по месяцам

Сообщение Petruxin » 22 окт 2013, 20:18

Попробовал по другому:

Код: Выделить всё

> mon<-c("январь","февраль","март","апрель","май","июнь")
> unemployed2010<-c(24552,25688,27287,26045,24364,21967)
> mon.f<-factor(mon)
> plot(mon.f,unemployed2010)
> hist(mon.f,unemployed2010)
Ошибка в hist.default(mon.f, unemployed2010) : 'x' должен быть числовым
plot чего то строит (на картинке), но логика мне пока не ясна, а с гистограммой совсем глухо. Видимо "факторы" так использовать нельзя?
Вложения
plot.png
plot.png (11.44 КБ) 11326 просмотров

Иван Стрельников
Интересующийся
Сообщения: 40
Зарегистрирован: 11 авг 2011, 13:23
Репутация: 15

Re: Гистограмма распределения данных по месяцам

Сообщение Иван Стрельников » 24 окт 2013, 01:41

Я не совсем понял задачу, что значит "распределение по времени"?
Может Вы имеете ввиду простую столбчатую диаграмму, тогда это функция barplot().

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Гистограмма распределения данных по месяцам

Сообщение jerry-maori » 24 окт 2013, 05:22

Хм.... начнём с того, что гистограмма распределения не обязательно колоколобразная... Всё зависит от распределения...
Я бы сделал для начала самым топорным методом: если у нас есть ряд значений, и для каждого указано, в каком месяце (по номеру) оно имело место быть, то простой подсчёт количества значений каждого типа даст нам искомое...
Правда желательно хотя бы кусок исходных данных увидеть..

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Гистограмма распределения данных по месяцам

Сообщение Petruxin » 24 окт 2013, 05:37

Наверно я намудрил с вопросом.
В первом топике, в первом кодде

Код: Выделить всё

 unemployed2010<-c(rep(1,24552),rep(2,25688),rep(3,27287),rep(4,26045),rep(5, 24364),rep(6,21967))
цифры 1,2, и тд. обозначают - январь, февраль...июнь. вторые - количество оф. безработных. Видно, что их количество по месяцам растет до марта а потом спадает. На первой гистограмме же этого не видно. А вот в этом забавном примере гистограммы как я хочу. Может сравнение не корректно?
barplot() - построил лестницу. Тоже ничего, но не то что я хочу. :D

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Гистограмма распределения данных по месяцам

Сообщение gamm » 24 окт 2013, 07:05

Petruxin писал(а):Наверно я намудрил с вопросом.
таки да ...

Код: Выделить всё

unemployed2010<-c(rep(1,24552),rep(2,25688),rep(3,27287),rep(4,26045),rep(5, 24364),rep(6,21967))
foo<-table(unemployed2010)
plot(foo,type="h",lwd=3)
для построения того, чего вы хотите, посмотрите разные aggregate(). Тут могут быть разные нюансы, например, если месяц пропущен, то его вообще не будет (вместо того, чтобы он был с нулем). Там придется брать заготовку с нулями, искать существующие позиции (смотрим match()), и вставлять в заготовку. Позиции из таблицы извлекаются с помощью as.integer(attr(foo, "dimnames")[[2]]).

как-то так ...

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Гистограмма распределения данных по месяцам

Сообщение Petruxin » 24 окт 2013, 08:01

Получилось, как gamm подсказал.
Всем спасибо за помощь. Почитаю про команды, которые подсказали.

Иван Стрельников
Интересующийся
Сообщения: 40
Зарегистрирован: 11 авг 2011, 13:23
Репутация: 15

Re: Гистограмма распределения данных по месяцам

Сообщение Иван Стрельников » 24 окт 2013, 09:10

Как по мне, то логика немного странная. Зачем сначала создавать несуразный вектор из постоянных значений, а потом его агрегировать. Ладно если есть данные по дням, а нужно получить значения для месяцев, но тогда это будет делаться немного иначе. В Вашем случае самый элементарный ход будет таким:

Код: Выделить всё

unemployed2010<-c(24552,25688,27287,26045,24364,21967)
names(unemployed2010)<-c("январь","февраль","март","апрель","май","июнь")
barplot(unemployed2010)

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Гистограмма распределения данных по месяцам

Сообщение Petruxin » 24 окт 2013, 09:20

Попробовал - тоже получилось, как мне надо.
Все больше команд...

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Гистограмма распределения данных по месяцам

Сообщение gamm » 24 окт 2013, 11:07

Иван Стрельников писал(а):Как по мне, то логика немного странная. Зачем сначала создавать несуразный вектор из постоянных значений, а потом его агрегировать.
логика нормальная, имитация выборки. Ну лень человеку писать что-то типа unemployed2010<-sample(1:6,10000,prob=c(5,6,7,7,6,5)/(sum(c(5,6,7,7,6,5)),replace=TRUE), а потом plot(table(unemployed2010),type="h") :D

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Гистограмма распределения данных по месяцам

Сообщение Petruxin » 24 окт 2013, 11:20

НЕ лень. Разбирусь - и не такое понапишу :evil:

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей