StableDistribution          package:fBasics          R Documentation

_S_t_a_b_l_e _D_i_s_t_r_i_b_u_t_i_o_n _F_u_n_c_t_i_o_n

_D_e_s_c_r_i_p_t_i_o_n:

     A collection and description of functions to compute  density,
     distribution function, quantile function and  to generate random
     variates from the stable distribution.  Two different algorithms
     are used for the symmetric  and skewed distribution. 

     The functions are:

       '[dpqr]symstb'  The symmetric stable distribution,
       '[dpqr]stable'  The skewed stable distribution using parametrizition 0.

_U_s_a_g_e:

     dsymstb(x, alpha)
     psymstb(q, alpha)
     qsymstb(p, alpha)
     rsymstb(n, alpha)

     dstable(x, alpha, beta, gamma = 1, delta = 0, pm = 0)
     pstable(q, alpha, beta, gamma = 1, delta = 0, pm = 0)
     qstable(p, alpha, beta, gamma = 1, delta = 0, pm = 0)
     rstable(n, alpha, beta, gamma = 1, delta = 0, pm = 0)

_A_r_g_u_m_e_n_t_s:

alpha, beta, gamma, delta: value of the index parameter 'alpha' with
          'alpha = (0,2]'; skewness parameter 'beta', in the range [-1,
          1]; scale parameter 'gamma'; and shift parameter 'delta'. 

       n: number of observations, an integer value. 

       p: a numeric vector of probabilities. 

      pm: parameterization, at the moment only the 0-th 
          parameterization is supported. 

    x, q: a numeric vector of quantiles. 

_D_e_t_a_i_l_s:

     *Symmetric Stable Distribution:* 

      For the density and probability the approach of McCulloch is 
     implemented. Note, that McCulloch's approach has a density 
     precision of 0.000066 and a distribution precision of 0.000022 
     for 'alpha' in the  range [0.84, 2.00].  Quantiles are evaluated
     from a root finding process via the probability function. Thus,
     this leads to nonnegligible  errors for small quantiles, since the
     quantile evaluation  depends on the quality of the probability
     function.To achieve  higher precisions use the function 'stable'
     with argument  'beta=0'. 
      For generation of random deviates the results of Chambers, 
     Mallows, and Stuck are used. 

     *Skew Stable Distribution:* 

      The function uses the approach of J.P. Nolan for general  stable
     distributions. Nolan derived expressions in form of  integrals
     based on the charcteristic function for standardized  stable
     random variables. These integrals are numerically  evaluated using
     R's function 'integrate'.  
      "S0" parameterization: based on the (M) representation of
     Zolotarev for an alpha stable distribution with skewness beta.
     Unlike the Zolotarev (M) parameterization, gamma and  delta are
     straightforward scale and shift parameters. This representation is
     continuous in all 4 parameters, and gives  an intuitive meaning to
     gamma and delta that is lacking in  other parameterizations. 
      "S" or "S1" parameterization: the parameterization used  by
     Samorodnitsky and Taqqu in the book Stable Non-Gaussian  Random
     Processes. It is a slight modification of Zolotarev's  (A)
     parameterization. 
      "S*" or "S2" parameterization: a modification of the S0 
     parameterization which is defined so that (i) the scale gamma 
     agrees with the Gaussian scale (standard dev.) when alpha=2  and
     the Cauchy scale when alpha=1, (ii) the mode is exactly at  delta. 
      "S3" parameterization: an internal parameterization. The scale is
     the same as the S2 parameterization, the shift is -beta*g(alpha), 
     where g(alpha) is defined in the paper below.

_V_a_l_u_e:

     All values are numeric vectors:  'd*' returns the density,  'p*'
     returns the distribution function,  'q*' returns the quantile
     function, and 'r*' generates random deviates.

_N_o_t_e:

     Note, that up to now for the stable distribution, only 
     parameterization 0 is implemented!

_A_u_t_h_o_r(_s):

     McCulloch for the Fortran program, and 
      Diethelm Wuertz for the Rmetrics R-port.

_R_e_f_e_r_e_n_c_e_s:

     Chambers J.M., Mallows, C.L. and Stuck, B.W. (1976); _A Method for
     Simulating Stable Random Variables_, J. Amer. Statist. Assoc. 71,
     340-344.

     Nolan J.P. (1999); _Stable Distributions_, Preprint, University
     Washington DC, 30 pages.

     Nolan J.P. (1999); _Numerical Calculation of Stable Densities and
     Distribution Functions_, Preprint, University Washington DC, 16
     pages.

     Samoridnitsky G., Taqqu M.S. (1994); _Stable Non-Gaussian Random
     Processes, Stochastic Models with Infinite Variance_, Chapman and
     Hall, New York, 632 pages.

     Weron, A., Weron R. (1999); _Computer Simulation of Levy
     alpha-Stable Variables and Processes_, Preprint Technical
     Univeristy of Wroclaw, 13 pages.

_S_e_e _A_l_s_o:

     'dnig', 'dhyp'.

_E_x_a_m_p_l_e_s:

       
     ## rsymstb -
        xmpBasics("\nStart: Symmetric Stable Distribuion:  > ")
        par(mfcol = c(3, 2), cex = 0.5)
        set.seed(1953)
        r = rsymstb(n = 1000, alpha = 1.85)
        plot(r, type = "l", main = "symstb: alpha = 1.85")
        # Plot empirical density and compare with true density:
        hist(r, n = 25, probability = TRUE, border = "white", col = "steelblue4")
        x = seq(-10, 10, 0.1)
        lines(x, dsymstb(x = x, alpha = 1.85))
        # Plot df and compare with true df:
        plot(sort(r), (1:1000/1000), main = "Probability", col = "steelblue4")
        lines(x, psymstb(x, alpha = 1.85))
        # Compute quantiles:
        qsymstb(psymstb(q = seq(-10, 10, 1), alpha = 1.85), alpha = 1.85)
        
     ## stable - 
        set.seed(1953)
        r = rstable(n = 1000, alpha = 1.85, beta = 0.3)
        plot(r, type = "l", main = "stable: alpha = 1,85 beta = 0.3")
        # Plot empirical density and compare with true density:
        hist(r, n = 25, probability = TRUE, border = "white", col = "steelblue4")
        x = seq(-10, 10, 0.1)
        lines(x, dstable(x = x, alpha = 1.85, beta = 0.3))
        # Plot df and compare with true df:
        plot(sort(r), (1:1000/1000), main = "Probability", col = "steelblue4")
        lines(x, pstable(q = x, alpha = 1.85, beta = 0.3))
        # Compute quantiles:
        qstable(pstable(seq(-10, 10, 1), alpha = 1.85, beta = 0.3), 
          alpha = 1.85, beta = 0.3)

