Upload
sergey-mastitsky
View
1.571
Download
14
Embed Size (px)
DESCRIPTION
Приведен пример подгонки простой регрессионной модели в среде статистических вычислений R.
Citation preview
Коэффициент корреляции отражает
степень связи между переменными
Но мы не можем его использовать для
предсказания значений одной
переменной по значениям другой
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