为何未缩放时reciprocal变换未达Tukey Bulging Rule的右偏校正效果
Tukey幂阶梯法则验证实验记录
实验设计说明
本次实验围绕Tukey's Bulging Rule(又称幂阶梯法则)展开,核心验证第四象限的应用逻辑:即通过倒数(reciprocal)变换将右偏分布调整为偏度更轻的右偏、甚至转向左偏的形态。
- 实验明确排除对数变换的干扰,已确认log变换可实现散点关系线性化,但本次不涉及该方向的观测,仅聚焦倒数变换对分布偏度的调整作用
- 实验全程在Python 3.7环境下完成,所有依赖导入语句统一放在文末代码区块
实验流程与观测结果
实验过程中观测到,仅当对数据执行缩放处理时,才能复现规则描述的变换效果:即将右偏分布调整为偏度更轻的右偏形态,或将左偏分布调整为偏度更轻的左偏形态。
- 原始数据生成
- 取自变量序列
x = np.arange(0.01,100,.1),对应生成因变量y = np.exp(x) - 经直方图、折线图验证,生成的y序列为典型右偏分布
- 取自变量序列
- 无缩放直接变换操作
- 对原始y序列直接应用倒数变换,得到
y_prime = 1/y - 观测结果:变换确实改变了数据取值,但分布形态没有出现法则描述的“右偏程度降低”的预期变化
- 对原始y序列直接应用倒数变换,得到
- 缩放后变换操作
- 先对原始y序列应用Min-max缩放,得到范围在0-1之间的
y_scaled,再对缩放后的数据应用倒数变换,得到y_scaled_hat = 1/y_scaled - 观测结果:变换后分布从原典型右偏调整为右偏程度显著降低,部分区间呈现左偏特征,完全符合幂阶梯法则的预期效果
- 先对原始y序列应用Min-max缩放,得到范围在0-1之间的
核心待解问题
为什么同样应用y'=1/y的倒数变换,不对原始数据做Min-max缩放时无法出现符合法则预期的形态调整,完成Min-max缩放后就可以复现规则描述的变换效果?
实验参考代码
- 参考代码1(依赖导入):
from scipy.stats import skewnorm import matplotlib.pyplot as plt import numpy as np from sklearn import preprocessing import pandas as pd from scipy import stats
- 参考代码2(原始数据绘图):
_=plt.hist(y,bins=50,density=True) _=plt.plot(y)
- 参考代码3(无缩放倒数变换绘图):
_= plt.plot(y_prime) _=plt.hist(y_prime,bins=50)
- 参考代码4(Min-max缩放流程与缩放后变换绘图):
def minmaxscale(data): data_scaled=data.reshape(-1,1) min_max_scaler = preprocessing.MinMaxScaler() data_scaled = min_max_scaler.fit_transform(data_scaled) data_scaled += 0.001 return data_scaled y_scaled = minmaxscale(y) y_scaled_hat = 1/y_scaled _= plt.plot(y_scaled_hat) _=plt.hist(y_scaled_hat,bins=50)
内容的提问来源于stack exchange,提问作者watchtower
相关产品推荐
相关产品推荐

