[SciPy-User] stats.distributions moments and expect - another round
josef.pktd at gmail.com
josef.pktd at gmail.com
Sat Dec 4 10:35:55 EST 2010
On Sat, Dec 4, 2010 at 9:27 AM, <josef.pktd at gmail.com> wrote:
> I spend most of a day fixing the expect function for stats
> distributions and checking mean, variance, skew and kurtosis, and
> trying to get it to work for almost all distributions.
>
> expect which uses integrate quad doesn't always work well, but the
> results look mostly good except for some fat-tailed distributions.
>
> Below are the comparisons between the stats method of the
> distributions and the outcome of expect. The first failure for mean is
> at 4 decimals. The tables are discrepancies at two decimals:
>
> invgamma might still have some numerical integration problems, that I
> haven't figured out yet. Some other ones still look like incorrect
> formulas for skew and kurtosis.
>
> As an aside: I think, finally, that we can add the doc templates to
> many distributions, so we have a way of pointing out differences in
> parameterization and known numerical problems. For example, I'm still
> not sure whether dist.stats contains the correct information about
> whether the moments don't exist or are infinite.
>
> Josef
>
>
> Variance
>
>>>> print SimpleTable(var_, headers=['distname', 'diststats', 'expect'])
> ==========================================
> distname diststats expect
> ------------------------------------------
> pareto 1.60340572053 1.57246536012
> tukeylambda 0.304764722791 0.0268724542194
> fatiguelife 884942.25 884940.75504
> t 3.69051720817 3.66604272097
> powerlaw 0.858574961358 0.0641248702779
> invgamma 13.1319516251 5.5288716506
> rdist 1.78002848501 0.526315790145
> ------------------------------------------
>
> Skew
>
>>>> print SimpleTable(skew, headers=['distname', 'diststats', 'expect'])
> ===========================================
> distname diststats expect
> -------------------------------------------
> mielke 7.59540085257 6.91088104518
> fisk 38.7938857832 12.9246301568
> foldnorm 0.971407236222 0.202188769695
> gilbrat 6.18487713863 6.17333365849
> loglaplace 16.9237038681 11.2535633383
> fatiguelife 0.0408718910942 3.93239048725
> powerlaw -0.906960466124 -0.420181302329
> ncf 40747519832.7 8.94481163856
> f 1.93130205529 1.80641432186
> invgamma -0.477729689377 655.942282864
> -------------------------------------------
>
> Kurtosis
>
>>>> print SimpleTable(kurt, headers=['distname', 'diststats', 'expect'])
> ===========================================
> distname diststats expect
> -------------------------------------------
> mielke -149.405089743 362.442518204
> fisk -224.659270348 2099.30241789
> foldnorm 2.70517285483 -0.294828589688
> tukeylambda -2.98365209914 -0.897302898918
> dweibull 1.90893020344 -1.06484211833
> gilbrat 110.936392176 107.859563214
> loglaplace -164.332555303 1330.2395564
> genpareto 14.8285714286 14.8119563403
> lognorm 81.1353811489 79.6180870122
> burr 112616.270172 6.21265707889
> ncf -239984516633.0 13492.9902378
> f 7.9138697318 7.06539159862
> nct -409040.407062 0.605963897342
> invgamma -2.866573514 2116889.58176
> rdist -2.56785479799 -1.53846154515
> -------------------------------------------
>
one down: invgamma is correct if a>4, requirement for kurtosis to exist
Josef
More information about the SciPy-User
mailing list