Gradiente e hessiana simbólicos ou numéricos

Bom dia a todos Estou trabalhando em um modelo não-linear e necessito de calcular, para efeitos de programação da matriz de informação de fisher, o vetor gradiente e a hessiana de uma função de ligação não-linear do tipo eta(x,beta). Por exemplo, eta(x,beta)=beta[1]/(1+beta[2]*exp(-beta[3]*x)). Já tentei utilizar os pacotes/funções nls, optim, deriv e numericDeriv. Tem o pacote deSolve, mas não se dá pra utilizar. Não preciso da solução analítica, mas sempre é bom, né? rssss Att, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x Prof. Clécio da Silva Ferreira x x Depto Estatística - UFJF x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Você se refere a informação de fisher, gradiente e hessiana da função de verossimilhança? a rootSolve::gradient() pode ser útil. Alguns exemplos de como obter essas quantidades você pode ver no material recente que apresentamos no SINAPE http://www.leg.ufpr.br/doku.php/cursos:mcie Forneça um CMR para que possamos contribuir mais. À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Walmes, aí está o exemplo citado. Preciso derivar, em relação a beta, uma e duas vezes. Uma daquelas funções daria para ser utilizada, se eu escrevesse cada componente de beta como argumento, mas eu gostaria de uma solução mais prática. não tenho como escrever o CMR mais exato! nlf<-function(x,beta){ resp<- beta[1]/(1 +beta[2]*exp(-beta[3]*x)) return(resp) } Clécio Em 20 de setembro de 2012 11:22, Walmes Zeviani <walmeszeviani@gmail.com>escreveu:
Você se refere a informação de fisher, gradiente e hessiana da função de verossimilhança? a rootSolve::gradient() pode ser útil. Alguns exemplos de como obter essas quantidades você pode ver no material recente que apresentamos no SINAPE
http://www.leg.ufpr.br/doku.php/cursos:mcie
Forneça um CMR para que possamos contribuir mais.
À disposição. Walmes.
========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x Prof. Clécio da Silva Ferreira x x Depto Estatística - UFJF x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Veja o exemplo de como obter o gradiente e hessianos numericamente f <- function(beta, t){ with(as.list(beta), b1/(1+b2*exp(-b3*t))) } f(c(b1=1, b2=0.5, b3=-0.1), t=1:3) require(rootSolve) help(gradient, , help_type="html") gradient(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1) gradient(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1:3) help(hessian, help_type="html") hessian(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1) hessian(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1:2) Dependendo das operações que vai fazer, é melhor organizar o hessiano em um array. É possível obter analiticamente usando a deriv3(). Para isso veja esse post http://ridiculas.wordpress.com/2011/05/19/bandas-de-confianca-para-modelo-de... À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Muito bom, Walmes. Não havia tentado este pacote, dá para generalizar. Abs, Clécio Em 20 de setembro de 2012 16:49, Walmes Zeviani <walmeszeviani@gmail.com>escreveu:
Veja o exemplo de como obter o gradiente e hessianos numericamente
f <- function(beta, t){ with(as.list(beta), b1/(1+b2*exp(-b3*t))) }
f(c(b1=1, b2=0.5, b3=-0.1), t=1:3)
require(rootSolve)
help(gradient, , help_type="html") gradient(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1) gradient(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1:3)
help(hessian, help_type="html") hessian(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1) hessian(f, x=c(b1=1, b2=0.5, b3=-0.1), t=1:2)
Dependendo das operações que vai fazer, é melhor organizar o hessiano em um array. É possível obter analiticamente usando a deriv3(). Para isso veja esse post
http://ridiculas.wordpress.com/2011/05/19/bandas-de-confianca-para-modelo-de...
À disposição. Walmes.
========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x Prof. Clécio da Silva Ferreira x x Depto Estatística - UFJF x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
participantes (2)
-
Clécio da Silva Ferreira
-
Walmes Zeviani