En statistiques, il est souvent nécessaire d'ajuster une distribution empirique, obtenue à partir de données observées, à une distribution théorique qui décrit le mieux les données. Cela permet le calcul de probabilités et d'autres inférences statistiques.
Scipy fournit de nombreuses fonctions de distribution qui peuvent être adaptées aux données. . Pour trouver la distribution la plus adaptée, la méthode des moindres carrés est souvent utilisée pour minimiser la somme des erreurs quadratiques (SSE) entre l'histogramme des données et l'histogramme de la distribution ajustée.
import numpy as np import scipy.stats as st # Data points data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Candidate theoretical distributions distributions = ['norm', 'beta', 'gamma'] # Iterate over distributions and find best fit best_dist = None lowest_sse = float('inf') for dist_name in distributions: dist = getattr(st, dist_name) # Fit distribution to data params = dist.fit(data) # Evaluate SSE sse = np.sum((np.histogram(data, bins=10, density=True)[0] - dist.pdf(np.linspace(0, 10, 100), *params))**2) # Update best distribution if lower SSE found if sse < lowest_sse: lowest_sse = sse best_dist = dist # Calculate p-value for a given value value = 5 p_value = best_dist.cdf(value)
< h2>Exemple
Dans l'exemple ci-dessus, la distribution empirique des données est ajustée à trois distributions théoriques différentes (normal, bêta et gamma). La distribution gamma présente le SSE le plus bas et constitue donc le meilleur ajustement. La valeur p pour la valeur 5 est ensuite calculée comme la fonction de distribution cumulée de la distribution gamma évaluée à 5.
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!