Maison > développement back-end > Tutoriel Python > Comment puis-je adapter des données empiriques aux distributions théoriques à l'aide de Scipy en Python ?

Comment puis-je adapter des données empiriques aux distributions théoriques à l'aide de Scipy en Python ?

Susan Sarandon
Libérer: 2024-11-29 21:30:14
original
211 Les gens l'ont consulté

How Can I Fit Empirical Data to Theoretical Distributions Using Scipy in Python?

Ajustement de la distribution empirique aux distributions théoriques avec Scipy


Introduction


Vous avez un grand ensemble de données de valeurs entières et vise à calculer les valeurs p, la probabilité de rencontrer des valeurs plus élevées. Pour déterminer ces probabilités, vous recherchez une distribution théorique qui se rapproche de la distribution de vos données. Cet article explique comment y parvenir à l'aide du package Scipy de Python.


Fitting Distributions


Le module scipy.stats de Scipy fournit une vaste collection de données continues et discrètes. distributions de probabilité. Chaque distribution possède ses propres paramètres qui caractérisent sa forme et son comportement. L'objectif est de trouver la distribution qui correspond le mieux à vos données empiriques sur la base d'un test d'ajustement.


Tests d'ajustement


< p>Les tests d'adéquation mesurent l'écart entre une distribution empirique et une distribution théorique. Les tests courants incluent le test de Kolmogorov-Smirnov et le test du chi carré. Scipy propose des fonctions pour effectuer ces tests, vous permettant d'évaluer l'adéquation des distributions candidates.


Somme des erreurs quadratiques (SSE)


One L’approche consiste à utiliser la somme des erreurs quadratiques (SSE) comme mesure de l’adéquation. SSE calcule la différence au carré entre les fonctions de densité de probabilité empiriques et théoriques. La distribution avec le SSE minimal est considérée comme la meilleure solution.


Implémentation Python


Le code Python suivant montre comment adapter vos données aux distributions théoriques en utilisant SSE :


<br>importer des pandas as pd<br>import numpy as np<br>import scipy.stats as st<br>import matplotlib.pyplot as plt</p>
<p>data = pd.read_csv('data.csv') # Remplacer par vos données fichier</p>
<h1>Histogramme du data</h1>
<p>plt.hist(data, bins=50)<br>plt.show()</p>
<h1>Distributions des candidats</h1>
<p>dist_names = ['norm', 'expon', 'gamma', 'beta']</p>
<h1>Ajustez chaque distribution et calculez SSE</h1>
<p>best_distribution = None<br>min_sse = np.inf<br>pour dist dans dist_names :</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">dist = getattr(st, dist)
params = dist.fit(data)

# Calculate SSE
sse = np.mean((dist.pdf(data, *params) - np.histogram(data, bins=50, density=True)[0]) ** 2)

# Update the best distribution if necessary
if sse < min_sse:
    min_sse = sse
    best_distribution = dist, params
Copier après la connexion

Imprimez les paramètres de distribution pour le meilleur ajustement

imprimer (meilleure_distribution[0].nom, best_distribution[1])

Ce code fournit le nom de la distribution la mieux adaptée ainsi que ses paramètres estimés. Vous pouvez utiliser ces paramètres pour calculer les valeurs p et évaluer l'adéquation de la distribution.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal