ν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
Hãy để chúng tôi thử một số mô phỏng:
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
Hiển thị ước tính là rất không ổn định (nhìn vào biểu đồ, một phần khá lớn của các giá trị ước tính nằm ở giới hạn trên được đưa ra để tối ưu hóa 200).
Lặp lại với kích thước mẫu lớn hơn:
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
cái này tốt hơn nhiều, nhưng giá trị trung bình vẫn cao hơn giá trị thật 2,5.
Sau đó, hãy nhớ rằng đây là một phiên bản đơn giản hóa của vấn đề thực sự trong đó các tham số vị trí và tỷ lệ cũng phải được ước tính.
tν