Регистрация

Сайт о развлечениях


Чем заняться в свободное время
   
 
 
Измерение объема Помимо цен, столбчатые диаграммы нередко отражают объем торгов, т.е. количество акций, купленных или проданных за определенный период времени, представленный каждым столбиком. На дневной диаграмме объем торгов отражает совокупное количество акций, купленных или проданных в течение соответствующего торгового дня. По соглашению этот объем отображается в виде отдельной столбчатой диаграммы и обычно приводится непосредственно под диаграммой цены акций.
Сочетание накопления
  • Предприятие осуществляет права владения.
  • Предприятие не отвечает по обязательствам организации, которой оно подчинено.
Популярные новости

Редактирование радио: улучшенный просмотр и просмотр классической программы Radio Swiss

  1. связанные с

На прошлой неделе я опубликовал пост о Соскоб радио Radio Swiss Classic , После этого Боб Рудис написал чрезвычайно полезный пост много улучшаю свой код и учу меня классным вещам. Я не знаю, почему я забыл добавить паузы между запросами ... Действительно плохое поведение! Я буду использовать его код сегодня для повторной очистки данных.

Зачем пересматривать данные? Я упомянул неработающие ссылки в своем посте. Фактически, каждый раз, когда я заходил на сломанную страницу, веб-мастер Radio Swiss Classic получал электронные письма. Этот человек получил много писем из-за меня. Они исправили ошибку, объясняющую эти разбитые страницы, и связались со мной, потому что кто-то сдал меня (я чувствую себя супер известным или шпионил), очень любезно упомянув, что они исправили все страницы, и не злились на меня. Так что давайте все снова поцарапать!

Так что это в основном код Боба Рудиса с моими неуклюжими комментариями рядом с его комментариями. Его всегда в линии. Я очень рекомендую вам прочитать его пост !

библиотека ("rvest") библиотека ("purrr") библиотека ("stringi") библиотека ("lubridate") библиотека ("tidyverse") # использование purrr :: безопасно - это круто, потому что если страница # не работает, вы получаете NULL как output s_read_html purrr :: безопасно (read_html) # вспомогательный инструмент для краткости функция xtract_nodes (узел, css) {html_nodes (узел, css)%>% html_text (trim = TRUE)} функция get_one_day_program (date = Sys.Date (), base_url = "http://www.radioswissclassic.ch/en/music-programme/search/%s", pb = NULL) {# магия индикатора выполнения! if (! is.null (pb)) pb $ tick () $ print () # это та часть, где вы хорошо относитесь к сайту Sys.sleep (sample (seq (0, 1, 0.25), 1)) # в идеале, сделать этот пример (5,1) date ymd (date) # обрабатывает случай, когда ввод является символом ISO date pg s_read_html (sprintf (base_url, format (date, "% Y% m% d"))) if (! is .null (pg $ result)) {# прочитайте пост Боба Рудиса, в частности, чтобы прочитать о # дополнительном селекторе для "плейлиста" dplyr :: data_frame (date = date, time = xtract_nodes (pg $ result, 'div [ class = "playlist"] * span [class = "time hidden-xs"] ')%>% hm (), datetime = обновление (дата, час = час (время), минута = минута (время)), Artist = xtract_nodes (pg $ result, 'div [class = "playlist"] * span [class = "titletag"]'), title = xtract_nodes (pg $ result, 'div [class = "playlist"] * span [class = " artist "] '))} else {closeAllConnections () NULL}} search_dates seq (from = ymd (" 2008-09-01 "), to = ymd (" 2017-04-22 "), by =" 1 день " ) # как можно добиться прогресса работа бара, # оцените время, необходимое для 5 запросов pb dplyr :: progress_estimated (length (search_dates)) Programs_df map_df (search_dates, get_one_day_program, pb = pb) Programs_df Programs_df%>% dplyr :: select (- time)%>% dplyr :: mutate (datetime = force_tz (datetime, tz = "Europe / Zurich")) Programs_df Save (Programs_df, файл = "data / radioswissclassic_programs_radioedit.RData") загрузить ("data / radioswissclassic_programs_radioedit.RData") search_dates seqate из ( :: ymd ("2008-09-01"), to = lubridate :: ymd ("2017-04-22"), by = "1 день")

На этот раз я получил 100% программ!

Теперь я могу улучшить свой анализ данных: Мой коллега Карлес (который мог получить ссылку на каждое из моих сообщений, потому что я чувствую, что он должен знать обо всех них… бедный Карлес) оставил комментарий к моему последнему сообщению с двумя хорошими предложениями.

То, что сказал Карлес: «Что касается различий в течение дня, я согласен, что в среднем нет существенных различий, но они есть в верхних квантилях. Я бы предложил квантильную регрессию или квантильное сглаживание, если вы хотите попробовать;) ». Давайте не будем комментировать отсутствие носа этого смайлика, мой коллега - хороший парень, поэтому я постараюсь не волноваться и сосредоточиться на статистике.

библиотека ("magrittr") Programs_df dplyr ::range (программы_df, datetime) Programs_df dplyr :: mutate (Programs_df, длительность = difftime (вести (datetime, 1), datetime, единицы = "мин")) Programs_df dplyr :: mutate ( Programs_DF, длительность = ifelse (длительность> 60, NA, длительность)) Programs_DF dplyr :: mutate (Programs_DF, час = as.factor (lubridate :: час (datetime))) Programs_df Dplyr :: mutate (Programs_df, ночь = (Lubridate) :: hour (datetime) 4 | lubridate :: hour (datetime)> = 20)) функция квантилей (x) {probs seq (от = 0,5, до = 0,95, на = 0,05) quantiles_names paste0 ("q", probs * 100) квантили purrr :: map_dbl (пробники, функция (p, v = x) {квантиль (v, пробники = p, na.rm = TRUE)}) df tibble :: as.tibble (t (quantiles)) имена ( df) quantiles_names return (df)} Programs_df%>% dplyr :: group_by (ночь)%>% dplyr :: sumrize (duration_q = список (квантили (продолжительность)))%>% tidyr :: unnest (duration_q)%>% knitr :: kable ( ) ночь q50 q55 q60 q65 q70 q75 q80 q85 q90 q95 ЛОЖЬ 7 8 8 9 9 10 10 11 13 16 ИСТИНА 8 8 9 9 10 11 13 16 20 26

Глядя на эту таблицу выше, это правда, что верхние квантили длительности пьесы кажутся более длинными ночью.

библиотека ("ggplot2") библиотека ("hrbrthemes") ggplot (Programs_DF) + geom_histogram (aes (продолжительность)) + facet_grid (ночь ~.) + theme_ipsum () + xlab ("Продолжительность (минуты)")

И я думаю, что эти гистограммы на самом деле яснее, чем коробочные сюжеты из предыдущего поста.

Итак, теперь давайте попробуем квантильную регрессию, которую, я признаю, я никогда не использовал. виньетка квантрег пакета действительно приятно, это немного староватая школа с реальным введением и разделом «Что такое виньетка?». Виньетка начинается с этого предложения «провокационное определение статистики Берана (2003) как« изучение алгоритмов для
анализ данных «выдвигает вычислительные соображения на передний план области». Роджер Кенкер также пишет: «Хотя в большинстве основных коммерческих статистических пакетов есть некоторая функциональность для квантильной регрессии, у меня есть естественная склонность к среде R и программному обеспечению, которое я разработал для R.», что вызвало у меня улыбку. Последнее приятное замечание о виньетке, которое я заметил, поощряет образ мышления участника, говоря: «Когда такие модификации имеют общую применимость,
желательно сообщить их автору пакета, чтобы они могли быть переданы большему сообществу ». Хорошо, последний пункт об этом пакете, в список авторов входит Брайан Д. Рипли с запиской Роджера Кенкера« Initial (2001) ». R порт от S (к моему вечному стыду - как я мог так медленно принимать R! ».

В следующем я просто посмотрю на влияние ночи на продолжительность для различных квантилей, ничего особенного.

библиотечная ("quantreg") модель rq (длительность ~ ночь, tau = seq (от = 0,5, до = 0,95, на = 0,05), data = Programs_df, method = "PFN") сводная сводка (модель, SE = "Ker" ) transform_summary function (summ) {coeffs tibble :: as.tibble (summ $ coefficients) coeffs dplyr :: mutate_ (coeffs, tau = ~ summ $ tau) coeffs [2,]} purrr :: map (резюме, transform_summary)% >% dplyr :: bind_rows ()%>% knitr :: kable () Значение Стд. Значение ошибки t Pr (> | t |) tau 1 0,0082075 121,83907 0 0,50 0 0,0082689 0,00000 1 0,55 1 0,0094450 105,87571 0 0,60 0 0,0093682 0,00000 1 0,65 1 0,0106465 93,92756 0 0,70 1 0,0122657 81,52811 0 0,75 3 0,0216791 138 382 066 0 080 5 0,85 7 0,0428316 163,43057 0 0,90 10 0,0605325 165.20043 0 0,95

Это, кажется, подтверждает идею, что верхние квантили продолжительности больше ночью. Этот сдвиг в распределении продолжительности ночью по сравнению с распределением в дневное время означает, что есть более длинные фрагменты ночью ... это то, что утверждает веб-сайт, поэтому мы хороши. Просто для информации, мы смотрим 171668 пьес, сыгранных ночью, и 355487 пьес, сыгранных в течение дня, то есть много.

Карлес сказал: «Для романтической музыки тип композиции« Скерцо »/« Вальс »/« Ноктюрн »может рассказать вам о настроении композиции». Хорошо, тогда время для анализа некоторых текстовых данных! Вместо того чтобы смотреть на настроение музыки, предложенное Карлесом, я вместо этого буду смотреть на темп пьес (от Страница википедии см. «Итальянская разметка темпа»).

Чтобы определить темп каждой пьесы с указанием одного, я буду использовать fuzzyjoin очень удобный пакет для объединения таблиц на основе, скажем, близких географических координат или регулярных выражений.

темпов tolower (c ("Larghissimo", "Могила", "Largo", "Lento", "Larghetto", "Adagio", "Adagietto", "Andante", "Andantino", "Marcia moderato", "Andante moderato") , "Moderato", "Allegretto", "Allegro moderato", "Allegro", "Vivace", "Vivacissimo", "Allegrissimo", "Presto", "Prestissimo")) темпы tibble :: tibble (tempo = tempos, speed = 1: длина (темпы)) ​​программы dplyr :: mutate (Programs_df, title = tolower (title)) библиотека ("fuzzyjoin") программы regex_inner_join (программы, темпы, = c (title = "темп"))

Теперь я должен позаботиться о пьесах, которые получили несколько темпов, например, потому что их название «grave and allegro blabla» или «что-то moderato», таким образом, давая «что-то» и «что-то moderato» в качестве темпов. В первом случае я случайно выберу один из темпов, во втором - самый точный темп.

set.seed (1) nrow (программы) программы split (программы, программы $ datetime) функция clean_tempos (df) {if (nrow (df)> 1) {if (any (stringr :: str_detect (df $ tempo, "moderato) "))) {df dplyr :: filter_ (df, lazyeval :: interp (~ stringr :: str_detect (df $ tempo," moderato ")))} else {df dplyr :: sample_n (df, size = 1)} } return (df)} программы purrr :: map (программы, clean_tempos) программы dplyr :: bind_rows (программы) nrow (программы)

Теперь, когда у нас есть 102439 штук с известной скоростью из 527168, давайте посмотрим на распределение скорости в зависимости от часа дня.

программы%>% dplyr :: group_by (ночь)%>% dplyr :: sumrize (mean_speed = среднее (скорость), median_speed = медиана (скорость))%>% knitr :: kable () ночь mean_speed median_speed FALSE 10.453073 9 ИСТИНА 9.888101 8 программ dplyr :: mutate (программы, скорость = as.factor (скорость)) библиотека ("viridis") ggplot (программы) + geom_bar (aes (час, заполнение = скорость), позиция = "заливка") + scale_fill_viridis (дискретный = ИСТИНА) + theme_ipsum ()

factor (скорость)) библиотека (viridis) ggplot (программы) + geom_bar (aes (час, заполнение = скорость), позиция = заливка) + scale_fill_viridis (дискретный = ИСТИНА) + theme_ipsum ()

ggplot (программы) + geom_bar (aes (ночь, заполнение = скорость), позиция = "заполнение") + scale_fill_viridis (дискретный = TRUE) + theme_ipsum ()

ggplot (программы) + geom_bar (aes (ночь, заполнение = скорость), позиция = заполнение) + scale_fill_viridis (дискретный = TRUE) + theme_ipsum ()

Честно говоря, я не вижу изменения скорости ночью, или только очень маленького, так что мой метод, вероятно, был не очень хорошим способом оценки живости фигур.

Я хотел бы еще раз поблагодарить Боба Рудиса, веб-мастера Radio Swiss Classic и мой коллега Карлес , Я был также удивлен и счастлив получить электронное письмо от преподавателя теории музыки университета, который сказал мне, что он может использовать такие данные в классе, чтобы посмотреть популярные музыкальные произведения. Мне действительно нравится, как эта вещь ведения блога заставляет меня открывать новые области!

связанные с

Чтобы оставить комментарий автору, перейдите по ссылке и оставьте комментарий в их блоге: Maëlle , R-bloggers.com предложения ежедневные обновления по электронной почте около р новости и учебные пособия на такие темы, как: Наука о данных , Большие данные, R рабочих мест визуализация ( ggplot2 , присущи рефлективный, вербальный , карты , анимация ), программирование ( RStudio , Sweave , Латекс , SQL , Затмение , мерзавец , Hadoop , Web Scraping ) статистика ( регрессия , PCA , Временные ряды , торговый ) и многое другое ... Если вы зашли так далеко, почему бы не подписаться на обновления с сайта? Выберите свой вкус: Эл. почта , щебет , RSS , или же facebook ...

Зачем пересматривать данные?