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@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@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@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@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