Ошибка при подборе параметров устойчивого распределения с R - PullRequest
1 голос
/ 26 марта 2012

На основании предыдущая тема с тем же аргументом я пытаюсь установить стабильный дистрибутив с R на основе этого сценария:

  xx <- read.table('dati.era.anno.dat',head=F)
  x<-xx$V1
  # Density (I reparametrize it to remove the constraints
  # on the parameters) 
  library(fBasics)
  f <- function(u,a,b,c,d) {
  cat(a,b,c,d,"\n")  # Some logging (it is very slow)
  stabledist::dstable(u, 2*exp(a)/(1+exp(a)), 2*exp(b)/(1+exp(b))-1, c,d)
  }
  # Fit the distribution
  library(MASS)
  r <- fitdistr(x, f, list(a=1,b=0,c=mad(x),d=median(x)))

но я всегда получаю эту ошибку:

1 0 27.81936 0 
1.001 0 27.81936 0 
0.999 0 27.81936 0 
1 0.001 27.81936 0 
1 -0.001 27.81936 0 
1 0 27.82036 0 
1 0 27.81836 0 
1 0 27.81936 0.001 
1 0 27.81936 -0.001 
96.79954 0 -1.486068 0 
Error: 0 <= gamma is not TRUE

почему

1 Ответ

1 голос
/ 26 марта 2012

Третий параметр (gamma в сообщении об ошибке, c в коде) является мерой масштаба: он должен быть положительным. Вы можете перепараметризовать функцию плотности, чтобы применить это ограничение.

f <- function(u,a,b,c,d) {
  cat(a,b,c,d,"\n")
  dstable(u, 
    2*exp(a)/(1+exp(a)), 2*exp(b)/(1+exp(b))-1, 
    exp(c), d
  )
}
r <- fitdistr(x, f, list(a=1, b=0, c=log(mad(x)), d=median(x)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...