Тема 8 Сергей Мастицкий БГУ, Минск, май 2014
Jul 05, 2015
Коэффициент корреляции отражает
степень связи между переменными
Но мы не можем его использовать для
предсказания значений одной
переменной по значениям другой
Author: Sergey Mastitsky
8.1. Линейная регрессия: вспоминаем теорию
yi – зависимая переменная
0 – свободный член уравнения
1 – регрессионный коэффициент
xi – предиктор (= “независимая переменная”)
εi – остатки, независимые и
iii xy 10
),0( N
Author: Sergey Mastitsky
Это тоже линейная регрессионная модель,
хотя и описывает кривую:
Объяснение:
iiii xxy 2
21
iiii
ii
cxy
cxесли
21
2
Author: Sergey Mastitsky
Параметры 0, 1 и оцениваются
методом наименьших квадратов
Author: Sergey Mastitsky
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
Freedman et al. (2001)*
опубликовали данные по
расстоянию до 24
галактик (Мегапарсек),
измеренному
Телескопом Хаббла
Приведены также
скорости удаления этих
галактик (по эффекту
Доплера, км/с)
*Freedman WL et al. (2001) The
Astrophysical Journal 553: 47-72 hubblesite.org
Author: Sergey Mastitsky
Author: Sergey Mastitsky
5 10 15 20
50
0
10
00
1
50
0
Distance (Mpc)
Ve
locity (
km
/se
c)
Согласно ТБВ, Вселенная равномерно
расширяется по закону Хаббла:
где y – относительная скорость расхождения
любых двух галактик, находящихся на
расстоянии x друг от друга
-1 – неизвестный параметр, который примерно
равен возрасту Вселенной
Мы можем использовать данные Friedman et al.
(2001) для оценки : iii xy
xy
Author: Sergey Mastitsky
Используйте команду: > setwd("~/Introductory R
Course/R_Course_Datasets")
Или в RStudio:
Session -> Set Working Directory -> Choose
Directory -> …Рабочий стол -> папка “Introductory R Course” -> папка
“R_Course_Datasets”
Author: Sergey Mastitsky
> hub.data <- read.table(
file = "hubble_data.txt",
header = TRUE,
sep = "\t")
> head(hub.data)
Author: Sergey Mastitsky
> hub.mod <- lm(y ~ x - 1,
data = hub.data)
Объект с результатами анализа
Формула модели:
“ ~ “ - “тилда”
“ -1” значит отсутствие
свободного члена
Имя таблицы с данными
Author: Sergey Mastitsky
> summary(hub.mod)
Author: Sergey Mastitsky
Показывает, о какой модели идет речь
Полезно при построении большого
числа моделей
Author: Sergey Mastitsky
Сводка о распределении остатков
Позволяет выполнить экспресс-оценку
их распределения Так, Median должна быть ~0, а Max и
Min должны быть примерно равны
Author: Sergey Mastitsky
Регрессионный коэффициент (76.581), его
станд. ошибка и P-значение соответствующего
t-теста * - индикатор уровня значимости
Эти «звездочки» можно отключить командой options(show.signif.stars = FALSE)
Author: Sergey Mastitsky
Стандартное отклонение остатков,
Author: Sergey Mastitsky
Multiple R-squared (= коэффициент
детерминации) Adjusted R-squared скорректированный
Multiple R-squared с учетом объема
выборки и числа параметров модели
Author: Sergey Mastitsky
F-тест гипотезы о том, что все регрессионные
коэффициенты в действительности равны
нулю
Показатель того, насколько модель хороша в
целом
Author: Sergey Mastitsky
В целом, модель высоко значима
(P < 0.001, F-тест)
Расстояние до галактики является
хорошим предиктором скорости ее
удаления (P < 0.001, t-тест)
Полученная модель:
xy 581.76
Author: Sergey Mastitsky
8.3. Проверка адекватности модели
Низкие P-значения не гарантируют, что
модель адекватно описывает изучаемый
процесс
После построения модели необходимо
проверить ряд допущений
В частности:
характер распределения остатков
наличие «выбросов»
Author: Sergey Mastitsky
# resid() извлекает остатки из модельного объекта:
> resid(hub.mod)
Author: Sergey Mastitsky
5 10 20
50
0
15
00
x
y
5 10 20
50
01
50
0
x
y
# fitted() извлекает предсказанные моделью значения y:
> fitted(hub.mod)
Author: Sergey Mastitsky
> 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
> 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
Диагностические графики показывают,
что наблюдения #3 и #15, по-видимому,
оказывают слишком большое влияние
на оценки параметров модели. Удалим
эти наблюдения и подгоним новую
модель:
> hub.mod1 <- lm(y ~ x - 1,
data = hub.data[-c(3, 15), ])
Author: Sergey Mastitsky
> summary(hub.mod1)
Author: Sergey Mastitsky
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)
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
Поскольку полученная оценка возраста
Вселенной является выборочной, существует
неопределенность в отношении того, насколько
она точна
Эту неопределенность выражают при помощи
доверительного интервала
О том, как рассчитать доверительные интервалы
для параметров регрессионной модели, см. здесь:
http://r-analytics.blogspot.de/2014/05/blog-post.html
Author: Sergey Mastitsky