将数据缩放为对数正态。我的做法对吗?

Scale Data to log-normal. Is my approach right?

我有一个一维数组,其中数据在 1 到 500 之间。 数据的分布看起来像对数正态分布。

我想要的是将数组重新采样到 log(data)

我不确定要使用哪个函数:

numpy.log or numpy.log1p

我的 rescale 函数现在看起来像这样,但我不确定它是否正确:

def ScaleData(dataset):
    datas = []
    for x in np.nditer(dataset):
        a = np.log(x)
        datas.append(a)
    return np.array(datas)

测试:

38, 48, 39, 83, 64, 57
goes to:
3.63758616,  3.87120101,  3.66356165,  4.41884061, 4.15888308,  4.04305127

对吗?

  • 如果您想使数据符合对数正态分布:您应该使用 scipy.stats.lognorm.fit(listofdata) 并使用 Kalmogorov Smirnov 检验检查拟合质量:scipy.stats.kstest
  • 如果你想转换你的数据 np.log(dataset) 应该足够了。

最佳