


11 méthodes de base pour déterminer la normalité des distributions de données
Dans le domaine de la science des données et de l'apprentissage automatique, de nombreux modèles supposent que les données sont normalement distribuées ou que les données fonctionnent mieux sous une distribution normale. Par exemple, la régression linéaire suppose que les résidus sont distribués normalement et l'analyse discriminante linéaire (LDA) est dérivée d'hypothèses telles que la distribution normale. Par conséquent, comprendre comment tester la normalité des données est crucial pour les data scientists et les praticiens de l'apprentissage automatique
Cet article vise à présenter 11 méthodes de base pour tester la normalité des données afin d'aider les lecteurs à mieux comprendre les caractéristiques de la distribution des données et à apprendre comment appliquer des méthodes d’analyse appropriées. Cela permet de mieux gérer l'impact de la distribution des données sur les performances du modèle et de devenir plus à l'aise dans le processus d'apprentissage automatique et de modélisation des données
Méthodes de traçage
1) est une méthode largement utilisée pour vérifier si une distribution de données. est conforme à une distribution normale. Dans le tracé QQ, les quantiles des données sont comparés aux quantiles de la distribution normale standard. Si la distribution des données est proche de la distribution normale, les points sur le tracé QQ seront proches d'une ligne droite
Pour démontrer le Tracé QQ, ce qui suit L'exemple de code génère un ensemble de données aléatoires qui suivent une distribution normale. Après avoir exécuté le code, vous pouvez voir le tracé QQ ainsi que la courbe de distribution normale correspondante. En observant la distribution des points sur le graphique, vous pouvez dans un premier temps juger si les données sont proches d'une distribution normale
import numpy as npimport scipy.stats as statsimport matplotlib.pyplot as plt# 生成一组随机数据,假设它们服从正态分布data = np.random.normal(0, 1, 1000)# 绘制QQ图stats.probplot(data, dist="norm", plot=plt)plt.title('Q-Q Plot')plt.show()
2 KDE Plot
Le tracé KDE (Kernel Density Estimation) est une méthode de visualisation de la distribution des données, ce qui peut aider Nous avons testé la normalité des données. Dans le tracé KDE, en estimant la densité des données et en les dessinant dans une courbe lisse, cela nous aide à observer la forme de distribution des données.
Pour démontrer le tracé KDE, l'exemple de code suivant génère un ensemble de données aléatoires qui obéit à un répartition normale. Après avoir exécuté le code, vous pouvez voir le tracé KDE et la courbe de distribution normale correspondante, et utiliser la visualisation pour détecter si la distribution des données est conforme à la normalité
import numpy as npimport seaborn as snsimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(0)data = np.random.normal(loc=0, scale=1, size=1000)# 创建KDE Plotsns.kdeplot(data, shade=True, label='KDE Plot')# 添加正态分布曲线mu, sigma = np.mean(data), np.std(data)x = np.linspace(min(data), max(data), 100)y = (1/(sigma * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((x - mu) / sigma) ** 2)plt.plot(x, y, 'r--', label='Normal Distribution')# 显示图表plt.legend()plt.show()
3. Vous pouvez découvrir la distribution des données. en observant la forme du Violin Plot pour déterminer initialement si les données sont proches d'une distribution normale. Si le tracé en violon prend la forme d'une courbe en cloche, les données sont probablement distribuées à peu près normalement. Si votre tracé Violin est fortement asymétrique ou présente plusieurs pics, les données risquent de ne pas être distribuées normalement.
L'exemple de code suivant est utilisé pour générer des données aléatoires suivant une distribution normale pour démontrer Violin Plot. Après avoir exécuté le code, vous pouvez voir le tracé Violin et la courbe de distribution normale correspondante. Détectez la forme de la distribution des données grâce à la visualisation pour juger dans un premier temps si les données sont proches d'une distribution normale
import numpy as npimport seaborn as snsimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(0)data = np.random.normal(loc=0, scale=1, size=100)# 创建 Violin Plotsns.violinplot(data, inner="points")# 添加正态分布曲线mu, sigma = np.mean(data), np.std(data)x = np.linspace(min(data), max(data), 100)y = (1/(sigma * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((x - mu) / sigma) ** 2)plt.plot(x, y, 'r--', label='Normal Distribution')# 显示图表plt.legend()plt.show()4.Histogramme
L'utilisation d'un histogramme (Histogramme) pour détecter la normalité de la distribution des données est également courante méthode. L'histogramme peut nous aider à comprendre intuitivement la distribution des données et peut déterminer de manière préliminaire si les données sont proches d'une distribution normale
import numpy as npimport matplotlib.pyplot as pltimport scipy.stats as stats# 生成一组随机数据,假设它们服从正态分布data = np.random.normal(0, 1, 1000)# 绘制直方图plt.hist(data, bins=30, density=True, alpha=0.6, color='g')plt.title('Histogram of Data')plt.xlabel('Value')plt.ylabel('Frequency')# 绘制正态分布的概率密度函数xmin, xmax = plt.xlim()x = np.linspace(xmin, xmax, 100)p = stats.norm.pdf(x, np.mean(data), np.std(data))plt.plot(x, p, 'k', linewidth=2)plt.show()Comme le montre la figure ci-dessus, si l'histogramme présente approximativement une courbe en forme de cloche et est cohérent avec la distribution normale correspondante. Si les formes de courbe sont similaires, alors les données sont susceptibles d'être distribuées normalement. Bien entendu, la visualisation n’est qu’un jugement préliminaire. Si une détection plus précise est requise, des méthodes statistiques telles que les tests de normalité peuvent être utilisées pour l’analyse.
Méthodes statistiques
5. Test de Shapiro-Wilk
Le test de Shapiro-Wilk est une méthode statistique utilisée pour tester si les données sont conformes à la distribution normale, également connue sous le nom de test W. Lors de l'exécution du test de Shapiro-Wilk, nous nous concentrons généralement sur deux indicateurs principaux :
Statistique W : calculez la statistique W en fonction de la corrélation entre les données observées et la valeur attendue sous la distribution normale, et la plage de valeurs de W entre 0 et 1, lorsque W est proche de 1, cela signifie que les données observées correspondent mieux à la distribution normale. Valeur P : La valeur P indique la probabilité d'observer cette corrélation. Si la valeur P est supérieure au niveau de signification (généralement 0,05), cela indique que les données observées sont susceptibles de provenir d'une distribution normale.- Par conséquent, lorsque la statistique W est proche de 1 et que la valeur P est supérieure à 0,05, nous pouvons conclure que les données observées satisfont à la distribution normale.
- Dans le code suivant, un ensemble de données aléatoires obéissant à la distribution normale est d'abord généré, puis le test de Shapiro-Wilk est effectué pour obtenir la statistique du test et la valeur P. Sur la base de la comparaison entre la valeur P et le niveau de signification, vous pouvez déterminer si les données de l'échantillon proviennent d'une distribution normale.
from scipy import statsimport numpy as np# 生成一组服从正态分布的随机数据data = np.random.normal(0, 1, 100)# 执行Shapiro-Wilk检验stat, p = stats.shapiro(data)print('Shapiro-Wilk Statistic:', stat)print('P-value:', p)# 根据P值判断正态性alpha = 0.05if p > alpha:print('样本数据可能来自正态分布')else:print('样本数据不符合正态分布')
6.KS检验
KS检验(Kolmogorov-Smirnov检验)是一种用于检验数据是否符合特定分布(例如正态分布)的统计方法。它通过计算观测数据与理论分布的累积分布函数(CDF)之间的最大差异来评估它们是否来自同一分布。其基本步骤如下:
- 对两个样本数据进行排序。
- 计算两个样本的经验累积分布函数(ECDF),即计算每个值在样本中的累积百分比。
- 计算两个累积分布函数之间的差异,通常使用KS统计量衡量。
- 根据样本的大小和显著性水平,使用参考表活计算p值判断两个样本是否来自同一分布。
Python中使用KS检验来检验数据是否符合正态分布时,可以使用Scipy库中的kstest函数。下面是一个简单的示例,演示了如何使用Python进行KS检验来检验数据是否符合正态分布。
from scipy import statsimport numpy as np# 生成一组服从正态分布的随机数据data = np.random.normal(0, 1, 100)# 执行KS检验statistic, p_value = stats.kstest(data, 'norm')print('KS Statistic:', statistic)print('P-value:', p_value)# 根据P值判断正态性alpha = 0.05if p_value > alpha:print('样本数据可能来自正态分布')else:print('样本数据不符合正态分布')
7.Anderson-Darling检验
Anderson-Darling检验是一种用于检验数据是否来自特定分布(例如正态分布)的统计方法。它特别强调观察值在分布尾部的差异,因此在检测极端值的偏差方面非常有效
下面的代码使用stats.anderson函数执行Anderson-Darling检验,并获取检验统计量、临界值以及显著性水平。然后通过比较统计量和临界值,可以判断样本数据是否符合正态分布
from scipy import statsimport numpy as np# 生成一组服从正态分布的随机数据data = np.random.normal(0, 1, 100)# 执行Anderson-Darling检验result = stats.anderson(data, dist='norm')print('Anderson-Darling Statistic:', result.statistic)print('Critical Values:', result.critical_values)print('Significance Level:', result.significance_level)# 判断正态性if result.statistic <p style="text-align:center;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/170255826239547.png?x-oss-process=image/resize,p_40" class="lazy" alt="11 méthodes de base pour déterminer la normalité des distributions de données"></p><h4 id="Lilliefors检验">8.Lilliefors检验</h4><p>Lilliefors检验(也被称为Kolmogorov-Smirnov-Lilliefors检验)是一种用于检验数据是否符合正态分布的统计检验方法。它是Kolmogorov-Smirnov检验的一种变体,专门用于小样本情况。与K-S检验不同,Lilliefors检验不需要假定数据的分布类型,而是基于观测数据来评估是否符合正态分布</p><p>在下面的例子中,我们使用lilliefors函数进行Lilliefors检验,并获得了检验统计量和P值。通过将P值与显著性水平进行比较,我们可以判断样本数据是否符合正态分布</p><pre class="brush:php;toolbar:false">import numpy as npfrom statsmodels.stats.diagnostic import lilliefors# 生成一组服从正态分布的随机数据data = np.random.normal(0, 1, 100)# 执行Lilliefors检验statistic, p_value = lilliefors(data)print('Lilliefors Statistic:', statistic)print('P-value:', p_value)# 根据P值判断正态性alpha = 0.05if p_value > alpha:print('样本数据可能来自正态分布')else:print('样本数据不符合正态分布')
9.距离测量Distance Measures
距离测量(Distance measures)是一种有效的测试数据正态性的方法,它提供了更直观的方式来比较观察数据分布与参考分布之间的差异。
下面是一些常见的距离测量方法及其在测试正态性时的应用:
(1) "巴氏距离(Bhattacharyya distance)"的定义是:
- 测量两个分布之间的重叠,通常被解释为两个分布之间的接近程度。
- 选择与观察到的分布具有最小Bhattacharyya距离的参考分布,作为最接近的分布。
(2) 「海林格距离(Hellinger distance)」:
- 用于衡量两个分布之间的相似度,类似于Bhattacharyya距离。
- 与Bhattacharyya距离不同的是,Hellinger距离满足三角不等式,这使得它在一些情况下更为实用。
(3) "KL 散度(KL Divergence)":
- 它本身并不是严格意义上的“距离度量”,但在测试正态性时可以用作衡量信息丢失的指标。
- 选择与观察到的分布具有最小KL散度的参考分布,作为最接近的分布。
运用这些距离测量方法,我们能够比对观测到的分布与多个参考分布之间的差异,进而更好地评估数据的正态性。通过找出与观察到的分布距离最短的参考分布,我们可以更精确地判断数据是否符合正态分布
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!

Explorer le fonctionnement interne des modèles de langue avec Gemma Scope Comprendre les complexités des modèles de langue IA est un défi important. La sortie de Google de Gemma Scope, une boîte à outils complète, offre aux chercheurs un moyen puissant de plonger

Déverrouiller le succès de l'entreprise: un guide pour devenir un analyste de Business Intelligence Imaginez transformer les données brutes en informations exploitables qui stimulent la croissance organisationnelle. C'est le pouvoir d'un analyste de Business Intelligence (BI) - un rôle crucial dans GU

Instruction ALTER TABLE de SQL: Ajout de colonnes dynamiquement à votre base de données Dans la gestion des données, l'adaptabilité de SQL est cruciale. Besoin d'ajuster votre structure de base de données à la volée? L'énoncé de la table alter est votre solution. Ce guide détaille l'ajout de Colu

Introduction Imaginez un bureau animé où deux professionnels collaborent sur un projet critique. L'analyste commercial se concentre sur les objectifs de l'entreprise, l'identification des domaines d'amélioration et la garantie d'alignement stratégique sur les tendances du marché. Simulé

Excel Counting and Analysis: Explication détaillée du nombre et des fonctions de compte Le comptage et l'analyse des données précises sont essentiels dans Excel, en particulier lorsque vous travaillez avec de grands ensembles de données. Excel fournit une variété de fonctions pour y parvenir, les fonctions Count et Count sont des outils clés pour compter le nombre de cellules dans différentes conditions. Bien que les deux fonctions soient utilisées pour compter les cellules, leurs cibles de conception sont ciblées sur différents types de données. Faisons des détails spécifiques du comptage et des fonctions de coude, mettons en évidence leurs caractéristiques et différences uniques et apprenez à les appliquer dans l'analyse des données. Aperçu des points clés Comprendre le nombre et le cou

La révolution de l'IA de Google Chrome: une expérience de navigation personnalisée et efficace L'intelligence artificielle (IA) transforme rapidement notre vie quotidienne, et Google Chrome mène la charge dans l'arène de navigation Web. Cet article explore les exciti

Réinventuation d'impact: le quadruple bas Pendant trop longtemps, la conversation a été dominée par une vision étroite de l’impact de l’IA, principalement axée sur le résultat du profit. Cependant, une approche plus holistique reconnaît l'interconnexion de BU

Les choses évoluent régulièrement vers ce point. L'investissement affluant dans les prestataires de services quantiques et les startups montre que l'industrie comprend son importance. Et un nombre croissant de cas d'utilisation réels émergent pour démontrer sa valeur


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Version Mac de WebStorm
Outils de développement JavaScript utiles

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP