Ich habe einen Datensatz, von dem ich weiß, dass er eine Pareto-Verteilung hat. Kann mir jemand zeigen, wie man diesen Datensatz in Scipy einpasst? Ich habe den folgenden Code zum laufen, aber ich habe keine Ahnung, was mir zurückgegeben wird (a, b, c). Nach dem Erhalt von a, b, c, wie berechne ich dann die Varianz mit ihnen?Anpassen einer Pareto-Verteilung mit (Python) Scipy
Antwort
Seien Sie sehr vorsichtig bei der Anpassung der Stromgesetze !! Viele gemeldete Machtgesetze sind durch ein Potenzgesetz tatsächlich schlecht angepasst. Alle Details finden Sie unter Clauset et al. (auch unter arxiv, wenn Sie keinen Zugriff auf das Journal haben). Sie haben einen companion website zu dem Artikel, der jetzt eine Verbindung zu einer Python-Implementierung herstellt. Ich weiß nicht, ob es Scipy benutzt, weil ich die R-Implementierung benutzt habe, als ich es zuletzt benutzt habe.
Hier ist eine schnell geschriebene Version, die einige Hinweise von der Referenzseite nimmt, die Rupert gab. Dies ist derzeit in scipy und statsmodels in Arbeit und erfordert MLE mit einigen festen oder eingefrorenen Parametern, die nur in den Stammversionen verfügbar sind. Es sind noch keine Standardfehler für die Parameterschätzer oder andere Ergebnisstatistiken verfügbar.
'''estimating pareto with 3 parameters (shape, loc, scale) with nested
minimization, MLE inside minimizing Kolmogorov-Smirnov statistic
running some examples looks good
Author: josef-pktd
'''
import numpy as np
from scipy import stats, optimize
#the following adds my frozen fit method to the distributions
#scipy trunk also has a fit method with some parameters fixed.
import scikits.statsmodels.sandbox.stats.distributions_patch
true = (0.5, 10, 1.) # try different values
shape, loc, scale = true
rvs = stats.pareto.rvs(shape, loc=loc, scale=scale, size=1000)
rvsmin = rvs.min() #for starting value to fmin
def pareto_ks(loc, rvs):
est = stats.pareto.fit_fr(rvs, 1., frozen=[np.nan, loc, np.nan])
args = (est[0], loc, est[1])
return stats.kstest(rvs,'pareto',args)[0]
locest = optimize.fmin(pareto_ks, rvsmin*0.7, (rvs,))
est = stats.pareto.fit_fr(rvs, 1., frozen=[np.nan, locest, np.nan])
args = (est[0], locest[0], est[1])
print 'estimate'
print args
print 'kstest'
print stats.kstest(rvs,'pareto',args)
print 'estimation error', args - np.array(true)
- 1. Anpassen einer Gamma-Verteilung mit (Python) Scipy
- 2. Anpassen von Daten mit UnivariateSpline in scipy python
- 3. ANCOVA in Python mit Scipy/Numpy stats
- 4. Python scipy nicht installiert
- 5. Python SciPy convolve vs fftconvolve
- 6. Lesen MatLab-Dateien in Python mit scipy
- 7. Extrapolieren mit interp2d von scipy Python
- 8. Multivariate Normaler CDF in Python mit scipy
- 9. Python - Scipy lineare Regression mit Nan-Werten
- 10. Wie mit numpy/scipy
- 11. Python (scipy) Importzeit von Textdatei
- 12. SciPy/Python-Installation auf Ubuntu
- 13. Python Scipy FFT WAV-Dateien
- 14. Falsche Rechteckwellenabtastung mit scipy
- 15. ANOVA in Python mit Pandas Datenrahmen mit Statsmodels oder Scipy?
- 16. Python (Scipy): Den Skalenparameter (Standardabweichung) einer Gaußschen Verteilung finden
- 17. Python - Bildgröße anpassen
- 18. Saisonale Anpassung in Python und Scipy
- 19. Logistische Regression mit SciPy
- 20. WPF: Anpassen einer Datamap mit einer Bindungseigenschaft
- 21. Log von sehr kleinen Werten mit numpy/scipy in Python
- 22. Verketten Sie dünn besetzte Matrizen in Python mit SciPy/Numpy
- 23. Prüfdichte einer Scipy Sparse Matrix
- 24. Scipy Zoom mit komplexen Werten
- 25. Quantifizierung der Qualität der Kurvenanpassung mit Python SciPy
- 26. (Scikit - Python) Import: Kein Modul scipy namens
- 27. Wie importieren Scipy und Numpy in Python?
- 28. Scipy Dendrogramm mit Namen
- 29. Normalverteilung mit scipy
- 30. SciPy Installation auf Windows für Python 3.5
Die Python-Implementierung (http://code.google.com/p/agpy/wiki/PowerLaw) enthält zwei Versionen; einer hängt von der Zahl ab, einer nicht. (Ich schrieb es) – keflavich