Суббота, 04.04.2026, 21:47Приветствуем вас Гость | RSS
Решение задач в среде R
Главная | Регрессия в ggplot2 | Регистрация | Вход
» Меню сайта

» R практикум

» R кодинг

» Rmatem

» Опрос
Сколько вам лет?
Всего ответов: 9

» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Регрессия в ggplot2

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

library(ggplot2)
library(ggthemes)
x = c()
set.seed(545)
xx = seq(-3, 4, 0.1)
x = xx + rnorm(length(xx),mean = 0, sd = 1.5)
y = (2*x^2 - 3*x - 5)*rnorm(length(xx),mean = 1, sd = 0.25)
df = data.frame(x, y)

md = lm(y ~ poly(x, degree = 2, raw = TRUE))
summary(md)

> summary(md)

Call:
lm(formula = y ~ poly(x, degree = 2, raw = TRUE))

Residuals:
 Min 1Q Median 3Q Max 
-12.9160 -1.0406 -0.1292 1.2918 18.2630 

Coefficients:
 Estimate Std. Error t value Pr(>|t|) 
(Intercept) -4.45117 0.62455 -7.127 8.37e-10 ***
poly(x, degree = 2, raw = TRUE)1 -3.61623 0.20387 -17.738 < 2e-16 ***
poly(x, degree = 2, raw = TRUE)2 1.96512 0.06397 30.721 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.132 on 68 degrees of freedom
Multiple R-squared: 0.9414, Adjusted R-squared: 0.9396 
F-statistic: 545.9 on 2 and 68 DF, p-value: < 2.2e-16

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

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  labs(x="данные по Х", y = "данные по Y",title=' Regression Plot ') +
  geom_smooth(method = lm, formula = y ~ splines::ns(x, 2), 
              color='red', lwd =1.3)+
  
  theme_gdocs() +
  
  theme(
    panel.background = element_rect(fill = "powderblue",
                                    color = "powderblue",
                                    size = 0.5, linetype = "solid"),
    panel.grid.major = element_line(size = 0.75, linetype = 'solid', color = "grey30"),
    panel.grid.minor = element_line(size = 0.25, linetype = 'solid', color = "grey30")
  )

Как изменить внешний вид графика с помощью встроенных тем ggplot2

Для каждого из следующих примеров мы будем использовать радужную оболочку из встроенного набора данных R:

Gray_theme

Тема по умолчанию с серым фоном и белой сеткой.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_gray()

чб_тема

Черно-белая тема.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_bw()

theme_linedraw

Тема только с черными линиями разной ширины на белом фоне.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_linedraw()

 

theme_light

Тема, похожая на theme_linedraw , но с серыми линиями и осями, предназначенными для привлечения большего внимания к данным.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_light()

 

темная_тема

Тема, похожая на theme_light , но с темным фоном. Полезная тема для выделения тонких цветных линий.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_dark()

 

минимальная_тема

Тема без фоновых аннотаций.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_minimal()

 

классическая_тема

Тема без сеток.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_classic()

 

theme_void

Совершенно пустая тема.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_void()

 

Как изменить внешний вид графиков, используя предустановленные темы из библиотеки ggthemes

Помимо использования встроенных тем ggplot2, мы можем использовать предопределенные темы из библиотеки ggthemes для изменения эстетики графиков.

Сначала мы загрузим библиотеку ggthemes:

 library(ggthemes)

Затем мы покажем несколько примеров использования предопределенных тем для изменения эстетики сюжетов:

theme_wsj

Тема из Wall Street Journal.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_wsj()

theme_tufte

Минималистская тема, вдохновленная работой статистика Эдварда Тафти.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_tufte()

 

соляризованная_тема

Тема, использующая цвета на основе Solarized Palette .

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_solarized()

Обратите внимание, что мы также можем использовать аргумент Light = FALSE , чтобы использовать темный фон на графике:

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_solarized( light = FALSE )

 

theme_gdocs

Тема с настройками диаграмм Google Docs по умолчанию.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_gdocs()

 

theme_fivethirtyeight

Тема навеяна сюжетами сайта Fivethirtyeight.com .

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_fivethirtyeight()

 

тема_экономист

Тема, вдохновленная The Economist.

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme_economist()

 

Как редактировать отдельные компоненты графиков

Мы можем использовать функции theme() и element_rect() для изменения цвета фона панели графика:

 theme(panel.background = element_rect(fill, color, size))
  • fill: цвет заливки прямоугольника
  • цвет: цвет границы
  • размер: размер границы

Мы также можем использовать функцию element_line() для изменения размера и внешнего вида сетки:

 theme(panel.grid.major = element_line(color, size, linetype),
 panel.grid.minor = element_line(color, size, linetype))
  • цвет: цвет границы
  • размер: размер границы
  • linetype: тип линии («пустая», «сплошная», «пунктирная», «пунктирная», «точечная штриховая», «длинная штриховая», «две черточки»)

Следующий код демонстрирует, как удалить границы и линии сетки панели графика:

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme(panel.border = element_blank(),
 panel.grid.major = element_blank(),
 panel.grid.minor = element_blank())

Следующий код демонстрирует, как изменить фон и линии сетки панели графика:

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
 geom_point() +
 theme(
 panel.background = element_rect(fill = "powderblue",
 color = "powderblue",
 size = 0.5, linetype = "solid"),
 panel.grid.major = element_line(size = 0.5, linetype = 'solid', color = "white"),
 panel.grid.minor = element_line(size = 0.25, linetype = 'solid', color = "white")
 )
» Вход на сайт

» Поиск

» Работа с файлами

» Вся графика

» Гистогра́мма

» Теория вероятности

» Сравнение групп

» Дисперс анализ

» Блог

» Календарь
«  Апрель 2026  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

» Архив записей


Copyright MyCorp © 2026
uCoz