簡體   English   中英

卡方分布自由度的 MLE 估計誤差

[英]Error in MLE estimation of degrees of freedom of chi-squared distribution

我的任務是使用最大似然估計來估計幾個卡方分布的概率分布函數的自由度k 所以我首先從 chi 分布中抽取 20 個隨機值,然后使用最大似然估計 R 中的自由度k

假設 chi 分布的似然函數為:

對數似然函數的圖片

library('maxLik')
library('lmtest')



 > n <- 20
 > df = 3
 > df <- 3
 > chi20 <- rchisq(n, df)
 > X <- chi20


loglikfun <- function(param) {
    if (param[1] <= 0) return(NA)
    #return(sum(dchisq(X = chi20, df = param[1], log = TRUE])))
    return((param[1]/2-1)*(sum(log(X)))-(1/2*sum(X)-n*log(gamma(param[1]/2)))-(n*param[1]/2*log(2)))
}

mle <- maxLik(Loglikfun, start = c(df = 1))

summary(mle)

但是,我得到的不是大約 3 的估計值,而是帶有一堆 NaN 錯誤的 7496171。

上述代碼的輸出

有什么建議?

如果繪制函數的輸出,您將看到它在正確值附近達到最小值

plot(seq(0.1, 10, 0.1), sapply(seq(0.1, 10, 0.1), loglikfun), type = "l")

在此處輸入圖片說明

因此,您似乎只是在輸出中遺漏了一個負號:

 n  <- 20
 df <- 3
 X  <- rchisq(n, df)
 
loglikfun <- function(param) {
   
  if (param[1] <= 0) return(NA)
  return(-((param[1]/2-1)*(sum(log(X)))-(1/2*sum(X)-n*log(gamma(param[1]/2)))-(n*param[1]/2*log(2))))
}

mle <- maxLik(loglikfun, start = c(param = 1))

summary(mle)

#> --------------------------------------------
#> Maximum Likelihood estimation
#> Newton-Raphson maximisation, 5 iterations
#> Return code 8: successive function values within relative tolerance limit (reltol)
#> Log-Likelihood: 48.13905 
#> 1  free parameters
#> Estimates:
#>       Estimate Std. error t value  Pr(> t)    
#> param   2.9778     0.4593   6.483 9.01e-11 ***
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> --------------------------------------------

F(k)= -n log(2 gamma(k/2)+(k/2-1)*SumIFom1toN(log(Xi/2))- -SumIFom1toN(Xi)/2

您可以優化 QS=SumIFom1toN(log(Xi/2); HS=SumIFom1toN(Xi)/2;

F(k,QS,HS)= -n log(2 gamma(k/2)+(k/2-1)*QS-HS;未考慮機器均值的計算精度;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM