Вот пример оценки среднего значения из нормальных непрерывных данных. Прежде чем углубиться непосредственно в пример, я хотел бы рассмотреть некоторые математические расчеты для нормальных и нормальных байесовских моделей данных.θ
Рассмотрим случайную выборку из п непрерывные значения , обозначаемые . При этом вектор у = ( у 1 , . . . , У п ) Т представляет собой данные , собранные. Вероятностная модель для нормальных данных с известной дисперсией и независимыми и одинаково распределенными (iid) выборкамиy1,...,yny=(y1,...,yn)T
y1,...,yn|θ∼N(θ,σ2)
Или, как более типично написано байесовским,
y1,...,yn|θ∼N(θ,τ)
где ; τ известен как точностьτ=1/σ2τ
В этих обозначениях плотность для равнаyi
f(yi|θ,τ)=(√τ2π)×exp(−τ(yi−θ)2/2)
Классическая статистика (т.е. максимального правдоподобия) дает нам оценку θ = ˉ уθ^=y¯
В байесовской перспективе мы добавляем максимальную вероятность с предварительной информацией. Выбор априорных значений для этой нормальной модели данных является еще одним нормальным распределением для . Нормальное распределение сопряжено с нормальным распределением.θ
θ∼N(a,1/b)
Апостериорное распределение, которое мы получаем из этой модели данных Normal-Normal (после множества алгебр), является еще одним нормальным распределением.
θ|y∼N(bb+nτa+nτb+nτy¯,1b+nτ)
b+nτay¯bb+nτa+nτb+nτy¯
θ|yθθ
Тем не менее, теперь вы можете использовать любой пример учебника с обычными данными, чтобы проиллюстрировать это. Я буду использовать набор данных airquality
в R. Рассмотрим проблему оценки средней скорости ветра (MPH).
> ## New York Air Quality Measurements
>
> help("airquality")
>
> ## Estimating average wind speeds
>
> wind = airquality$Wind
> hist(wind, col = "gray", border = "white", xlab = "Wind Speed (MPH)")
>
> n = length(wind)
> ybar = mean(wind)
> ybar
[1] 9.957516 ## "frequentist" estimate
> tau = 1/sd(wind)
>
>
> ## but based on some research, you felt avgerage wind speeds were closer to 12 mph
> ## but probably no greater than 15,
> ## then a potential prior would be N(12, 2)
>
> a = 12
> b = 2
>
> ## Your posterior would be N((1/))
>
> postmean = 1/(1 + n*tau) * a + n*tau/(1 + n*tau) * ybar
> postsd = 1/(1 + n*tau)
>
> set.seed(123)
> posterior_sample = rnorm(n = 10000, mean = postmean, sd = postsd)
> hist(posterior_sample, col = "gray", border = "white", xlab = "Wind Speed (MPH)")
> abline(v = median(posterior_sample))
> abline(v = ybar, lty = 3)
>
> median(posterior_sample)
[1] 10.00324
> quantile(x = posterior_sample, probs = c(0.025, 0.975)) ## confidence intervals
2.5% 97.5%
9.958984 10.047404
В этом анализе исследователь (вы) может сказать, что, учитывая данные + предварительную информацию, ваша оценка среднего ветра с использованием 50-го процентиля скорости должна быть 10,00324, что больше, чем просто использование среднего значения из данных. Вы также получаете полный дистрибутив, из которого вы можете извлечь доверительный интервал 95%, используя квантили 2,5 и 97,5.
Ниже я приведу две ссылки, я настоятельно рекомендую прочитать небольшую статью Казеллы. Он специально нацелен на эмпирические байесовские методы, но объясняет общую байесовскую методологию для нормальных моделей.
Ссылки:
Казелла Г. (1985). Введение в эмпирический байесовский анализ данных. Американский статистик, 39 (2), 83-87.
Гельман А. (2004). Байесовский анализ данных (2-е изд., Тексты по статистике). Boca Raton, Fla .: Chapman & Hall / CRC.