簡體   English   中英

我一直在使用R軟件包優化工具進行統計模型估計。 有誰知道如何獲得優化結果的黑森州矩陣?

[英]I have been working on a statistical model estimation using the R package optimx. Does anyone know how to get the Hessian matrix of optimx results?

我一直在使用R軟件包優化工具進行統計模型估計。 我的代碼工作正常,並且我得到了所有優化的摘要結果(參數估計,函數值,收斂代碼等)。 但是,我還需要這些優化結果的Hessian矩陣。 我未能在optimx文檔,R網站和討論論壇中尋求幫助。 有人能幫我嗎? 先感謝您!!!

這是一個示例(不是統計模型,但足以說明我的意思):

library(optimx) 

fr <- function(x) {
    ## Rosenbrock Banana function 
    x1 <- x[1] 
    x2 <- x[2] 
    100 * (x2 - x1 * x1)^2 + (1 - x1)^2 
    }

grr <- function(x) { 
    ## Gradient of ’fr’ 
    x1 <- x[1] 
    x2 <- x[2] 
    c(-400 * x1 * (x2 - x1 * x1) - 2 * (1 - x1), 200 * (x2 - x1 * x1)) 
    } 

ans1<-optimx(c(-1.2,1), fr, grr)

全部在幫助頁面上。 請參閱“值”標題下的?optimx (在xtimes之后)。

返回的答案對象的屬性“詳細信息”包含有關在假定最佳狀態下的梯度(ngatend)和Hessian矩陣(nhatend)的信息(如果計算得出),以及Hessian(hev)的特征值以及消息,如果有,則由每種方法的計算返回,該方法包含在詳細信息的每一行中。 如果從optimx()返回的對象是ans,則可以通過構造attr(ans,“ details”)訪問該對象。

該對象是一個基於列表的矩陣,因此,如果ans是optimx的輸出,則attr(ans,“ details”)[1,]給出第一行,而attr(ans,“ details”)[[Nelder-Mead“ ,]給出Nelder-Mead行。 成功或已通過save.failures = TRUE強制保存的每種方法都有一行。

attr(ans1, "details")["Nelder-Mead", ]
$method
[1] "Nelder-Mead"

$ngatend
[1]  0.006260098 -0.002869164

$nhatend
          [,1]      [,2]
[1,]  802.4220 -400.1041
[2,] -400.1041  200.0000

$hev
[1] 1002.0216761    0.4003383

$message
[1] "none"

只需獲取使用的兩種方法(Nelder-Mead和BFGS)的Hessians

attr(ans1, "details")[ ,"nhatend"]
$`Nelder-Mead`
          [,1]      [,2]
[1,]  802.4220 -400.1041
[2,] -400.1041  200.0000

$BFGS
     [,1] [,2]
[1,]  802 -400
[2,] -400  200

僅針對Nelder-Mead優化獲得Hessian:

attr(ans1, "details")["Nelder-Mead" ,"nhatend"]
[[1]]
          [,1]      [,2]
[1,]  802.4220 -400.1041
[2,] -400.1041  200.0000

暫無
暫無

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

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