Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://tukachev.flogiston.ru/exp.html
Дата изменения: Tue Dec 4 20:48:45 2012
Дата индексирования: Sat Apr 9 22:30:50 2016
Кодировка: UTF-8
Результаты
лонгитюдного эксперимента
в режиме реального времени
Эксперимент
проводится для отработки
схемы взаимодействия: Форма опроса онлайн?> Google.Документы?> R
& Dropbox?>
публикация результатов в
WWW.
Одна
из задач эксперимента ? демонстрация возможностей
организации и
проведения психологических исследований в сети Интернет, анализа и
представления полученных данных с минимальным количеством действий,
осуществляемых вручную. Вы можете наблюдать за процессом
сбора, анализа и представления данных текущего эксперимента.
Эксперимент будет проводится минимум 1 месяц. Дата начала сбора данных:
19.11.2012.
Что измеряется?
Самочувствие, активность, настроение по 9-балльной
шкале (от 1 до 9)
Температура тела (в подмышечной впадине) с помощью
электронного термометра
Примечание:
не следует серьезно относится к измерениям и данным
эксперимента, они
нужны только в
иллюстративных целях, а также для отладки работы скриптов.
Как фиксируются данные?
В специальной форме, созданной в Google.Документы.
Демо-версию формы можно посмотреть по
ссылке.
Пример таблицы с данными в
Google.Документы После отправки формы, данные
попадают в таблицу в Google.docs. R-скрипт загружает эти данные в виде
csv-файла для последующей обработки.
Так выглядят данные уже в среде R
Как
обрабатываются данные?
Для обработки данных написан R-скрипт, который запускается
автоматически по
расписанию. Расписание установлено в файле crontab. R-скрипт загружает
данные
из Google.Документы, строит 3 графика, которые сохраняются в
public-папке моего аккаунта в Dropbox.
На каждом графике фиксируется
дата первого и последнего наблюдения, а также дата его создания. Пример работы R-скрипта
Как часто обновляются данные?
Запуск скрипта происходит в: 00:00, 02:00, 10:00,
12:00, 18:00, 22:00 часов. Стандартный часовой пояс: UTC/GMT+6 Екатеринбург
(при условии, что мой компьютер работает в данный момент). Каждый раз
после запуска R-скрипта происходит загрузка данных,
обработка данных, построение графиков и их сохраниение в Dropbox. Для
того, чтобы увидеть обновленные графики не обязательно очищать кэш
браузера, так он делает это самостоятельно при обнаружении изменившего
изображения в процессе генерации данной html-страницы.
Адрес данной страницы: http://tukachev.flogiston.ru/exp.html
E-mail:
Результаты работы скрипта: В этом разделе
представлены результаты работы скрипта. Все графики строятся в
автоматическом режиме.Красная стрелка
указывает на последнее наблюдение, а зеленая стрелка ? на первое. График 1:
# Загружаем данные myCsv <- getURL("здесть URL на доступ к таблице в Google.Docs &single=true&gid=0&output=csv") data<-read.table(textConnection(myCsv), header = T, sep = ",", stringsAsFactors=FALSE)
# Устанавливаем каталог для сохранения графиков setwd("/home/aelita/Dropbox/Public/exp")
# 1 график (активность~температура) png('act~temp.png', width=600,height=450) p <- qplot(temp,act,data=data, xlab='Температура, С', ylab='Активность,\nоценка по шкале от 1 до 9 баллов', main='Уровень активности в зависимости \n от температуры тела') p <- p + geom_point(colour = "black", size = 4) p <- p + annotate("text", x = 35.7, y = 1.5, label = ann1, colour="green", size=4) p <- p + annotate("text", x = 35.7, y = 1.2, label = ann2, colour="red", size=4) p <- p + annotate("text", x = 35.7, y = 0.9, label = ann3, size=4) p <- p + annotate("text", x = 35.7, y = 1.8, label = rsq1, size=4) p <- p + geom_segment(aes(x = data$temp[l]+0.1, y = data$act[l]+0.5, xend = data$temp[l], yend = data$act[l]), colour="red",arrow = arrow(length = unit(0.5,"cm"))) p <- p + geom_segment(aes(x = data$temp[1]+0.1, y = data$act[1]+0.5, xend = data$temp[1], yend = data$act[1]), colour="green",arrow = arrow(length = unit(0.5,"cm"))) p <- p + theme_bw(base_size = 14, base_family="Georgia") p + geom_smooth(aes(temp, act), method="lm", size = 1, se=TRUE) dev.off()
# 2 график (самочувствие~температура) png('sam~temp.png', width=600,height=450) p <- qplot(temp,sam,data=data, xlab='Температура, С', ylab='Самочувствие,\nоценка по шкале от 1 до 9 баллов', main='Уровень самочувствия в зависимости \n от температуры тела') p <- p + geom_point(colour = "black", size = 4) p <- p + annotate("text", x = 35.7, y = 1.5, label = ann1, colour="green", size=4) p <- p + annotate("text", x = 35.7, y = 1.2, label = ann2, colour="red", size=4) p <- p + annotate("text", x = 35.7, y = 0.9, label = ann3, size=4) p <- p + annotate("text", x = 35.7, y = 1.8, label = rsq2, size=4) p <- p + geom_segment(aes(x = data$temp[l]+0.1, y = data$sam[l]+0.5, xend = data$temp[l], yend = data$sam[l]), colour="red",arrow = arrow(length = unit(0.5,"cm"))) p <- p + geom_segment(aes(x = data$temp[1]+0.1, y = data$sam[1]+0.5, xend = data$temp[1], yend = data$sam[1]), colour="green",arrow = arrow(length = unit(0.5,"cm"))) p <- p + theme_bw(base_size = 14, base_family="Georgia") p + geom_smooth(aes(temp, sam), method="lm", size = 1, se=TRUE) dev.off()
# 3 график (настроение~температура) png('nas~temp.png', width=600,height=450) p <- qplot(temp,nas,data=data, xlab='Температура, С', ylab='Настроение,\nоценка по шкале от 1 до 9 баллов', main='Уровень настроения в зависимости \n от температуры тела') p <- p + geom_point(colour = "black", size = 4) p <- p + annotate("text", x = 35.7, y = 1.9, label = ann1, colour="green", size=4) p <- p + annotate("text", x = 35.7, y = 1.6, label = ann2, colour="red", size=4) p <- p + annotate("text", x = 35.7, y = 1.3, label = ann3, size=4) p <- p + annotate("text", x = 35.7, y = 2.2, label = rsq3, size=4) p <- p + geom_segment(aes(x = data$temp[l]+0.1, y = data$nas[l]+0.5, xend = data$temp[l], yend = data$nas[l]), colour="red",arrow = arrow(length = unit(0.5,"cm"))) p <- p + geom_segment(aes(x = data$temp[1]+0.1, y = data$nas[1]+0.5, xend = data$temp[1], yend = data$nas[1]), colour="green",arrow = arrow(length = unit(0.5,"cm"))) p <- p + theme_bw(base_size = 14, base_family="Georgia") p + geom_smooth(aes(temp, nas), method="lm", size = 1, se=TRUE) dev.off()
NB! Описываемые ниже примеры реализации работают в Ubuntu, а для Windows необходимо предварительно установить и настроить Cygwin.
Запуск скрипта по расписанию (Ubuntu, Windows)
Для задач по расписанию есть в linux средство crontab.
Cron
? демон-планировщик задач,
использующийся для периодического выполнения заданий в определенное
время. Регулярные действия описываются инструкциями, помещенными в
файлы crontab. Пример
реализации в Ubuntu, в котором доступно излагается настройка.
Запуск скрипта происходит по расписанию: 00:00, 02:00, 10:00,
12:00, 18:00, 22:00 часов (при условии, что мой компьютер работает в
данный момент).
Смотрим запись в файле crontab:
aelita@aelita-laptop:~$ crontab -l # m h dom mon dow command
00 0,2,10,12,18,22 * * * LANG=ru_RU.UTF-8 /home/aelita/experiment.R
LANG=ru_RU.UTF-8 перед командой добавлено для того, чтобы не было
проблем с отображением кириллических текстов на графиках. Путь к файлу
скрипта лучше прописывать полностью.
Раньше я запускал скрипт из bash-файла. Это не очень
удобно. Оказывается, R-скрипты можно запускать на исполнение как
bash-скрипты, но это возможно только в том
случае, если в начало скрипта добавить строчку:
#!/usr/bin/Rscript
Уведомление о запуске и
завершении выполнения скрипта (только Ubuntu)
Информационные сообщения из R-скрипта выводятся через
стандартную систему уведомлений в Ubuntu (notify). Notify ?
всплывающие уведомления (прозрачные черные прямоугольники в верхнем
правом углу экрана). Как известно, для уведомлений в Ubuntu применяется
утилита notify-send.
В последних версиях Ubuntu notify-send используется как основное
средство уведомлений. Существует notify-send для Windows.
СМС-уведомление о выполнении R-скрипта (Ubuntu, Windows)
Как это выглядит:
По завершению выполнения R-скрипта происходит отправка смс-уведомления на мой телефон.Реализовано
с помощью програмы sendEmail, вызов которой осуществляется из
R-скрипта. В качестве адреса получателя введен: 7950XXXXXXX@sms.ycc.ru
(используется EMAIL2SMS шлюз моего оператора сотовой связи). Сообщение отправляется следующего вида: "Скрипт выполнен 26.11.2012 20:00:06 за время 5.789 сек".Более подробное описание реализации см. запись в моем блоге.
Статистика времени выполнения
скрипта (запланировано)