本文是《通信运维AI实战》系列的第11篇,每篇都有代码、关键代码分析、模拟的数据集、可视化结果及讲解。供您和各位通信同行老师参考。
【通信AI实战001】告别"凭感觉"优化!用Python皮尔逊系数揪出5G掉话真凶
【通信AI实战002】告别人工巡检!用Python箱线图揪出5G异常基站
【通信AI实战003】告别"一刀切"!用Python聚类分析智能分群5G基站
【通信AI实战004】告别"被动响应"!用Python时间序列预测5G基站KPI趋势
【通信AI实战005】告别"凭经验估算"!用Python多元回归预测5G基站吞吐量
【通信AI实战006】告别"盲目决策"!用Python假设检验验证5G优化效果
【通信AI实战007】告别"数据孤岛"!用Python合并多源KPI数据
【通信AI实战008】告别"脏数据"!用Python清洗百万级话单
【通信AI实战009】告别"静态报表"!用Python生成动态KPI仪表板
【通信AI实战010】告别"手动操作"!用Python自动化生成每日KPI报告
注意:数据非现网数据,Python模拟生成,仅供学习和参考。
文章标签:#正态分布检验 #Shapiro-Wilk检验 #Q-Q图 #数据分布 #异常检测
摘要:为什么有些KPI分析结果不准确?可能数据根本不符合正态分布!本文用Python正态分布检验识别数据分布特征,涵盖Shapiro-Wilk检验、K-S检验、Q-Q图等方法,检测右偏、双峰等非正态分布,避免用错统计方法,实现从"盲目分析"到"科学建模"的转变。
小张是某地市的5G网络优化工程师,最近遇到了一个棘手问题:
问题表现:
传统分析方式: 小张用Excel计算了这些基站的均值、标准差:
发现问题:
真相揭晓: 经过正态分布检验发现:
业务意义:
正态分布(Normal Distribution):也称高斯分布,是最重要的概率分布。
特征:
通信场景中的正态分布:
原因1:统计检验的前提条件
很多统计检验要求数据符合正态分布:
如果数据不符合正态分布:
原因2:发现隐藏的问题
正态分布检验可以发现:
方法1:Shapiro-Wilk检验(推荐)
适用:小样本(n < 50),但对大样本也有效
原假设H₀:数据来自正态分布
判断标准:
方法2:Kolmogorov-Smirnov检验(K-S检验)
适用:大样本(n ≥ 50)
原理:比较数据的累积分布与理论正态分布的差异
判断标准:同Shapiro-Wilk检验
方法3:D'Agostino's正态性检验
适用:大样本
原理:基于偏度和峰度检验
判断标准:同上
方法4:Q-Q图(可视化检验)
原理:绘制理论分位数 vs 实际分位数的散点图
判断标准:
方法5:Anderson-Darling检验
适用:更灵敏的检验
优点:给出多个显著性水平的临界值
偏度(Skewness):衡量分布的对称性
峰度(Kurtosis):衡量分布的尖峭程度
需要安装以下Python库:
import pandas as pd # 数据处理import numpy as np # 数值计算import matplotlib.pyplot as plt # 绘图import seaborn as sns # 统计绘图from scipy import stats # 统计检验from scipy.stats import shapiro, kstest, normaltest, anderson # 正态性检验from scipy.stats import gaussian_kde # 核密度估计from sklearn.mixture import GaussianMixture # 高斯混合模型import os # 文件操作场景1:正态分布 - 吞吐量
场景2:右偏分布 - 掉话率
场景3:双峰分布 - RSRP
场景4:均匀分布 - 用户数

使用Python生成200个基站的吞吐量数据:
np.random.seed(42)throughput = np.random.normal(500, 80, 200)Shapiro-Wilk检验:
统计量: 0.9956p值: 0.828990结论:
分布特征:
可以使用以下统计方法:
结论: 吞吐量是典型的正态分布KPI,可以放心使用参数统计方法。

图表解读:
这张图用4个子图展示了4种不同类型的KPI分布。
左上图 - 吞吐量(正态分布):
坐标轴说明:
图表元素:
关键观察:
文本框信息:
业务意义: 吞吐量是正态分布,可以使用t检验、ANOVA等参数统计方法。
右上图 - 掉话率(右偏分布):
坐标轴说明:
关键观察:
文本框信息:
业务意义: 掉话率右偏分布:
左下图 - RSRP(双峰分布):
坐标轴说明:
关键观察:
文本框信息:
业务意义: RSRP双峰分布:
右下图 - 用户数(均匀分布):
坐标轴说明:
关键观察:
文本框信息:
业务意义: 用户数均匀分布:

图表解读:
这张图用4个子图展示了4个KPI的Q-Q图(分位数-分位数图)。
Q-Q图原理:
判断标准:
左上图 - 吞吐量Q-Q图:
关键观察:
蓝色带状区域:
结论: 吞吐量完全符合正态分布。
右上图 - 掉话率Q-Q图:
关键观察:
右偏分布的Q-Q图特征:
结论: 掉话率严重右偏,不符合正态分布。
左下图 - RSRP Q-Q图:
关键观察:
双峰分布的Q-Q图特征:
结论: RSRP双峰分布,需要分群分析。
右下图 - 用户数Q-Q图:
关键观察:
均匀分布的Q-Q图特征:
结论: 用户数均匀分布,不符合正态分布。

图表解读:
这张图用4个子图深入分析掉话率的右偏分布特征。
左上图 - 实际 vs 理论分布对比:
关键观察:
右偏分布的特征:
统计值:
右上图 - 箱线图:
图表元素:
关键观察:
左下图 - Q-Q图:
关键观察:
离群点的含义:
右下图 - 检验结果汇总:
Shapiro-Wilk检验:
统计量: 0.5288p值: < 0.000001结论: 极显著偏离正态分布分布特征:
均值: 1.5%标准差: 1.8%偏度: 6.3859 -> 强偏态分布业务解读:

图表解读:
这张图用4个子图深入分析RSRP的双峰分布特征。
左上图 - RSRP分布:双峰特征:
关键观察:
高斯混合模型(GMM)拟合:
右上图 - RSRP分组对比:
GMM聚类结果:
箱线图对比:
业务意义:
左下图 - Q-Q图(S形曲线):
关键观察:
说明文字: " S形曲线 -> 双峰分布特征"
右下图 - 检验结果和业务解读:
Shapiro-Wilk检验:
统计量: 0.9340p值: < 0.000001结论: 显著偏离正态分布GMM聚类结果:
群体1(好基站): 均值: -75 dBm 数量: 80个群体2(差基站): 均值: -95 dBm 数量: 120个业务解读:
影响1:统计检验失效
问题:为什么t检验结果不稳定?
答案:掉话率不符合正态分布,不能使用t检验
后果:
解决方案:使用非参数检验
影响2:均值误导
问题:为什么平均掉话率1.5%不能代表大多数基站?
答案:掉话率右偏,均值被高值拉高
举例:
解决方案:
影响3:掩盖真相
问题:为什么整体指标看起来正常,但用户投诉多?
答案:少数"隐形杀手"基站被整体均值掩盖
场景:
解决方案:
方案1:数据转换
对数转换(适用于右偏数据):
# 对掉话率进行对数转换drop_rate_transformed = np.log(drop_rate + 1)# 再次检验正态性shapiro_stat, shapiro_p = shapiro(drop_rate_transformed)效果:
方案2:使用非参数检验
方案3:分群分析
对于双峰分布:
from sklearn.mixture import GaussianMixture# 拟合高斯混合模型gmm = GaussianMixture(n_components=2)gmm.fit(rsrp.reshape(-1, 1))# 预测每个基站的群体labels = gmm.predict(rsrp.reshape(-1, 1))# 分别分析两个群体group1 = rsrp[labels == 0]group2 = rsrp[labels == 1]方案4:使用稳健统计量
1. 分析前的正态性检验
每次进行统计分析前:
2. 根据检验结果选择方法
3. 报告时说明分布特征
在分析报告中:
# 安装Python依赖pip install pandas numpy matplotlib seaborn scikit-learn scipy openpyxl# 进入文章目录cd"011-用Python正态分布检验识别5G基站隐形杀手"# 运行代码生成数据和图表python code.py运行后会生成以下文件:
011_5G_KPI_Distribution_Data.xlsx - 模拟的KPI数据images/011_distribution_test_overview.png - 综合分布检验图images/011_qq_plot_analysis.png - Q-Q图分析images/011_drop_rate_detailed_analysis.png - 掉话率详细分析images/011_rsrp_bimodal_analysis.png - RSRP双峰分布分析✅ 正态分布检验是统计分析的第一步,避免用错方法
✅ Shapiro-Wilk检验是最常用的正态性检验,p < 0.05说明不符合正态分布
✅ Q-Q图是可视化检验,点偏离参考线说明不符合正态分布
✅ 偏度 > 0.5说明右偏,偏度 < -0.5说明左偏
✅ 双峰分布暗示存在多个子群体,需要分群分析
✅ 非正态数据应使用非参数检验或数据转换
✅ 右偏数据使用中位数比均值更稳健
问题1:如果样本量很大(> 5000),Shapiro-Wilk检验p值总是很小怎么办?答案:大样本时,Shapiro-Wilk检验过于灵敏,可以主要看Q-Q图和偏度、峰度。
问题2:数据轻微偏态(偏度0.3-0.5),能用t检验吗?答案:t检验对轻微偏离正态具有一定的稳健性,可以使用,但最好用非参数检验验证。
问题3:如何让数据符合正态分布?答案:可以尝试数据转换(对数、平方根、Box-Cox),或使用非参数检验。
如需本文素材(完整代码、excel格式的模拟数据集、生成的可视化图片等),欢迎加v:gprshome201101联系作者获取,我打包发给您。
作者:爱卫生,微信:gprshome201101,20年移动通信核心网老兵。主打5GC、IMS与AI在通信行业中的应用。欢迎加v交流。
【免责声明】本文代码仅用于学习交流,实际应用中请结合现网数据和环境进行适配。数据分析结果仅供参考,优化决策请遵循运营商标准流程。