Подгружаем пакет для метода максимального правдоподобия:

library("maxLik")

Задача 1. Взяв несколько пачек m&m-син исследователь Вениамин посчитал количества эмэндэмсин разных цветов.

x <- c(25, 35, 30, 32, 27, 31)

Вениамин хочет проверить гипотезу \(H_0\): все цвета встречаются равновероятно, с вероятностью \(1/6\).

Решение.

Задаём функцию правдподобия для данного случая: \[ L(p)=p_1^{x_1}\cdot p_2^{x_2}\cdot \ldots \cdot p_6^{x_6} \]

Логарифмируем, получаем \(\ell(p)=\sum_{i=1}^{6} x_i \ln(p_i)\).

ell <- function(p) {
  ans <- sum(x*log(p))
  return(ans)
}

В данной задаче можно руками без компа найти максимум правдоподобия :)

p_ml <- x/180
p_ml
## [1] 0.1388889 0.1944444 0.1666667 0.1777778 0.1500000 0.1722222
p_h0 <- rep(1/6, 6)
p_h0
## [1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667

Значения правдоподобия в точке экстремума и в точке, соответствующей верной \(H_0\):

ell(p_ml)
## [1] -321.4425
ell(p_h0)
## [1] -322.5167

Считаем статистику отношения правдоподобия и находим критическое значение

LR <- 2*(ell(p_ml)-ell(p_h0))
LR
## [1] 2.148436
qchisq(0.95, df=5)
## [1] 11.0705

Вывод: \(H_0\) не отвергается

Если максимизировать в R, то надо явно выделить пять независимых вероятностей и создать отдельную функцию:

ell2 <- function(p5) {
  last_pro <- 1-sum(p5)
  all_p <- c(p5, last_pro)
  ans <- ell(all_p)
  return(ans)
}

Находим оценки с помощью R:

model <- maxLik(logLik = ell2, start = rep(1/6,5))
model$estimate
## [1] 0.1388889 0.1944444 0.1666667 0.1777778 0.1500000

Задача 2.

Величины \(X_1\), \(X_2\), , \(X_{100}\) независимы и нормальны \(N(\mu, \sigma^2)\). Для имеющейся выборки оказалось, что \(\sum X_i=200\), \(\sum X_i^2=1100\).

Найдите ML оценки \(\mu\), \(\sigma^2\).

Проверьте гипотезу \(H_0\): \(\mu=3\) и \(\sigma^2=10\)

Задаем функцию правдоподобия

ell <- function(pars) {
  mu <- pars[1]
  s2 <- pars[2]
  ans <- -50*log(s2)-
    (1100+100*mu^2-2*200*mu)/(2*s2)
  return(ans)
}

Для наглядности значения лог-правдоподобия в нескольких точках

ell(c(1,1))
## [1] -400
ell(c(2,7))
## [1] -147.2955
ell(c(100,100))
## [1] -5035.759

Максимизируем функцию правдоподобия в R:

model <- maxLik(logLik = ell, start=c(0,1))
pars_ml <- model$estimate
pars_ml
## [1] 2 7

Заводим вектор для \(H_0\):

pars_h0 <- c(3,10)
pars_h0
## [1]  3 10

LR-статистика и критические значения

LR <- 2*(ell(pars_ml)-ell(pars_h0))
LR
## [1] 15.66749
qchisq(0.95, df=2)
## [1] 5.991465

Вывод: \(H_0\) отвергается