[英]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.