# 无需机器学习的数据分析统计方法
统计工具能让你快速评估数据,而无需复杂的机器学习模型。加权平均考虑了观测值的权重,标准差和方差揭示了数据的异质性,而泊松分布和二项分布则用于预测稀有事件。这些使用 Python、numpy 和 pandas 的方法,非常适合分析业务指标的中高级开发者。
加权平均:校正异常值扭曲
普通平均容易受异常值影响。以薪资 $10(总监)和 $0.10(清洁工,权重 10)为例,平均值为 $5.05,这并不反映实际情况。加权平均解决了这个问题:
import numpy as np
salary = np.array([10.0, 0.10])
weight = np.array([1, 10])
result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")
输出:$1.00。应用场景:
- 按销售渠道分析收入,同时考虑流量。
- 评估事件频率不同的指标。
- 按权重对客户分段分组。
标准差和方差:评估稳定性
标准差衡量数据围绕均值的离散程度。以薪资 [500, 400, 450, 550, 5000] 为例:
import pandas as pd
import numpy as np
data = {
"Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
"Salary": [500, 400, 450, 550, 5000]
}
df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))
print(f"Standard deviation: {s:.2f}")
结果:2024.41 —— 强烈的异常值指标。方差(偏差的平方)用于比较数据集:
import numpy as np
sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)
print("Variance:", dispersion)
按天划分的离散度(工作日 vs 周末)需要数据分段。
皮尔逊相关:线性关系而非因果
皮尔逊相关系数评估线性依赖关系。公式:
import numpy as np
X = np.array([1, 2, 3, 4, 5]) # study hours
Y = np.array([50, 55, 60, 65, 70]) # test scores
x_mean = np.mean(X)
y_mean = np.mean(Y)
corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))
res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")
r=1.00 —— 完美相关。r² 表示解释变异的比例(在回归中为决定系数)。记住:相关不等于因果(例如:打高尔夫与老年人死亡率)。
卡方检验:检验期望与实际
卡方比较观测值 (O) 和期望值 (E):
import numpy as np
O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14]) # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # expected
xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")
条件:长度相同,E > 0。值越大,差异越大。用于验证预测。
泊松分布:建模稀有事件
对于具有恒定强度 λ(每间隔平均值)的事件。k 个事件的概率:
import math
λ = 3 # srednesutochnoe count requests
k = 5
prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")
结果:0.1008。假设:独立性、恒定概率、一次一个事件。应用:
- 预测支持呼叫。
- 估算网站订单。
- 分析安全事件。
- 金融风险。
二项分布:试验中的成功次数
对于 n 次试验,每次成功概率 p。k 次成功的概率:
import math
n = 100
k = 70
p = 0.7
b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")
示例:邮件打开率、A/B 测试、质量控制。
指数分布:事件间隔时间
在 λ 下,事件在时间 x 后发生的概率:
import math
lambd = 4 # vyzovov/hour
x = 1 / 3 # 20 min
prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")
用于队列、设备停机时间。
关键要点
- 加权平均和偏差可在无需机器学习的情况下检测扭曲。
- 相关评估关系,r² —— 解释变异。
- 泊松和二项 —— 用于业务事件预测。
- 卡方用最小数据验证假设。
- 所有方法可用 numpy/pandas 实现,无需 GPU。
— Editorial Team
暂无评论。