νเสื้อ
νเสื้อ
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
ให้เราลองทำแบบจำลอง:
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
การแสดงการประมาณค่านั้นไม่เสถียรมาก (ดูกราฟฮิสโตแกรมส่วนที่ปรับขนาดได้ของค่าประมาณนั้นอยู่ที่ขีด จำกัด สูงสุดที่กำหนดเพื่อปรับให้เหมาะสม 200)
ทำซ้ำด้วยขนาดตัวอย่างที่ใหญ่กว่า:
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
ซึ่งดีกว่ามาก แต่ค่าเฉลี่ยยังคงสูงกว่าค่าที่แท้จริง 2.5
จากนั้นโปรดจำไว้ว่านี่เป็นเวอร์ชันจริงของปัญหาจริงที่ต้องระบุพารามิเตอร์ตำแหน่งและมาตราส่วนด้วย
เสื้อν