Когнитивная психология и эмоции
Субъективные заметки постдока-психолога
Записи в рубрике «R»

Задачка на сегодня

15 июля 2012, анализ данных Метки: , , , , ,

Задачка на сегодня — научиться рисовать такую хрень подобного рода таблографик в ggplot2.

"Лесной" график (forest plot) из metafor

«Лесной» график (forest plot) из metafor

Самое сложное — это сделать легенду, чтоб не вручную координаты прописывать.

Установка TrueType шрифтов (TTF) в R

2 июля 2012, анализ данных Метки: , , , ,

Если вы когда-либо делали графики с русскими подписями в R, то знаете, что периодические появляются проблемы со шрифтами. То буквы слипаются, то вообще одни точки, то еще что. Например вам может выдаваться что-нибудь типа такого:

Warning: conversion failure on 'контроль' in 'mbcsToSbcs':
dot substituted for <ba>

Большую часть этих проблем можно решить с помощью tikz, если вы работаете с pdf. Однако для экспорта в виде растровых (png, jpeg) изображений такой вариант не очень подходит. Убив пару часов я-таки нашел способ, как можно побороть большую часть проблем. Дело в том, что в используемых по умолчанию шрифтах (тех, которые использует postscript) все крайне плохо с кириллицей. Однако просто взять и указать какие-то системные шрифты вместо стандартных не получится. Postscript жаждет видеть только шрифты в определенном формате, а именно в формате afm, а большинство используемых системы шрифтов хранятся в формате True Type Font (ttf). Кроме того, после конвертации их еще надо импортировать, что тоже не очень тривиально. Для того, чтобы решить все проблемы разом есть прекрасный пакет extrafont. Для того, чтобы все заработало, нужно установить пакет, а затем выполнить команду font_import(). Она автоматически находит все шрифты в системе и конвертирует их в нужный формат. После чего можно посмотреть, какие шрифты доступны с помощью fonttable() или fonts(). После этого для использования шрифтов вам достаточно будет подгрузить их с помощью команды loadfonts() и указать нужный шрифт при создании графика. Например:

library(ggplot2)
library(gridExtra)
png('fonttest%03d.png', width=450,height=450)
p <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()+
xlab("Много-много русских буков")+ylab("Русские буковы по вертикали")
 
#шрифт по умолчанию
grid.arrange(p + theme_gray(base_family="sans"),
p + theme_gray(base_family="Impact"),
p + theme_gray(base_family="FreeMono"),
p  + theme_gray(base_family="Droid Serif"))
dev.off()
Пример использования TrueType шрифтов в R

Пример использования TrueType шрифтов в R

Под Windows для работы пакета вам также понадобится указать путь к Ghostscript:

Sys.setenv(R_GSCMD="C:/Program Files/gs/gs9.05/bin/gswin32c.exe")

Несколько мастер-классов по R, 26-27 апреля

23 апреля 2012, анализ данных Метки: , , , ,

«Анализ данных в среде R»

Коллеги, мы рады пригласить вас на серию мастер-классов по анализу данных в среде R, которые пройдут в рамках конференции «Психология XXI века» 26-28 апреля в Санкт-Петербурге.
Особенность R в том, что это – стремительно развивающийся и набирающий популярность язык программирования для статистической обработки данных и работы с графикой. В настоящее время R широко используется как статистическое программное обеспечение для анализа данных и фактически стал стандартом в своей области. Наиболее привлекательные строны языка R – высокая гибкость, огромное сообщество пользователей и разработчиков. Бесплатность пакета делает его серьезной альтернативой таким коммерческим пакетам для анализа данных, как IBM SPSS или Statistica.

Мы предлагаем вам принять участие в нескольких мастер-классах, на которых наши коллеги из МГУ и СПбГУ расскажут об основных принципах R, поделятся опытом решения основных задач, возникающих при анализе данных психологических исследований. Некоторое время будет уделено и новым идеям в сфере анализа данных и представления результатов анализа.

Наша цель – представить психологам-исследователям новый и перспективный инструмент для анализа данных, а также встретиться и познакомиться с теми, кто занимается статистическим анализом данных исследований, интересуется R и новыми идеями в количественной психологии.

Пожелания к участникам
— знание базовых методов анализа данных в психологии или смежных науках (желательно в объеме учебника А.Д.Наследова «Математические методы психологического исследования. Анализ и интерпретация данных» или его аналогах);
— умение работать в каком-либо стат.пакете для анализа данных (SPSS, Statistica, Stata, Matlab, R, SAS и проч.).

Ведущие мастер-классов:

Иван Воронин Психологический институт РАО, лаборатория возрастной психогенетики; МГУ, факультет психологии. Интересы: все, что связано с R и мат.методами

Марат Зайнутдинов СПбГУ, факультет психологии, лаборатория психофизиологии. Интересы: Big data analysis, machine learning, AI

Андрей Четвериков СПбГУ, факультет психологии, лаборатория когнитивной психологии. Интересы: мешанные модели, анализ взаимодействий, контрасты, бутстреп, структурное моделирование, проблемы p, IRT, SDT.

Программа:

26 апреля
18.00-19.00 Иван Воронин Введение в R
19.20-20.20 Марат Зайнутдинов Описательные статистики и проверка гипотез в R

27 апреля
13.00-14.00 Марат Зайнутдинов Многомерные методы: факторный анализ
14.15-15.15 Андрей Четвериков Регрессионный анализ и смешанные модели
15.30-16.30 Андрей Четвериков Графики и представление результатов в R
16.45-18.00 Иван Воронин Literate Statistical Practice продолжение »

Точечная гистограмма в R (dotplot, ggplot2)

25 марта 2012, анализ данных Метки: , , , ,

В ggplot2 версии 0.9.0 добавился интересный вариант визуализации данных — dotplot. По сути это гистограмма, которая отражает напрямую количество наблюдений. Не знаю, как это по другому описать, просто взгляните на график:

Dotplot + density plot, ggplot2

Dotplot + density plot, ggplot2

Линиями отражено распределение плотности, «точками» — наблюдения. Шкала x — средняя точность ответов. Данные представлены для двух групп из одного из моих экспериментов. На графике четко видно, что в обеих группах есть люди, которые просто не прочитали инструкцию, или прочитали неправильно (точность 0.1 — правильный ответ на уровне шанса) =)

Делается такой график вполне просто:

> ggplot(data=art_ev_aggr,aes(x=accuracy)) 
+ geom_density(aes(linetype=factor(target_time),y=..scaled..)) 
+ geom_dotplot(dotsize = .5,aes(size=2, fill=factor(target_time)))
+ labs(fill="Target time", linetype="Target time")

Подключение к MySQL в R под Ubuntu с использованием RODBC

22 марта 2012, анализ данных Метки: , , ,

Много страшных слов в заголовке вышло.
Есть 2 (известных мне) способа подключиться к базе данных MySQL ищ R: RMySQL и RODBC. Про RMySQL под Windows я уже писал, под Ubuntu с установкой RMySQL вообще проблем нет (sudo apt-get install r-cran-rmysql). Но у меня почему-то последнюю неделю RMySQL глючит, постоянно выдавая ошибки:

Warning messages:
1: In mysqlFetch(res, n, ...) :
  RS-DBI driver warning: (error while fetching rows)
2: In mysqlQuickSQL(conn, statement, ...) : pending rows

Поэтому я решил попробовать второй способ, RODBC.
Установка:

sudo apt-get install iodbc libmyodbc unixodbc-dev r-cran-rodbc

Запускаем «odbcinst -j»:

unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/ralfer/.odbc.ini

Редактируем odbcinst.ini, добавляем информацию о драйвере mysql:

[MySQL]
Description     = MySQL driver
Driver          = /usr/lib/odbc/libmyodbc.so
Setup           = /usr/lib/odbc/libodbcmyS.so

Добавляем информацию о подключении в .odbc.ini (USER DATA SOURCES):

[test]
Driver   = MySQL
database = dbname
password = pass
server   = www.host.com
user     = user_name
uid      = user_name

Проверяем:

$ odbcinst -q -s
[test]
$ odbcinst -q -d 
[MySQL]
$ isql test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Запускаем R, подключаем RODBC:

#проверяем наличие подключения
> odbcDataSources()
test      
  "MySQL" 
> library(RODBC)
#подключаемся
> con <-odbcDriverConnect("dsn=test")
> con
RODBC Connection 1
Details:
  case=nochange
  dsn=tests
#запрос делается так
> sqlQuery(con, "запрос")

Все.

Большая часть информации о настройке ODBC почерпнута отсюда.

UPD: В случае ошибки «Can’t open lib ‘/usr/lib/odbc/libmyodbc.so’ : file not found» , найдите у себя libmyodbc.so и сделайте линк.