Categories

A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

Статистический анализ данных в связях с общественностью

2013/2014 учебный год

Если в процессе выполнения домашнего задания возникают вопросы, присылайте их на почту alexander@matrunich.com. На этот же адрес высылайте домашнее задание. В теме письма пишите “Домашнее задание 11.10.2013” (вместо 11.10.2013 подставьте нужную дату). Если в поле “От кого” вашего ящика не указаны ваши настоящие имя и фамилия, добавьте их к теме.

Домашнее задание высылайте в виде текста прямо в письме (не надо прикреплять к письму мегатонный вордовский файл). Картинки тоже присылайте без ворда (да-да! Бывают такие, кто вставляют картинки в ворд…), в виде обычных приложений.

Если возникает вопрос при работе в R, пишите, что вы хотели сделать, копируйте обычным текстом из R (RStudio) команды, которые вы ввели, и что вам программа ответила. Скриншоты прикреплять не надо. И, пожалуйста, указывайте тему письма.

Содержание

  • 13.12.2013: смотрим кино про статистику
  • 29.11.2013: анализируем социальные сети
  • 22.11.2013: понимаем смысл статистики
  • 15.11.2013: регрессионный анализ
  • 08.11.2013: хи-квадрат
  • 01.11.2013: рисуем доверительные интервалы
  • 25.10.2013
  • 18.10.2013
  • 11.10.2013
  • 04.10.2013
  • К занятию 13.12.2013: смотрим кино про статистику

    Кто не анализировал сети (комменты в группе не считал

    Итак, уважаемые студенты, думаю, что это последнее задание. Касается только тех, кто не прнимал участия в подсчёте статистики по комментариям в ВК-группе (кто принимал, делать не надо).

    Досматриваем фильм с Хансом Рослингом “Удовольствие от статистики”. Я перевёл титры до конца.

    К сожалению, я не нашёл способа, как посмотреть фильм с титрами сразу в онлайне, поэтому фильм нужно сначала скачать к себе на компьютер. http://files.mail.ru/8388D6FFD3294D89B46A3F7AA1DC7B1E Размер файла – 207 мегабайтов. Это файл архива в формате zip. В нём фильм и субтитры в Windows-коридовке (cp1251). Если не знаете, чем смотреть видео с субтитрами, рекомендую VLC-плейер. Распакуйте оба файла из архива в одну папку и VLC автоматически подключит субтитры после начала просмотра.

    По результатам просмотра пишем текст объёмом 4000 символов (не считая пробелы). Вопросы для освещения в вашем сочинении:

  • О чём из этого фильма вы бы хотели рассказать своим друзьям.
  • Есть ли что-то в фильме, во что вам трудно поверить.
  • Как заинтересовать студентов заниматься анализом данных.
  • Какие задания стоит давать студентам, чтобы им было интересно изучать анализ данных.
  • Присылайте своё сочинение прямо в тексте письма, без вложенных файлов, но строго соблюдая нижнюю границу объема (т.е. чтобы было не меньше).

    Текст должен быть своим. Если обнаружится, что текст или его части были присланы кем-то раньше, или содраны из источников (более 20% текста), студент получает автоматом незачёт.

    Крайний срок сдачи – 23:59 минут 22 декабря 2013 года по московскому времени. Лучше раньше, а то вдруг у преподавателя возникнут вопросы, а студент не успеет на них ответить.

    Запоздалые сообщения в стиле “У меня не запустилось” или “Титры отображаются закорючками” приравниваются к отсутствию сочинения.

    Дополнительно будет сообщено о том, кому не хватает баллов для получения зачёта даже при наличии сочинения (те, кто сурово не делал домашку).

    По вопросам пишите.

    К занятию 29.11.2013: анализируем социальные сети

    Кто хочет сети анализировать

    Итак, кто хочет принять участие в проекте по анализу комментариев в ВК-группе “Жесть по-псковски” на тему проноса факела через Псков, напишите об этом в почтовую группу на адрес pskovpr2016@googlegroups.com. Если что-то не получилось, напишите мне на alexander@matrunich.com или спросите и старосты-Николая.

    Когда напишите, я, Николай или Екатерина добавят вас в число редактором эл.таблицы. Потом возьмёте квоту себе и вбивайте по ней данные в таблицу.

    Все мысли, которые приходят вам в голову по поводу анализа этих комментов, пишите в группу, чтобы все видели, какой (какая) вы молодец, и мы будем мысль вашу обсуждать и дополнять. А я вам ещё и балл-другой в рейтинг докину.

    Кто не хочет сети анализировать

    Задание для тех, кто не хочет в дело с комментариями влезать: берём данные, которые мы в предыдущих лекциях использовали для расчёта Хи-квадрат, и считаем тот же Хи-квадрат в электронной таблице (Excel, OpenOffice.org Calc, LibreOffice Calc, Google таблицы и пр.). И там же ниже или в тексте письма пару строк о том, где вам показалось удобнее это делать, в эл.таблице или в R. Мне прислать на почту ваш файл или доступ в таблице в гугл-документах. По вопросам пишите, но заранее. В четверг вечером ответить уже не успею.

    К занятию 22.11.2013: понимаем смысл статистики

    Чтение

    В вики-учебнике А.И.Орлова “Математика случая” читаем раздельчик “Суть вероятностно-статистических методов” (до раздела “Случайные величины и их распределения”).

    По результатам пишем текст на 500 символов (без учёта пробелов), в котором вам следует придумать один или несколько примеров о том, как статистика может применяться в связях с общественностью. В идеале опишите, какой статистический метод (из изученных нами) может в этом примере использоваться и как.

    Задания в R не будет в связи с поздней публикацией 🙂

    К занятию 15.11.2013: регрессионный анализ

    Чтение

    Ирина Парошина. Как музыкальный сервис Pandora узнаёт и предсказывает предпочтения слушателей http://www.computerra.ru/87479/pandora-bigdata/

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

    Практика

    Сергей предположительно Едунов. Линейная регрессия с примерами на R

    По аналогии с примером взять те данные по пульсу и росту, которые мы собрали на прошлой паре (у Наталии точно данные должны быть) и построить на их основе регрессионную модель, а затем описать полученные коэффициенты. Если этих данных вам не достать, взять встроенные в R данные о скоростях и тормозном пути автомобилей 20-х годов прошлого века data(cars) и построить модель по влиянию скорости на тормозной путь. Если эти данные не нравятся, найдите что-нибудь своё, но не меньше 10 наблюдений.

    К занятию 08.11.2013

    Чтение

    Сергей Мастицкий. Классические методы статистики: критерий хи-квадрат. Пишем в случае, если что-то из публикации осталось непонятным.

    Практика

    В качестве практического задания проверим гипотезу, что курение во время беременности влияет на рождение ребёнка с недостаточным весом. У нас есть данные о рождениях детей в 1989-1991 в штате Пенсильвания (США) чернокожими матерями в возрасте до 21 года. (Источник данных: http://www.portal.state.pa.us/portal/server.pt?open=18&objID=901780&mode=2).

    Курение Вес <2500г. Вес 2500+ г.
    Курит 249 1305
    Не курит 1081 8526

    Для проверки гипотезы пользуемся статистикой Хи-квадрат. Делать можно по аналогии со статьей, которую читаем. Мне присылайте ваш код, результаты выполнения и вывод.

    К занятию 01.11.2013: рисуем доверительные интервалы

    Чтение

    Олег Парамонов. Как анализ данных победил в спорте

    Вопрос (ответ 250-300 символов без пробелов): как вы относитесь к тому, что для повышения эффективности в спорте менеджеры стали применять методы статистической обработки данных.

    Практика

    Внимание, кто не разобрался с использованием квадратных скобок (отбор частей массива), рекомендую ознакомиться с публикацией “Выборка частей массивов data.frame с помощью [квадратных скобок] в R”.

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

    1. Выделить из массива данных два подмассивчика поменьше.
    2. Для каждого подмассива определим доверительные интервалы, в которых с 95% вероятностью находятся генеральные средние этих подмассивов.
    3. Для каждого подмассива посчитаем выборочные средние.
    4. Создадим новый массив, содержащий средние и интервалы для каждой группы.
    5. Представим полученные результаты в виде гистограммы с усами.
      • столбики будут показывать выборочные средние подмассивов.
      • усы будут показывать доверительные интервалы, в которых находятся генеральные средние подмассивов.
    # Загружаем библиотеки: библиотека, в которой хранится массив с данными
    library(boot)
    # библиотека для рисования
    library(ggplot2)
     
    # Активируем массив с данными
    data(amis)
     
    # Выделяем подмассивы. В этом примере я создам массив data, в котором будут
    # данные из второго периода эксперимента (сразу после установки знака), из
    # обоих групп - тестовой и контрольной. Выделять данные из какой-либо пары
    # участков я не буду. Далее я оценю различия между контрольной и тестовой
    # группами.
     
    data <- amis[amis$period == 2, ]
     
    # Теперь нужно посчитать интервалы для каждой из экспер.групп. Откуда взять
    # интервалы? Помните, что функция t.test() помимо всего прочего считает
    # такие интервалы? Например, для контрольной группы:
    t.test(data$speed[data$warning == 2])
    ## 
    ##  One Sample t-test
    ## 
    ## data:  data$speed[data$warning == 2]
    ## t = 215.9, df = 1399, p-value < 2.2e-16
    ## alternative hypothesis: true mean is not equal to 0
    ## 95 percent confidence interval:
    ##  38.80 39.51
    ## sample estimates:
    ## mean of x 
    ##     39.15
    
    # Вот они у нас! После строчки "95 percent confidence interval:" Как их
    # оттуда достать? Не вручную же переписывать? Спасибо R: функция t.test()
    # может не просто вывести на экран результаты своего выполнения, но её
    # результат можно разобрать на отдельные части и использовать дальше.  Для
    # этого результат функции t.test() "загоняем" в новую переменную:
     
    t2 <- t.test(data$speed[data$warning == 2])
     
    # Теперь взглянем нв "внутренности" результатов работы функции t.test()
    str(t2)
    ## List of 9
    ##  $ statistic  : Named num 216
    ##   ..- attr(*, "names")= chr "t"
    ##  $ parameter  : Named num 1399
    ##   ..- attr(*, "names")= chr "df"
    ##  $ p.value    : num 0
    ##  $ conf.int   : atomic [1:2] 38.8 39.5
    ##   ..- attr(*, "conf.level")= num 0.95
    ##  $ estimate   : Named num 39.2
    ##   ..- attr(*, "names")= chr "mean of x"
    ##  $ null.value : Named num 0
    ##   ..- attr(*, "names")= chr "mean"
    ##  $ alternative: chr "two.sided"
    ##  $ method     : chr "One Sample t-test"
    ##  $ data.name  : chr "data$speed[data$warning == 2]"
    ##  - attr(*, "class")= chr "htest"
    
    # Жуть? :) А если приглядеться, то можно разобрать, что результат t.test() -
    # это список (list) из девяти компонентов. Название каждого компонента
    # приведено после знака "$". После двоеточия указан тип данных, составляющих
    # этот компонент, значение и дополнительные атрибуты. Нас интересует
    # компонент "conf.int", состоящий из двух чисел. Оставим только этот
    # компонент.
     
    t2$conf.int
    ## [1] 38.80 39.51
    ## attr(,"conf.level")
    ## [1] 0.95
    
    # Нам вывели два числа, а в придачу и атрибут этого компонета - conf.level,
    # это уровень доверительной вероятности, равный сейчас 0.95, т.е. 95%. Он
    # нам сейчас не нужен.  Вспомним про квадратные скобки:
     
    t2$conf.int[1]
    ## [1] 38.8
    
    # И вот наш нижний доверительный интервал в виде отдельного числа. Загоняем
    # в переменные. Сначала нижний интервал тестовой группы.
    int_low <- t.test(data$speed[data$warning == 1])$conf.int[1]
    # У нас появился вектор int_low длиной 1. Добавим к нему второй элемент, в
    # котором будет содержаться нижний интервал контрольной группы.
    int_low[2] <- t.test(data$speed[data$warning == 2])$conf.int[1]
     
    # То же самое для верхних интервалов
    int_high <- t.test(data$speed[data$warning == 1])$conf.int[2]
    int_high[2] <- t.test(data$speed[data$warning == 2])$conf.int[2]
     
    # Переключимся пока на следующую задачу - посчитаем средние.
     
    m <- mean(data$speed[data$warning == 1])
    m[2] <- mean(data$speed[data$warning == 2])
     
    # Средние готовы. Объединяем всё в новый массив d.
     
    d <- data.frame(speed = m, low = int_low, high = int_high, group = factor(c("test", 
        "control")))
     
    # Проверим, что получилось.
    d
    ##   speed   low  high   group
    ## 1 35.77 35.45 36.09    test
    ## 2 39.15 38.80 39.51 control
    

    Теперь рисуем.

    f <- ggplot(d, aes(y = speed, x = group, fill = group, ymax = high, ymin = low)) + 
        geom_bar(stat = "identity") + geom_errorbar() + ggtitle("Участки - все")
    plot(f)

    plot of chunk unnamed-chunk-2

    В моём варианте доверительные интервалы получились очень маленькие (из-за того, что выборка большая). Не возникает сомнений, что эти интервалы двух групп - контрольной и тестовой, не пересекаются. Это значит, что средние значения скоростей в генеральных совокупностях различаются и в контрольной группе скорости выше, чем в тестовой. Т.е. предупреждающие знаки повлияли.

    Задание: сделать такую же картинку, но для отдельной пары участков. Пару участков определите так: к номеру месяца даты вашего рождения прибавьте 4. Если получается больше 12, вычитайте 12. Т.е. если вы ноябрьский(ая), то к 9 прибавляете 4, получается 13. Это больше 12, тогда вычитаете 12, получается 1. Значит, вы берёте пару №1.

    Присылайте мне картинку, копию кода, которым вы её сотворили, и интерпретацию (выводы) картинки. Не забудьте подправить название на картинке.

    К занятию 25.10.2013

    Поскольку с публикацией домашнего задания возникла задержка, сдвигаем на 1 сутки крайний срок сдачи домашнего задания, т.е. до 11:00 26 октября 2013 г.

    Чтение

    Читаем краткую справку о биографии математика Уи́льяма Си́ли Го́ссета в Википедии, который разработал метод, которым мы воспользуемся в практической части. По результатам пишем абзац (250-300 символов, внимание, не считая пробелов!) с размышлениями о том, насколько этично нам с вами пользоваться такими математическими методами, которые были разработаны для производства пива, т.е. алкогольного напитка. А алкоголь, как известно, портит здоровье и сокращает жизнь человека. (внимание, не присылайте текст в виде вордовского файла, а то есть ещё такие студенты на бронепоезде).

    Практика

    В качестве домашнего задания повторяем то, что делали на уроке. Опять определим, есть ли разница между средними скоростями до установки знака и после.

    В нашей работе мы воспользуемся T-критерием Стьюдента. Итак, на участке дороги мы замерили скорость 100 автомобилей, потом установили знак с рекомендацией снизить скорость, и замерили скорость ещё 100 автомобилей. Вопрос, есть ли разница между средними скоростями до и после установки знака. Здесь мы не можем просто посчитать среднюю в каждой группе и сравнить их, т.к. у нас есть измерения не всех тысяч и тысяч автомобилей, которые проехали по этому участку, а всего лишь по одной сотне. Говоря языком статистики, все тысячи и тысячи авто с первой по последнюю, которые проехали - это генеральная совокупность (по-английски - universe, т.е. "вселенная"), а сотня, которую мы замерили - это выборочная совокупность или выборка (по-английски - sample, т.е. "пример"). Выбирая такую сотню из тысяч, мы можем случайно выбрать самых быстрых - тогда выборочная средняя получится слишком большой по сравнению с генеральной средней. Или самых медленных. Поэтому по выборочной средней мы не можем однозначно сказать, какова же генеральная средняя, и, следовательно, отличается ли генеральная средняя скоростей до установки знака от генеральной средней скоростей после установки.

    У г-на Госсета, как вы прочли из его биографии, была аналогичная проблема, только не с авто, а с пивом. И он додумался! Не будем углубляться в формулы (можете найти их в Википедии), главное понять, где этот T-критерий можно применять. Он подходит для тех данных, которые распределены по нормальному закону. Опять не будем углубяться в формулы, но если на значение вашей переменной оказывает влияние множество разных мелких факторов, среди которых нет одного главного, то скорее всего, ваши данные распределены нормально, и к ним можно применять T-критерий.

    Разберём на примере использование функции t.test() в R:

    1
    
    > t.test(formula = speed ~ warning, data = amis)

    Итак, мы запросили R выполнить функцию t.test с параметрами formula и data. В формуле содержится информация о том, какие переменные использовать и как. В нашем случае я запросил взять числовую переменную speed и разбить её на две группы по значению переменной warning (где знак был установлен - группа 1, где не был - группа 2). В параметре data указан массив, из которого брать данные.

    В ответ на запрос R нам выдал следующее:

    	Welch Two Sample t-test
    
    data:  speed by warning
    t = -16.8089, df = 8424.141, p-value < 2.2e-16
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
     -2.614303 -2.068230
    sample estimates:
    mean in group 1 mean in group 2 
           36.63791        38.97918
    

    "Welch Two Sample t-test" - указывается, что используется не оригинальный T-критерий Стьюдента, а его модифицированная господином Уэлчем версия для двух выборок (у нас же две группы - участки со знаком и без).

    "data: speed by warning" - напоминает, какие данные используются.

    "t = -16.8089" значение T-критерия. В таком виде нам ничего не говорит. Можно было бы залезть в справочные таблицы, но у нас же есть компьютер!

    "df = 8424.141" - degrees of freedom, количество степеней свободы, пригодилось бы, если бы мы пользовались справочными таблицами.

    "p-value < 2.2e-16" - P-значение, вероятность того, что нулевая гипотеза верна. В нашем случае нулевая гипотеза заключается в том, что между генеральными средними двух групп нет различий. Это самый важный показатель, если P-значение маленькое, значит средние групп различаются. "alternative hypothesis: true difference in means is not equal to 0" - "альтернативная гипотеза: истинное различие между средними не равно нулю". Если P-значение маленькое, то мы отклоняем нулевую гипотезу, и принимаем альтернативную. "95 percent confidence interval: -2.614303 -2.068230" 95% доверительный интервал: с вероятностью 95% мы можем быть уверены, что различие между генеральными средними двух групп попадает в интервал -2.6...-2.07, т.е. средняя скорость всех тысяч и тысяч авто на тестовом участке меньше средней скорости всех тысяч и тысяч авто на контрольном участке где-то на 2.07-2.6 миль в час.

    sample estimates:
    mean in group 1 mean in group 2 
           36.63791        38.97918

    Выборочные оценки (т.е. оценки выборочной совокупности, а не генеральной. Оценки генеральной совокупности были выше). Средняя в группе 1 - 36.6 миль/час, в группе 2 - 39 миль/час.

    Теперь, внимание, задача!
    Взять тестовый участок из пары с номером, совпадающим с номером месяца вашего дня рождения и оценить различия средних с помощью T-критерия между периодами сразу после установки знака и через время после установки. Мне в тексте письма прислать ваш код, результаты его выполнения и краткие выводы (есть ли различия и почему).

    В случае затруднений пишите письма!

    К занятию 18.10.2013

    Чтение

    Олег Парамонов. Опасная сторона «больших данных»
    Что вы посоветуете (250-300 символов) своим друзьям, чтобы снизить их риски, связанные с накоплением корпорациями и государствами персональных данных?

    Смотрим ролик:
    Формула реформирования математического образования Артура Бенджамина
    По ролику отвечаем (250-300 символов) на вопросы, почему, во вашему мнению, статистика и теория вероятностей актуальна именно в наши дни, и на какой самый интересный вопрос вы бы хотели получить ответ с помощью анализа данных и статистики.

    Практика

    Продолжаем тему с автомобильными скоростями и дорожными знаками. На этой неделе мы увеличим объём анализируемых данных (теперь у каждого в пачке будет по три пары участков, а не по одной!) и взглянем на различия между скоростями разных периодов времени с помощью супер-графика "Ящик с усами". Также мы сделаем график более презентабельным и добавим к нему обозначения на великом и могучем русском языке.

    1. Загружаем библиотеки boot и ggplot2
    2. Подключаем массив данных amis
    3. Далее по шагам

    У каждого в массиве будет по три пары участков. Получим три случайных числа,
    которые и станут номерами участков. Для этого используем функцию sample(),
    которая берёт первый аргумент - исходный массив, в нашем случае это числа
    от 1 до 14 (номера пар участков дорог), а затем из этого массива случайно
    берёт три числа.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    places <- sample(1:14, 3)
    # Итак, теперь в переменной places хранится числовой вектор с тремя случайными 
    # числами. Можете проверить.
     
    # Следующим шагом вытаскиваем из массива amis только те пары, номера которых
    # хранятся в places.
    myamis <- amis[amis$pair %in% places,]
     
    # Создаём переменную с объектом ggplot, т.е. с будущим графиком. Указываем,
    # что будем работать с массивом myamis, что по оси Х будет представлена переменная
    # warning, которая сообщает, установлен ли знак на данном участке, что по оси Y
    # будет представлена переменная speed.
    f <- ggplot(data = myamis, aes(x = warning, y = speed))
     
    # Взглянем на то, что получается: добавим к переменной f функцию с отрисовкой
    # графика в виде "Ящик с усами".
    f + geom_boxplot()
    # Странная картина? Видите "ящик", "усы" и точки?

    Отрезок, разделяющий "ящик" на две части - это медиана (скоростей), которая, как
    помним, делит наш массив на две равные части.
    Горизонтальные границы "ящика" сверху и снизу от медианы - это квартили, то же
    самое, что медиана, но указывают не 50%-ную долю массива, а 25%-ую и 75%-ую.
    "Усы", т.е. вертикальные отрезки за пределами "ящика" показывают, в каких
    пределах находится 98% (примерно) всего массива. А точки - это "выбросы",
    т.е. крайние значения, совсем выпадающие из общего ряда.

    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    # На графике проблема в том, что все наблюдения (скорости) опять смешались в одну
    # массу. Смысл переменной warning - участок дороги со знаком (1), или нет (2).
    # Но R об этом не знает, трактует warning как число, и загоняет все наблюдения
    # под одну гребёнку со значением warning равным 1,5. Знак есть, но его нет :)
     
    # Переделаем переменную warning из числовой в категориальную (фактор) и зададим
    # категории: 1 - участок дороги в эксперименте играет тестовую роль
    # (знак ставится), 2 - у участка контрольная роль (без установки знака).
    myamis$warning <- factor(myamis$warning, labels=c("Тестовая", "Контрольная"))
     
    # Попробуем, что получается.
    f <- ggplot(data = myamis, aes(x = warning, y = speed)) + geom_boxplot()
    f
     
    # Уже лучше! Для полноты картины переконвертируем мили в километры.
    myamis$speed <- myamis$speed * 1.609344
     
    # Ещё раз посмотрим на результат.
    ggplot(data = myamis, aes(x = warning, y = speed)) + geom_boxplot()
     
    # У нас продолжают быть смешанными наблюдения в разные периоды времени.
    # Добавим информацию о периоде в график, но предварительно также перекодируем
    # числовую переменную period в категориальную с помощью функции factor()
    myamis$period <- factor(myamis$period, labels=c("До установки\nзнака",
                                                    "Сразу после",
                                                    "Через время"))
     
    # Рисуем, добавив новое художеств.средство - заливка цветом (fill).
    f <- ggplot(data = myamis, aes(x = warning, y = speed, fill = period))
    f <- f + geom_boxplot()
    f
     
    # Меняем надписи на русские. Вместо XYZ впишите номера своих участков
    f <- f + labs(title = "Участки №3, 11, 4 Александр М.", 
                  x = "Роль дорожного участка в эксперименте",
                  y = "Скорость автомобиля (км/ч)")
    f
     
    # Остаётся легенду по-русски назвать. Здесь логика сложнее.
    # В нашем случае легенда отображает, как представлена шкала (scale), 
    # которая использует заливку цветом (fill) для показа 
    # отдельных значений (discrete). Получается функция scale_fill_discrete()
    f <- f + scale_fill_discrete(name="Период
    эксперимента")
    ggsave('ex18102013_amis.png', width = 6, height = 8, dpi = 100)

    Что получилось у меня:
    ex18102013_amis
    В заключение пишем абзац (минимум 250-300 символов анализа) с ответом на вопрос, как повлияла установка знаков на скорость авто. Пример:

    В анализе были использованы данные эксперимента с участков №№3,4,11. На тестовом участке дороги медианная скорость движения не изменялась во всех периодах исследования и составляла около 88 км/ч. На тестовом участке дороги заметно снижение максимальных скоростей: после установки знака 98% всех автомобилей не превышали порога скорости в 115 км/ч, когда до установки знака этот порог был выше 125 км/ч. Спустя некоторое время после установки знака (третий период) максимальные скорости выросли по сравнению со вторым периодом, но не достигли скорости в 125 км/ч. Только один автомобиль набрал скорость около 130 км/ч. Данные с контрольного участка, на котором не устанавливались предупреждающие знаки, показывают небольшое снижение максимальных скоростей. Это следует учесть при формировании окончательных выводов.

    К занятию 11.10.2013

    Чтение

    Читаем статью:
    Катерина Китаева. Facebook «залайкает» ТВ. http://www.rbcdaily.ru/media/562949989077143
    После прочтения ищем в любой социальной сети два статуса/комментария (например, ваших друзей), которые подошли бы для участия в таком анализе, о котором идёт речь в статье. Копируете цитату и адрес страницы.

    Смотрим ролик:
    Jean-Baptiste Michel, Erez Lieberman Aiden. Что мы узнали из 5 миллионов книг. http://www.ted.com/talks/lang/ru/what_we_learned_from_5_million_books.html

    По ролику делаем то же самое, что в прошлый раз.

    Практическое задание

    Снова работаем с данными об ограничении скорости.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    
    # Загружаем библиотеку, в которой содержатся данные
    library(boot)
    # Подключаем массив с данными
    data('amis')
    # Теперь каждый студент берёт свой порядковый номер в группе и 
    # делает себе подмассивчик d. Замените N на свой номер (максимум 14).
    d <- amis[amis$pair == N, ]
    # Массив d - это тот же amis, но только с теми строками, в которых
    # переменная pair равна числу N.
    # Загружаем библиотеку для создания графиков
    library(ggplot2)
    # Создаем переменную f (сокращение от figure), в которой будет храниться наш график.
    f <- ggplot(data = d, aes(x = speed))
    # ggplot - название функции
    # параметр data = d - указываем, что в качестве источника данных
    # будет использоваться массив d
    # параметр aes - сокращение от aesthetics - эстетика или художественная форма
    # и теперь в эстетике мы определяем, что в качестве такого
    # художественного средства как расположение по горизонтали, т.е.
    # координата X, мы будем использовать колонку speed из массива d
    # Но функция пока ещё не знает, с помощью какой графической формы
    # это расположение изобразить. Укажем ей:
    f <- f + geom_bar(binwidth = 1)
    # Мы взяли переменную f, затем прибавили к ней ещё geom_bar(), 
    # а потом всё это "сунули" опять в переменную f. Т.е. мы модифицировали
    # эту переменную.
    # Теперь ggplot знает, что переменную speed на горизонтальной оси 
    # следует изобразить с помощью такого геометрического объекта (geom) как
    # прямоугольник (bar). При этом ширину прямоугольника (binwidth) мы задали размером
    # в 1 единицу (speed у нас измеряется в милях в час). Т.е. один прямоугольник - 
    # это одна миля в час.
    # А что с высотой прямоугольника? Поскольку явно мы высоту прямоугольника в 
    # эстетике не задавали, то geom_bar() знает, что в этом случае (по умолчанию)
    # нужно посчитать количество раз, сколько каждое из значений speed встречается.
    # Высота прямоугольника - это и есть то, сколько раз за весь эксперимент 
    # у автомобилей была зафиксирована такая скорость.
    # Рисуем график:
    f
    # График получился серьёзный, но практически бесполезный:
    # у нас смешались все измерения: со знаком и без, до установки знака, во время, после.
    # Разделим столбцы на части - одним цветом, где знак ставили, а другим - где нет.
    # Для этого в нашу эстетику добавим новый параметр fill - заливка.
    f <- ggplot(data = d, aes(x = speed, fill = as.factor(warning)))
    # Мы заново создали переменную f с теми же параметрами, но добавили fill
    # Т.е. мы говорим функции ggplot: Закрась, пожалуйста, прямоугольники разными цветами
    # в зависимости от значения переменной warning.
    # Здесь пришлось переменную warning "обернуть" в функцию as.factor(), которая 
    # превращает числа в категории (warning в amis записан как число, а fill на входе
    # хочет получать категорию).
    f + geom_bar(binwidth = 1)
    # geom_bar по умолчанию ставит прямоугольники разных цветов друг на друга.
    # Так сравнивать неудобно, поставим их рядом с помощью параметра position
    f + geom_bar(binwidth = 1, position = 'dodge')
    # Так уже лучше. Сохраним этот график в виде файла.
    ggsave('f1.jpg')
    # В нашем графике остаются невыделенными разные периоды: до установки знака,
    # во время и после. Разделим на три отдельные панели:
    f + geom_bar(binwidth = 1, position = 'dodge') + facet_wrap(~ period)
    # Функция facet_wrap() указывает, что график нужно разбить на отдельные подграфики,
    # разделив изначальный массив d на три части по значению переменной period.
    # Эти узкие прямоугольники теперь смотрятся не очень понятно. Заменим на
    # более прогрессивный вид - плотность распределения.
    f + geom_density() + facet_wrap(~ period)
    # Уже лучше. Добавим 30% прозрачности:
    f + geom_density(alpha = .3) + facet_wrap(~ period)
    # Добавим заголовок. Вместо N укажите свой номер.
    f <- f + geom_density(alpha = .3) + facet_wrap(~ period)
    f + ggtitle("Pair = N")
    # Сохраняем картинку.
    ggsave('f2.jpg')

    К сохранённым картинкам добавьте ещё текст объёмом 250-300 символов, в котором опишите, какие закономерности вы обнаружили на этих графиках.

    Итак, на этом домашнем задании с вас:

    1. Примеры статусов/комментариев по статье про Фейсбук.
    2. Абзац (250-300 символов) впечатлений про видео.
    3. Две картинки и абзац (250-300 символов) анализа этих картинок.

    Вопросы можно задавать на alexander@matrunich.com. На этот же адрес присылайте выполненное домашнее задание (прошу указывать тему "Задание по анализу к 11.10.2013" и имя/фамилию, если не совпадает с именем отправителя письма).

    Задание, присланное позже 11:00 11.10.2013 (определяется по времени получения в моём почт.ящике), считается невыполненным, и баллы за него не начисляются.

    К занятию 04.10.2013

    Чтение

    Вместо чтения смотрим ролик на английском языке с русскими субтитрами. По результатам просмотра написать один абзац текста (250-300 символов) с ответом на вопрос, что вас удивило (впечатлило, заставило задуматься) в этом ролике больше всего.

    Невероятная статистика от Ханса Рослинга

    Практическое задание

    В Великобритании есть графство Кембриджшир. В 90-х годах прошлого века администрация графства задалась вопросом снижения аварийности на опасных участках дорог и провела эксперимент. В эксперименте изучалось влияние предупреждающих знаков на скорость автомобиля. Было выбрано 28 мест на дорогах, которые были сгруппированы в 14 пар. В каждую пару входили похожие по типу дорог и интенсивности движения участки. На одном участке в паре устанавливался знак, предупреждающий об опасном участке и рекомендующий водителю снизить скорость. На втором участке в паре никаких знаков не устанавливалось. На каждом из 28 дорожных участков были проведены замеры скорости: до возведения знаков, сразу после возведения знаков и через некоторое время после возведения знаков. На каждом участке за каждый замер были зафиксированы скорости примерно ста автомобилей. Т.е. всего 100 * 3 * 28 = 8400 скоростей автомобилей.

    Администрация графства Кембриджшир любезно согласилась предоставить результаты этого эксперимента ученым из Кембриджа, которые, в свою очередь, опубликовали эти данные в R-расширении boot. Данное расширение входит в число расширений по умолчанию, и поэтому, если на вашем компьютере уже установлен R, то и данные эксперимента тоже имеются.

    Данные хранятся в таблице (дата-фрейме) под названием amis. В таблице 4 колонки и 8437 строк. Названия колонок и их смысл следующие:

    speed
    Скорость машины (миль в час)
    period
    Числовая переменная, указывающая момент проведения замера: 1 - до установки знака, 2 - сразу после установки, 3 - через некоторое время после установки.
    warning
    Числовая переменная, указывающая, был ли установлен на данном месте знак: 1 - установлен, 2 - не установлен.
    pair
    Числовая переменная, указывающая порядковый номер пары: от 1 до 14.

    Зададимся целью определить, влияют ли дорожные знаки на скорость автомобилей. На этом занятии просто взглянем на этот массив.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    # Загружаем библиотеку
    library(boot)
    # Подключаем массив с данными
    data('amis')
    # Посмотрим на первые строки этого массива
    head(amis)
    # Также можно посмотреть на низ (последние строки) массива
    tail(amis)
    # Смотрим среднюю скорость
    mean(amis$speed)
    # Смотрим медийную скорость
    median(amis$speed)

    Далее задача для самостоятельного изучения. Каждый из студентов берёт из общего массива данных один кусок, который содержит информацию только об одной паре. Т.е. вы можете создать новую переменную, в которую поместите копию дата-фрейма amis, но оставите только те строки, которые относятся к одной паре.

    Информация об этом есть в статье Е.Балдина "Типы данных в R и принципы работы с ними". Читаем всю статью, пытаемся понять, записываем вопросы, чтобы задать на лекции. В статье дата.фреймы автором называются таблицами данных.

    Номер пары выбирайте по своему номеру в списке группы (допускаются расхождения с моим списком не более +/-2).

    Допустим, вы создали новый дата.фрейм с информацией по одной паре под именем data. Посмотрим на различия средних:

    17
    18
    19
    20
    
    # Смотрим среднюю скорость на участке, на котором знак будет установлен, но до установки знака
    mean(data$speed[data$period==1 & data$warning==1,])
    # Смотрим среднюю скорость на участке, на котором знак установлен, в момент сразу после установки
    mean(data$speed[data$period==2 & data$warning==1,])

    Выполненное задание иметь в виде скрипта на ноутбуке или в распечатанном виде.

    Прошу к занятию установить следующие пакеты:

    # В этом списке добавлен пакет 'knitr'. И прошлый раз я забыл
    # в этой строке поставить вторую закрывающую скобку :)
    install.packages(c('ggplot2', 'reshape2', 'plyr', 'stringr', 'lubridate', 'knitr'))

    Вопросы задавать на alexander@matrunich.com


    К 27.09.2013

    Чтение

    Обязательное (подготовить 1 вопрос)

    Олег Парамонов. Скрытое богатство Twitter http://www.computerra.ru/83456/twitter-bigdata/

    Дополнительное

    Практическое задание

    Цель и задачи

    Цель: оценить свою среднюю успеваемость.

    Задачи:

    Исходные условия

    Предполагается, что вы установили на свой компьютер R. Инструкции я даю просто для R, желающие могут сделать то же самое в RStudio. Также считаем, что у вас есть доступ к своей зачётке, откуда вы можете переписать свои экзаменационные оценки за прошлые семестры.

    Пошаговая инструкция

    1. Создание файла со скриптом (сценарием).
      1. Открываем  редактор текста "Блокнот" (установлен в каждой операционной системе Windows).
      2. На первой строке пишем комментарий (всегда начинается со знака #):
        # Скрипт для определения средней экзаменационной оценки.
      3. Теперь сохраняем файл, чтобы не пропал. Для занятий рекомендую создать отдельную папку (каталог) в корне диска C: или D: (если есть). Название папки не должно содержать пробелов и русских букв. Пример подходящего названия папки: D:/data_analysis, или C:/da, или D:/univer/data_analysis. Сохраняем файл в этой папке. В названии файла тоже не ставьте пробелов и русских букв. Назвать можно da1 (сокращённо от data analysis #1). Блокнот автоматически добавить расширение .txt, т.е. полное название файла будет da1.txt.
        Замечание: если вы в Windows никогда не меняли настроек отображения файлов, то операционная система скрывает от пользователя расширение файла. Т.е. если вы в Блокноте сохраняете файл под именем da1, то настоящее имя файла будет da1.txt, но Проводник вам будет показвать просто da1. Если вас бесит такое положение вещей, можете это исправить по этим инструкциям.
      4. На второй строке скрипта создаём переменную с вашими экзаменационными оценками:
        exams <- c(3, 3, 4, 5, 4, 3, 4, 5, 4, 5, 3)

        Обратите внимание, что здесь и ниже буква c после стрелки - это английская буква, а не русская.

      5. Считаем среднее арифметическое
        x <- mean(exams)
      6. Считаем медиану
        me <- median(exams)
      7. Создаем таблицу частот оценок, откуда узнаем моду
        freq <- table(exams)
      8. Делаем табличку со средним и медианой
        tab <- data.frame(статистика=c("среднее", "медиана"), значение=c(x, me))
      9. Печатаем наши таблички
        print(tab)
        print(freq)
      10. Сохраняем наш скрипт - он готов. Теперь этот сценарий нужно "скормить" программе R.
    2. Запускаем скрипт в R (или RStudio).
      1. Запускаем R (или RStudio)
      2. В том окне, в котором вылез длинный текст на русском (или английском) языке типа
        R version 3.0.1 (2013-05-16) -- "Good Sport"
        Copyright (C) 2013 The R Foundation for Statistical Computing
        ...
        Внизу после знака "больше" пишем:

        > source("d:/data_analysis/da1.txt")

        Вместо d:/data_analysis/da1.txt пишите полный путь и название своего файла. И жмёте Enter.

        У вас должно получится что-то вроде:

          статистика значение
        1    среднее 3.909091
        2    медиана 4.000000
        exams
        3 4 5 
        4 4 3

        Моду определяем из нижней таблички. Троек в нашем случае было 4 штуки, четверок - 4, пятёрок - 3. Чаще всего встречаются тройки и четрвёрки - это и есть мода.

    Файлик со скриптом никуда не деваем. Если несёте ноутбук, берите файл с собой. Потом на занятии сравним, у кого оценки лучше - у мальчиков или девочек, и когда вы лучше учились - в первом семестре или во втором.

    Пока необязательная добавка

    Для рисования красивых картинок вам нужно будет установить несколько дополнительных пакетов в R. Это делается, когда ваш компьютер подключен к Интернету. Для этого запустите R от имени администратора (здесь описано, как это сделать в Windows 7) и введите команду:

    install.packages(c('ggplot2', 'reshape2', 'plyr', 'stringr', 'lubridate')

    Когда нажмете Enter, откроется окно с выбором сайта, откуда загружать эти пакеты. Выбирете свою родную страну (вернее ту, в которой сейчас находитесь). Эти пакеты скачаются и установятся. Теперь можно всё закрыть.

    Если возникнут вопросы, пишите по почте alexander@matrunich.com. В письме пишите не просто "АА!! Он ругается", а копируете те команды, которые вы вводили (включая сам текст сценария), и что вам программа на это отвечала.


    Устарело: 2012/2013 учебный год. Как сдавать зачёт

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

    Отчёт

    Отчёт готовится на основе данных, которые собрал студент. В массиве собранных данных должно быть не менее 10 наблюдений и не менее 3 переменных (вопросов)[Если вы собирали данные в течение курса и мы уже успели их обработать, тогда указанные выше требования соблюдать необязательно].

    Формат документа

    Отчёт - это текстовый документ в формате Google-документа (http://drive.google.com). Создайте там документ с вашим отчётом. В названии документа укажите свою фамилию, имя и ключевую тему отчёта. Например: "Иванов_Иван_книги". В настройках доступа документа добавьте адрес amatrunitch@gmail.com в качестве редактора.

    Структура доклада

    1. Описание анкеты (вопросов, по которым вы собрали данные).
    2. Описательная статистика трех вопросов:
      1. Центральная тенденция (сред.арифм., медиана, мода).
      2. Мера разроса (стандартное отклонение).
      3. Графическое представление переменных (диаграмма, например).
    3. Взаимодействие переменных.
      1. Визуальное представление взаимосвязи (точечный график, например).
      2. Коэффициент корреляции между переменными.
      3. Текстовый вывод: напишите пару предложенией о том, наблюдается ли какая-нибудь зависимость.

    Критерии оценки

    Доклад отменён: готовить не надо

    Как готовится и докладывать

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

    Можно объединиться в группу из нескольких человек и готовить доклад вместе. Я (преподаватель) случайным образом из группы выбираю одного человека, и оценка его выступления также присваивается всем участникам группы. Доклады делаем на этой неделе (20 дек)  и на след (27 дек).

    Доклад в письменном виде не нужен, нужно только выступить устно (желательно со слайдами и/или рисованием на доске). Нельзя выступать, зачитывая текст с бумаги. Максимум, что у выступающего может быть в руках - это несколько карточек-подсказок, на каждой из которой не более 5 слов. На слайдах так же не должно быть более 5 слов на штуку, только графики, картинки или формулы (как у Стива Джобса). Нарушение данного условия ведёт к изыманию у выступающего его материалов, и он/она будет вынужден выступать по памяти.

    Продолжительность доклада - не более 12 минут.

    Темы докладов

    • Шкала Терстоуна измерения установки
    • Метод парных сравнений
    • "Кафетерий" Ликерта (Лайкера)
    • Семантический дифференциал
    • Хи-квадрат (проверка согласия)
    • Дисперсионный анализ
    • Регрессионный анализ
    • Факторный анализ
    • Кластерный анализ
    • Нейронные сети

    Критерии оценки

    ...

    Рекомендуемая литература

     

     

    Расходы на Big Data будут ежегодно расти на треть