32
Тема 8 Сергей Мастицкий БГУ, Минск, май 2014

Простая линейная регрессия в системе R

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Простая линейная регрессия в системе R

Тема 8

Сергей Мастицкий БГУ, Минск, май 2014

Page 2: Простая линейная регрессия в системе R

Коэффициент корреляции отражает

степень связи между переменными

Но мы не можем его использовать для

предсказания значений одной

переменной по значениям другой

Author: Sergey Mastitsky

Page 3: Простая линейная регрессия в системе R

8.1. Линейная регрессия: вспоминаем теорию

Page 4: Простая линейная регрессия в системе R

yi – зависимая переменная

0 – свободный член уравнения

1 – регрессионный коэффициент

xi – предиктор (= “независимая переменная”)

εi – остатки, независимые и

iii xy 10

),0( N

Author: Sergey Mastitsky

Page 5: Простая линейная регрессия в системе R

Это тоже линейная регрессионная модель,

хотя и описывает кривую:

Объяснение:

iiii xxy 2

21

iiii

ii

cxy

cxесли

21

2

Author: Sergey Mastitsky

Page 6: Простая линейная регрессия в системе R

Параметры 0, 1 и оцениваются

методом наименьших квадратов

Author: Sergey Mastitsky

Page 7: Простая линейная регрессия в системе R

8.2. Подгонка линейных моделей в R

Подробнее см.: http://r-analytics.blogspot.de/2014/03/blog-post.html http://r-analytics.blogspot.de/2014/04/blog-post.html http://r-analytics.blogspot.de/2014/05/blog-post_18.html

Page 8: Простая линейная регрессия в системе R

Freedman et al. (2001)*

опубликовали данные по

расстоянию до 24

галактик (Мегапарсек),

измеренному

Телескопом Хаббла

Приведены также

скорости удаления этих

галактик (по эффекту

Доплера, км/с)

*Freedman WL et al. (2001) The

Astrophysical Journal 553: 47-72 hubblesite.org

Author: Sergey Mastitsky

Page 9: Простая линейная регрессия в системе R

Author: Sergey Mastitsky

5 10 15 20

50

0

10

00

1

50

0

Distance (Mpc)

Ve

locity (

km

/se

c)

Page 10: Простая линейная регрессия в системе R

Согласно ТБВ, Вселенная равномерно

расширяется по закону Хаббла:

где y – относительная скорость расхождения

любых двух галактик, находящихся на

расстоянии x друг от друга

-1 – неизвестный параметр, который примерно

равен возрасту Вселенной

Мы можем использовать данные Friedman et al.

(2001) для оценки : iii xy

xy

Author: Sergey Mastitsky

Page 11: Простая линейная регрессия в системе R

Используйте команду: > setwd("~/Introductory R

Course/R_Course_Datasets")

Или в RStudio:

Session -> Set Working Directory -> Choose

Directory -> …Рабочий стол -> папка “Introductory R Course” -> папка

“R_Course_Datasets”

Author: Sergey Mastitsky

Page 12: Простая линейная регрессия в системе R

> hub.data <- read.table(

file = "hubble_data.txt",

header = TRUE,

sep = "\t")

> head(hub.data)

Author: Sergey Mastitsky

Page 13: Простая линейная регрессия в системе R

> hub.mod <- lm(y ~ x - 1,

data = hub.data)

Объект с результатами анализа

Формула модели:

“ ~ “ - “тилда”

“ -1” значит отсутствие

свободного члена

Имя таблицы с данными

Author: Sergey Mastitsky

Page 14: Простая линейная регрессия в системе R

> summary(hub.mod)

Author: Sergey Mastitsky

Page 15: Простая линейная регрессия в системе R

Показывает, о какой модели идет речь

Полезно при построении большого

числа моделей

Author: Sergey Mastitsky

Page 16: Простая линейная регрессия в системе R

Сводка о распределении остатков

Позволяет выполнить экспресс-оценку

их распределения Так, Median должна быть ~0, а Max и

Min должны быть примерно равны

Author: Sergey Mastitsky

Page 17: Простая линейная регрессия в системе R

Регрессионный коэффициент (76.581), его

станд. ошибка и P-значение соответствующего

t-теста * - индикатор уровня значимости

Эти «звездочки» можно отключить командой options(show.signif.stars = FALSE)

Author: Sergey Mastitsky

Page 18: Простая линейная регрессия в системе R

Стандартное отклонение остатков,

Author: Sergey Mastitsky

Page 19: Простая линейная регрессия в системе R

Multiple R-squared (= коэффициент

детерминации) Adjusted R-squared скорректированный

Multiple R-squared с учетом объема

выборки и числа параметров модели

Author: Sergey Mastitsky

Page 20: Простая линейная регрессия в системе R

F-тест гипотезы о том, что все регрессионные

коэффициенты в действительности равны

нулю

Показатель того, насколько модель хороша в

целом

Author: Sergey Mastitsky

Page 21: Простая линейная регрессия в системе R

В целом, модель высоко значима

(P < 0.001, F-тест)

Расстояние до галактики является

хорошим предиктором скорости ее

удаления (P < 0.001, t-тест)

Полученная модель:

xy 581.76

Author: Sergey Mastitsky

Page 22: Простая линейная регрессия в системе R

8.3. Проверка адекватности модели

Page 23: Простая линейная регрессия в системе R

Низкие P-значения не гарантируют, что

модель адекватно описывает изучаемый

процесс

После построения модели необходимо

проверить ряд допущений

В частности:

характер распределения остатков

наличие «выбросов»

Author: Sergey Mastitsky

Page 24: Простая линейная регрессия в системе R

# resid() извлекает остатки из модельного объекта:

> resid(hub.mod)

Author: Sergey Mastitsky

5 10 20

50

0

15

00

x

y

Page 25: Простая линейная регрессия в системе R

5 10 20

50

01

50

0

x

y

# fitted() извлекает предсказанные моделью значения y:

> fitted(hub.mod)

Author: Sergey Mastitsky

Page 26: Простая линейная регрессия в системе R

> plot(resid(hub.mod) ~

fitted(hub.mod),

xlab = "fitted values", ylab = "residuals")

Разброс остатков возрастает – плохие

новости!

Author: Sergey Mastitsky

500 1000 1500

-60

0

-20

0

20

0

60

0

fitted values

resid

uals

Page 27: Простая линейная регрессия в системе R

> qqnorm(resid(hub.mod))

> qqline(resid(hub.mod))

Author: Sergey Mastitsky

-2 -1 0 1 2

-60

0

-20

0

20

0

60

0

Normal Q-Q Plot

Theoretical Quantiles

Sam

ple

Quantile

s 3

15

Page 28: Простая линейная регрессия в системе R

Диагностические графики показывают,

что наблюдения #3 и #15, по-видимому,

оказывают слишком большое влияние

на оценки параметров модели. Удалим

эти наблюдения и подгоним новую

модель:

> hub.mod1 <- lm(y ~ x - 1,

data = hub.data[-c(3, 15), ])

Author: Sergey Mastitsky

Page 29: Простая линейная регрессия в системе R

> summary(hub.mod1)

Author: Sergey Mastitsky

Page 30: Простая линейная регрессия в системе R

Author: Sergey Mastitsky

-2 -1 0 1 2 -3

00

-1

00

1

00

Normal Q-Q Plot

Theoretical Quantiles

Sam

ple

Quantile

s

500 1000 1500

-30

0

-10

0

10

0

fitted(hub.mod1)

resid

(hub.m

od1)

Page 31: Простая линейная регрессия в системе R

5 10 15 20

50

01

00

01

50

0

Distance (Mpc)

Ve

locity (

km

/se

c)

Один Мегапарсек -

3.091019 км => разделим

на это число, чтобы

получить постоянную

Хаббла (сек-1): > hub.const <-

coef(hub.mod1)/3.09e19

# возраст в секундах: > age <- 1/hub.const

# возраст в годах: > age/(60^2*24*365)

12614854757

Ответ: ~ 13 млрд. лет Author: Sergey Mastitsky

Page 32: Простая линейная регрессия в системе R

Поскольку полученная оценка возраста

Вселенной является выборочной, существует

неопределенность в отношении того, насколько

она точна

Эту неопределенность выражают при помощи

доверительного интервала

О том, как рассчитать доверительные интервалы

для параметров регрессионной модели, см. здесь:

http://r-analytics.blogspot.de/2014/05/blog-post.html

Author: Sergey Mastitsky