# Solved – Fitting the parameters of a stable distribution

distributionsfourier transformrstable-distribution

I have a data set and I have to fit this data set with a stable distribution. The problem is that the stable distributions are known analytically only in the form of the characteristic function (Fourier transform). How can I do this?

As suggested in the comments, you can use fitdistr, with the density function from fBasics.

# Sample data
x <- rt(100,df=4)

# Density (I reparametrize it to remove the constraints
# on the parameters)
library(fBasics)
library(stabledist)
f <- function(u,a,b,c,d) {
cat(a,b,c,d,"\n")  # Some logging (it is very slow)
dstable(u, 2*exp(a)/(1+exp(a)), 2*exp(b)/(1+exp(b))-1, exp(c), d)
}

# Fit the distribution
library(MASS)
r <- fitdistr(x, f, list(a=1, b=0, c=log(mad(x)), d=median(x)))
r

# Graphical check
plot(
qstable(ppoints(100),
2*exp(r$estimate[1])/(1+exp(r$estimate[1])),
2*exp(r$estimate[2])/(1+exp(r$estimate[2]))-1,
exp(r$estimate[3]), r$estimate[4]
),
sort(x)
)
abline(0,1)