νt
νt
set.seed(1234)
n <- 10
x <- rt(n, df=2.5)
make_loglik <- function(x)
Vectorize( function(nu) sum(dt(x, df=nu, log=TRUE)) )
loglik <- make_loglik(x)
plot(loglik, from=1, to=100, main="loglikelihood function for df parameter", xlab="degrees of freedom")
abline(v=2.5, col="red2")
n
Bazı simülasyonları deneyelim:
t_nu_mle <- function(x) {
loglik <- make_loglik(x)
res <- optimize(loglik, interval=c(0.01, 200), maximum=TRUE)$maximum
res
}
nus <- replicate(1000, {x <- rt(10, df=2.5)
t_nu_mle(x) }, simplify=TRUE)
> mean(nus)
[1] 45.20767
> sd(nus)
[1] 78.77813
Tahmin çok dengesizdir (histograma bakıldığında, tahmini değerlerin büyük bir kısmı, 200'ü optimize etmek için verilen üst sınırdadır).
Daha büyük bir örneklem büyüklüğü ile tekrarlama:
nus <- replicate(1000, {x <- rt(50, df=2.5)
t_nu_mle(x) }, simplify=TRUE)
> mean(nus)
[1] 4.342724
> sd(nus)
[1] 14.40137
ki bu daha iyidir, ancak ortalama hala 2.5'in gerçek değerinin çok üzerindedir.
Sonra bunun, konum ve ölçek parametrelerinin de tahmin edilmesi gereken gerçek sorunun basitleştirilmiş bir versiyonu olduğunu unutmayın.
tν