[R-br] Estimador de Máxima verossimilhança para parâmetros da dist. q-exponencial
Paulo Justiniano
paulojus em leg.ufpr.br
Domingo Abril 27 16:27:09 BRT 2014
Complementando o comentário do Vinicius
voce tem 2 opcoes
- 1. faça sua função retornar o negativo da (log)verossimilhnaça
- 2. chame a optim() com a opções control=list(fnscale=-1)
On Sat, 26 Apr 2014, Vinicius Brito Rocha wrote:
> Como o Benilton e o Wagner pontuaram, problemas de otimização são por default de minimização e vc quer
> maximizar a sua função de verossimilhança. Quando vc chama a função optim vc está minimizando, e como
> não existe mínimo vc está tendo problemas. Basta trocar o parâmetro da função optim.
>
> Abs
>
> Vinicius
>
>
> Em 26 de abril de 2014 07:31, Wagner Bonat <wbonat em gmail.com> escreveu:
> Vc precisa escrever o negativo da log-verossimilhança. Veja abaixo.
>
> Quanto aos warnings talvez os parametros tenham alguma restrição vc pode usar o L-BFGS-B ou
> reparametrizar o modelo para evitar isso.
>
> n<-10000
> u<-runif(n)
> z<-1.8
> beta<- 1.2
> dados1 = (1/(beta*(z-2)))*((u^((1-z)/(2-z))-1)/((1-z)/(2-z)))
>
> ## Definindo a função de verossimilhança
>
> vero <- function(par,x){
> q = par[1]
> lambda = par[2]
> saida <- ((sum(log(1 - ((1 - q)*x*lambda))))/(1 - q)) + ((n)*log(2 - q)) + (n*log(lambda))
> return(saida)
> }
>
>
> optim(par=c(1.8,4),fn=vero,
> method="BFGS",x=dados1)
> $par
> [1] 1.7828974 0.8629283
>
> $value
> [1] 628.0947
>
> $counts
> function gradient
> 44 11
>
> $convergence
> [1] 0
>
> $message
> NULL
>
> There were 11 warnings (use warnings() to see them)
>
>
> Em 26 de abril de 2014 01:33, Romero Luiz M. Sales Filho <romero.sfilho em gmail.com> escreveu:
> Caros amigos,
> estou precisando encontrar os estimadores para os parâmetros da dist. q-ponencial, cuja pdf
> é dada da seguinte forma:
>
> { (2-q) \lambda e_q^{-\lambda x}}
>
> onde,
>
> e_q(x) = [1+(1-q)x]^{1 \over 1-q} .
>
> Estou tendo problemas pois utilizando o pacote Optim do R, não ocorre convergência em
> alguns métodos, na verdade só há convergência usando o método SANN, e mesmo assim as
> estimativas estão muito diferentes dos parâmetros que foram utilizados para gerar uma
> amostra aleatória da dist. q-exp.
>
> O código utilizado no R é o seguinte:
>
> ## Gerando Valores de uma q-exponencial
>
> n<-10000
> u<-runif(n)
> z<-1.8
> beta<- 1.2
> dados1 = (1/(beta*(z-2)))*((u^((1-z)/(2-z))-1)/((1-z)/(2-z)))
>
> ## Definindo a função de verossimilhança
>
> vero <- function(par,x){
> q = par[1]
> lambda = par[2]
> ((sum(log(1 - ((1 - q)*x*lambda))))/(1 - q)) + ((n)*log(2 - q)) + (n*log(lambda))
> }
>
> ## Otimizando os parâmetros - o método SANN sempre converge.
>
> optim(par=c(1.8,4),fn=vero,
> method="SANN",x=dados1
> )
>
> E a saída é a seguinte:
>
> $par
> [1] 1.000014 3.807168
>
> $value
> [1] -284366598
>
> $counts
> function gradient
> 10000 NA
>
> $convergence
> [1] 0
>
> $message
> NULL
>
> Houve 50 ou mais avisos (use warnings() para ver os primeiros 50)
>
>
> Alguém pode me ajudar nessa questão, uma vez que as estimativas dos parâmetros estão muito
> diferentes dos parâmetros originais?
>
> Obrigado!
>
> Romero.
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
>
>
>
> --
> Wagner Hugo Bonat
> LEG - Laboratório de Estatística e Geoinformação
> UFPR - Universidade Federal do Paraná
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
>
>
>
> --
> Vinicius Brito Rocha.
> Estatístico e Atuário
> M.Sc. Engenharia de Produção/PO
>
>
>
>
Mais detalhes sobre a lista de discussão R-br