---
output: html_document
editor_options:
chunk_output_type: console
---
```{r, message=FALSE}
library(tidyverse)
set.seed(42)
tibble(x = rnorm(100),
e = rnorm(100, sd = 2), # вектор ошибок, остатков
slope = 5, # угловой коэффициент
intercept = -3, # свободный коэффициент
y = x*slope+intercept+e) %>%
ggplot(aes(x, y))+
geom_point()+
geom_smooth(method = "lm", se = FALSE)
```
$$
y_i = \beta_0 + \beta_1\times x_i + \epsilon_i
$$
```{r}
set.seed(42)
tibble(x = rnorm(100),
e = rnorm(100, sd = 2), # вектор ошибок
slope = 5, # угловой коэффициент
intercept = -3, #
y = x*slope+intercept+e) %>%
lm(y ~x, data =.) %>%
summary()
```
Смотрите, `lm()` получила наши -3 и 5, хотя видела только переменные `x` и `y`!
```{r}
set.seed(42)
tibble(x = rnorm(100),
slope = 5, # угловой коэффициент
intercept = -3) %>% # свободный коэффициент
mutate(e = ifelse(x > mean(x), rnorm(50, sd = 10), rnorm(50, sd = 2)),
y = x*slope+intercept+e) %>%
ggplot(aes(x, y))+
geom_point()+
geom_smooth(method = "lm", se = FALSE)+
labs(title = "гетероскидастичные данные")
```
```{r}
set.seed(42)
tibble(x = rnorm(100),
slope = 5, # угловой коэффициент
intercept = -3) %>% # свободный коэффициент
mutate(e = ifelse(x > mean(x), rnorm(50, sd = 10), rnorm(50, sd = 2)),
y = x*slope+intercept+e) %>%
lm(y ~x, data =.) %>%
plot() # первый график -- график остатков
```
```{r}
set.seed(42)
tibble(x = rnorm(100),
e = rbeta(100, shape1 = 10, shape2 = 30)*10, # вектор ошибок, остатков
slope = 5, # угловой коэффициент
intercept = -3, # свободный коэффициент
y = x*slope+intercept+e) %>%
ggplot(aes(x, y))+
geom_point()+
geom_smooth(method = "lm", se = FALSE)+
geom_abline(slope = 5, intercept = -3)+
labs(title = "Остатки имеют бета распределение")
tibble(x = rnorm(100),
e = rbeta(100, shape1 = 10, shape2 = 30)*10, # вектор ошибок, остатков
slope = 5, # угловой коэффициент
intercept = -3, # свободный коэффициент
y = x*slope+intercept+e) %>%
lm(y ~x, data =.) %>%
summary()
```
С бетараспределенными остатками мы получим неверную оценку углового и свободного коэффициентов.