Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Разведочный анализ данных: создание графиков в системе R

20,082 views

Published on

Приведены примеры создания некоторых распространенных статистических графикоы в среде статистических вычислений R.

Published in: Data & Analytics

Разведочный анализ данных: создание графиков в системе R

  1. 1. Тема 4 Сергей Мастицкий БГУ, Минск, май 2014
  2. 2. 4.1. Общий протокол для выполнения РАД Zuur et al. (2010) A protocol for data exploration to avoid common statistical problems. Methods in Ecology & Evolution 1: 3-14
  3. 3.  Линейная регрессия и ANOVA-подобные методы  Обобщенные линейные модели (GLM)  Обобщенные аддитивные модели (GAM)  Деревья принятия решений  Анализ выживаемости  Нейронные сети  Кластерный анализ  Метод главных компонент (PCA)  Многомерное шкалирование (MDS)  Анализ временных рядов, etc. Author: Sergey Mastitsky
  4. 4. Мусор на входе – мусор на выходе В частности, исследователи часто игнорируют математические допущения, лежащие в основе тех или иных методов Author: Sergey Mastitsky
  5. 5.  Для всех Xi  Yi должны быть распределены нормально  дисперсия Yi должна быть однородной  Yi должны быть независимы (=отсутствие временной или пространственной корреляции)  Отсутствие наблюдений-выборосов  Остатки должны распределяться нормально iii XY   10 Author: Sergey Mastitsky
  6. 6. …анализу данных должно предшествовать тщательное изучение их свойств Разведочный анализ данных (Exploratory data analysis, EDA) может занимать более 50% всего времени, затрачиваемого на анализ! Author: Sergey Mastitsky
  7. 7.  1. Формулировка биологической гипотезы. Выполнение исследования и сбор данных  2. Изучение свойст данных: - Выбросы среди Y и X - Однородность дисперсии Y - Нормальность распределения Y и X - Проблемы с нулевыми значениями Y - Коллинеарность среди предикторов (X) - Взаимодействия среди предикторов - Независимость значений Y  3. Подгонка статистической модели Author: Sergey Mastitsky
  8. 8.  Выявление выбросов: http://r-analytics.blogspot.de/2012/05/blog-post_28.html  Проверка однородности групповых дисперсий: http://r-analytics.blogspot.de/2012/06/blog-post.html  Проверка нормальности распределения: http://r-analytics.blogspot.de/2012/06/blog-post_14.html  Выявление избыточного количества нулевых значений: http://r-analytics.blogspot.de/2012/06/blog-post_22.html  Выявление коллинеарности: http://r-analytics.blogspot.de/2012/07/blog-post.html  Выявление взаимодействий между предикторами: http://r-analytics.blogspot.de/2012/07/blog-post_13.html  Выявление автокорреляции http://r-analytics.blogspot.de/2012/07/blog-post_20.html Author: Sergey Mastitsky
  9. 9. “…нет более мощного статистического инструмента, чем хорошо подобранный график” (Chambers et al., 1983) Всегда начинайте анализ данных с их визуалиции при помощи графиков, подходящих ситуации Chambers, J. M., Cleveland, W. S., Kleiner, B. and Tukey, P. A. (1983) Graphical Methods for Data Analysis. Wadsworth & Brooks/Cole Author: Sergey Mastitsky
  10. 10.  Встроенные примеры: > demo(graphics)  R Graph Gallery: http://rgraphgallery.blogspot.com/  ggplot2: http://docs.ggplot2.org/current/ Author: Sergey Mastitsky
  11. 11. 4.2. Основы создания графиков в R: диаграммы рассеяния Подробнее см.: http://r-analytics.blogspot.de/2011/10/r-plot.html http://r-analytics.blogspot.de/2011/10/r_18.html http://r-analytics.blogspot.de/2011/10/r_28.html
  12. 12. > LWdata = read.table( file = "pH_down_experiment.txt", header = TRUE, sep = "t") > names(LWdata) > head(LWdata) > LWdata Author: Sergey Mastitsky
  13. 13.  Функция общего назначения (generic function)  Позволяет выполнять тонкую настройку внешнего вида графиков => имеет очень много аргументов  Мы коснемся только самых азов этой огромной темы Author: Sergey Mastitsky
  14. 14. > plot(LWdata$Length, LWdata$Weight) > # или используя интерфейс формулы: > plot(LWdata$Weight ~ LWdata$Length) Author: Sergey Mastitsky 10 15 20 25 30 35 0.00.20.40.60.81.01.2 Length Weight
  15. 15. attach() делает содержимое таблицы данных видимым в т.н. поисковом окружении R => нет необходимости в $ > attach(LWdata) > plot(Weight ~ Length) Author: Sergey Mastitsky
  16. 16. > plot(log(Weight) ~ log(Length)) > # Изменям заголовки осей: > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight") Author: Sergey Mastitsky
  17. 17. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log(Length) log(Weight) выброс
  18. 18. > identify(log(Weight) ~ log(Length)) Кликните рядом с подозрительной точкой, а затем - ESC… Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log(Length) log(Weight) 205
  19. 19. > detach(LWdata) > LWdata <- LWdata[-205, ] > attach(LWdata) > # сработало? > plot(log(Weight) ~ log(Length)) Author: Sergey Mastitsky
  20. 20. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", pch = 2) Упражнение: Попробуйте другие значения pch … Author: Sergey Mastitsky
  21. 21. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  22. 22. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", pch = 2, cex = 0.6) Author: Sergey Mastitsky
  23. 23. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  24. 24. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", pch = 2, cex = 0.6, col = 2) Также применяется col = "red" См. colors() Author: Sergey Mastitsky
  25. 25. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  26. 26. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", pch = 20, col = 2) Author: Sergey Mastitsky
  27. 27. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  28. 28. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", pch = 20, col = as.numeric(Treatment)) > # вот как это работает: > as.numeric(Treatment) Author: Sergey Mastitsky
  29. 29. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  30. 30. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", pch = 20, col = ifelse( Treatment == "Control", 1, 2)) условие да нет Author: Sergey Mastitsky
  31. 31. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  32. 32. > contr <- lm(log( Weight[Treatment == "Control"]) ~ log( Length[Treatment == "Control"])) > other <- lm(log( Weight[Treatment != "Control"]) ~ log( Length[Treatment != "Control"])) Author: Sergey Mastitsky
  33. 33. > abline(contr, lty = 1, lwd = 2) > abline(other, lty =5, lwd = 2, col = "blue") Author: Sergey Mastitsky
  34. 34. Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 log transformed Length logtransformedWeight
  35. 35. > plot(log(Weight) ~ log(Length), xlab = "log transformed Length", ylab = "log transformed Weight", main = "Length/Weight relationship", pch = 20, col = ifelse( Treatment == "Control", 1, 2)) > abline(contr, lty = 1, lwd = 2) > abline(other, lty = 5, lwd = 2, col = "blue") Author: Sergey Mastitsky
  36. 36. ! Не забудьте: detach(LWdata) Author: Sergey Mastitsky 2.5 3.0 3.5 -4-3-2-10 Length/Weight relationship log transformed Length logtransformedWeight
  37. 37. 4.3. Основы создания графиков в R: гистограммы и диаграммы плотности вероятности Подробнее см.: http://r-analytics.blogspot.de/2011/11/r_06.html
  38. 38.  Дают представление о форме распределения данных  В R гистограммы строятся очень просто: > hist(LWdata$Length) > hist(LWdata$Weight) Author: Sergey Mastitsky
  39. 39. Histogram of LWdata$Length LWdata$Length Frequency 5 10 15 20 25 30 35 010203040 Histogram of LWdata$Weight LWdata$Weight Frequency 0.0 0.2 0.4 0.6 0.8 1.0 1.2 020406080100 Author: Sergey Mastitsky
  40. 40. > hist(LWdata$Length, breaks = 50) Histogram of LWdata$Length LWdata$Length Frequency 10 15 20 25 30 35 0246812 Author: Sergey Mastitsky
  41. 41.  Часто лучше гистограмм отображают свойства данных  Кривые плотности рассчитываеются при помощи функции density()  Эти кривые потом добавляются к графику при помощи функции lines() Author: Sergey Mastitsky
  42. 42. # Расчет кривых для каждой группы: > attach(LWdata) > trControl = density(Length[Treatment == "Control"]) > trA = density(Length[Treatment == "A"]) > trB = density(Length[Treatment == "B"]) > trC = density(Length[Treatment == "C"]) # Построение графика: > plot(trControl, main =" ", ylim = c(0, 0.065), lty = 1) Author: Sergey Mastitsky
  43. 43. # Добавление кривых: > lines(trA, col = 2) > lines(trB, col = 3) > lines(trC, col = 4) # Добавление легенды: > legend("topright", lty = c(1, 1, 1, 1), col = c(1:4), legend = c("Control", "A", "B", "C"), bty = "n") Author: Sergey Mastitsky
  44. 44. Author: Sergey Mastitsky 0 10 20 30 40 0.000.020.040.06 N = 90 Bandwidth = 2.452 Density Control A B C
  45. 45. 4.4. Основы создания графиков в R: графики квантилей
  46. 46.  Позволяют проверить нормальность распределения данных  Наблюдаемые значени vs. их ожидаемые квантили => должна получаться примерно прямая диагональная линия  В R: > qqnorm(LWdata$Length) > qqnorm(LWdata$Weight) Author: Sergey Mastitsky
  47. 47. Author: Sergey Mastitsky -3 -2 -1 0 1 2 3 101520253035 Theoretical Quantiles SampleQuantiles -3 -2 -1 0 1 2 3 0.00.20.40.60.81.01.2 Theoretical Quantiles SampleQuantiles
  48. 48. 4.5. Основы создания графиков в R: диаграммы размахов Подробнее см.: http://r-analytics.blogspot.de/2011/11/r_08.html
  49. 49. Медиана 0.75 квантиль (Q3) 0.75 квантиль (Q1) ИКР max в пределах Q3 + 1.5ИКР “выброс” Author: Sergey Mastitsky min в пределах Q1 - 1.5ИКР
  50. 50. > boxplot(Weight/Length ~ Treatment) Author: Sergey Mastitsky Control A B C 0.0050.0150.0250.035
  51. 51. 4.6. Основы создания графиков в R: столбиковые диаграммы Подробнее см.: http://r-analytics.blogspot.de/2012/01/r_20.html
  52. 52.  Обобщают информацию о качественных переменных  Для создания служит функция barplot() (см. ?barlot)  Часто требуется кросс-табуляция при помощи xtabs()для подготовки таблицы сопряженности: > xtabs(~ Treatment) Treatment Control A B C 90 89 90 92 Author: Sergey Mastitsky
  53. 53. > barplot(xtabs(~ Treatment)) Control A B C 020406080 Author: Sergey Mastitsky

×