Истинное явление

В любом предсказании мы пытаемся смоделировать истинное явление, относительно которого мы можем только делать наблюдения. Мы не знаем точного механизма

Предположим, у нас есть истинное явление y = 100*x1 + 200*x2.

Где x1 ›= 2000 и ‹= 4000 и x2 ›= 100 и ‹= 500

Давайте сгенерируем некоторые данные

x1range <- as.numeric(2000:4000)
 x2range <- as.numeric(100:500)
 
 #generate 5000 data points
 num <- 5000
 x1 <- sample(x1range , num , replace= TRUE)
 x2 <- sample(x2range , num , replace= TRUE)
 ytrue <- 100*x1 +200*x2 
 
 head(x1)
## [1] 2644 3743 2620 2256 3008 2902
head(x2)
## [1] 277 425 223 457 321 336
head(ytrue)
## [1] 319800 459300 306600 317000 365000 357400

Ошибки

Очень трудно найти истинное явление, потому что все наблюдения имеют погрешность.

YObs = YTrue + Ошибка

YTrue = YObs — Ошибка

Чтобы что-то узнать о YTrue, нам нужно знать о YObs и распределении ошибок. Yobs — это наблюдаемые данные, поэтому они у нас уже есть. поэтому теперь нам нужно сделать некоторые предположения о распределении ошибок, чтобы хотя бы начать угадывать YTrue.

Ошибки обычно имеют следующие свойства: 1. Центрируется на 0. Средняя ошибка равна 0. 2. Одинаковая вероятность быть выше или ниже среднего. Симметрично относительно среднего. 3. Шанс получить бесконечную ошибку практически равен нулю. Следовательно, поскольку x -> inf prob(x) -> 0.

Для выполнения этого условия можно использовать множество различных распределений. Лаплас использовал распределение ошибки треугольника, чтобы удовлетворить вышеуказанным пунктам.

library(ggplot2)
 exampleTri <- data.frame( x= c(-5,0,5) ,y= c(0,5,0) )
 ggplot(data= exampleTri , aes(x , y)) + geom_line()

Нормальное распределение – другое, соответствующее указанному выше критерию.

Одно предположение, которое мы можем сделать, состоит в том, что ошибка в нашем наблюдении за y имеет нормальное распределение. Это предположение исходит из Центральной предельной теоремы (ЦПТ).

Для нашего случая мы также выбираем случайное значение стандартного отклонения распределения ошибок, равное 10.

# generate random error values from normal distribution
 etrue <- rnorm(num , mean=0, sd=10)
 
 x1obs <- x1
 x2obs <- x2
 
 # add errors to ytrue
 yobs = ytrue + etrue
 
 
 # create a dataframe that will be our ‘observed’ data
 dfobs <- data.frame(x1obs,x2obs,yobs)
 head(dfobs)
## x1obs x2obs yobs
 ## 1 2644 277 319798.2
 ## 2 3743 425 459299.3
 ## 3 2620 223 306590.7
 ## 4 2256 457 316997.2
 ## 5 3008 321 364999.8
 ## 6 2902 336 357393.5

dfobs теперь формирует наш наблюдаемый набор данных, из которого мы попытаемся оценить истинные значения Y.

Большое количество выборок и выборочное распределение коэффициентов

CLT говорит нам, что если мы повторим наш эксперимент большое количество раз, то выборочная статистика, которую мы рассчитываем для каждой выборки, сама по себе будет нормально распределена. В нашем случае это относится к оценкам коэффициентов.

Эмпирическая проверка CLT для коэффициентов

Чтобы проверить то, что сказал нам CLT, мы сделаем это

1. Возьмите образец из наших наблюдаемых данных

2. Выполните линейную регрессию

3. Получите кофе и повторите снова с 1.

#initialize coefficient result as 0
 coffs <- c(0,0,0)
 
 # do our experiment 10,000 times
 expnum <- 10000
 
 # each time we repeat our experiment take a sample of size 10 from the observed data
 numObsInSample <- 10
 
 for(i in seq(0,expnum,1)){
 
 # take sample
 sampIndices <- sample(nrow(dfobs),numObsInSample)
 samp <- dfobs[sampIndices,]
 
 # perform linear regression
 lm <- glm( yobs ~ x1obs + x2obs , data = samp )
 cf <- coef(lm)
 
 # save coeffients for later analysis in the coffs variable
 coffs <- c(coffs , cf)
 }
 
 # convert our results into a matrix with 3 cols
 matcoffs <- matrix(coffs, byrow = TRUE ,ncol=3)
 head(matcoffs)
## [,1] [,2] [,3]
 ## [1,] 0.000000 0.00000 0.0000
 ## [2,] -1.262689 100.00116 199.9726
 ## [3,] 3.376745 99.99244 200.0463
 ## [4,] 6.812219 99.99737 200.0031
 ## [5,] -9.508069 100.00255 200.0046
 ## [6,] 2.779624 99.99692 200.0182
We can see that the coeffients of x1 and x2 are pretty close to our actual true phenomenon in most of our experiments!
YTrue = 100x1 + 200x2
Now according to CLT these coefficients should be normally distributed. Let’s verify.
Let’s check basic descriptive stats about these first
summary(matcoffs)
## V1 V2 V3 
 ## Min. :-105.995 Min. : 0.00 Min. : 0.0 
 ## 1st Qu.: -12.307 1st Qu.:100.00 1st Qu.:200.0 
 ## Median : 2.118 Median :100.00 Median :200.0 
 ## Mean : 1.616 Mean : 99.99 Mean :200.0 
 ## 3rd Qu.: 15.668 3rd Qu.:100.00 3rd Qu.:200.0 
 ## Max. : 104.031 Max. :100.03 Max. :200.2
sd(matcoffs[,2])
## [1] 0.9999169
sd(matcoffs[,3])
## [1] 2.000062

Кажется, что V2 и V3 всегда равны ~100 и ~200 соответственно. Но это заблуждение. Нам нужно повысить точность и проверить снова. Мы попробуем построить гистограмму в очень небольшом пространстве 99,95 и 100,1 для коэффициента x1.

Вау! Вроде нормальная раздача! Итак, мы видим, что коэффициенты B сами по себе нормально распределены.

Являются ли мои «бета» такими, как они мне говорят?

Теперь обычно мы не можем повторить наш эксперимент 10 000 раз, поэтому мы не знаем распределения B-коэффициентов. Все, что мы можем теперь с уверенностью предположить (основываясь на приведенном выше анализе), это то, что оно нормально распределено. Но теперь проблема в том, что мы получаем один набор коэффициентов B из выборки, насколько мы уверены, что мы не получили эти коэффициенты случайно? Возможно, эти коэффициенты на самом деле равны 0, а x1 и x2 на самом деле не влияют на Y. Мы могли случайно наткнуться на эти значения из-за этой выборки. А что, если мы возьмем еще одну выборку и обнаружим, что на самом деле это ноль?! Нам нужен некоторый уровень уверенности в этих цифрах, которые нам бросили.

Проверка гипотез

Если бы наши независимые переменные — x1,x2 не влияли на Y, то их коэффициенты были бы нулевыми.

Y = 0*x1 + 0*x2

Но мы твердо верим, что x1 и x2 действительно влияют на Y, и хотим это доказать.

Итак, мы делаем нулевую гипотезу о том, что эти коэффициенты равны 0, и пытаемся отвергнуть нашу гипотезу.

Для этого используется T-критерий.[T-dist] T-распределения используются в качестве приближения для нормального распределения, когда мы не знаем подробностей о распределении. Все, что нужно Т-распределению для получения полного распределения, — это степени свободы. Это отличается от нормального распределения, которое требует от нас указать как среднее значение, так и стандартное отклонение, которых у нас нет (поскольку мы не проводили эксперимент 10 000 раз или миллион раз, если уж на то пошло).

Хорошо для нас, что T-распределения существуют, теперь компромисс здесь - точность. Очевидно, что мы приближаемся к нормальному распределению, поэтому в нашей оценке будут ошибки. Но этого достаточно для нашей цели — чтобы быть уверенными в нашей оценке коэффициентов B. Но об этом будет рассказано в рамках другой статьи. Но основная идея изложена ниже.

Оценка стандартного отклонения распределения

Проблема, которая сейчас стоит перед нами, заключается в том, что мы не знаем стандартного отклонения этого B-распределения.

Для корректности терминологии мы не знаем стандартной ошибки среднего значения распределения B Википедия. Две вещи, которые нужно сделать, это

  1. Чтобы использовать начальную загрузку для получения оценок коэффициентов

Начальная загрузка аналогична тому, что мы сделали выше, путем повторной выборки, но на этот раз выборка не из генеральной совокупности, а из самой выборки!!

Затем начальная загрузка помогает нам оценить стандартную ошибку выборочного распределения. Поэтому мы получим наше «стандартное отклонение», а затем начнем чувствовать себя уверенно в наших оценках коэффициента.

  1. Чтобы использовать Т-тест

После того, как мы получим стандартную ошибку, мы можем рассчитать T-статистику и выполнить T-тест, чтобы узнать, отличаются ли коэффициенты статистически значимо от нуля.

Последние две темы будут рассмотрены более подробно в отдельной статье!

Источники

Т-расстояние