根据现有数据生成随机数据

问题描述 投票:2回答:1

python中是否有一种方法可以根据现有数据的分布来生成随机数据?

以下是我的数据集的统计参数:

Data
count   209.000000
mean    1.280144
std     0.374602
min     0.880000
25%     1.060000
50%     1.150000
75%     1.400000
max     4.140000

由于没有正态分布,因此无法使用np.random.normal来进行。有任何想法吗?

Distribution

谢谢。

编辑:正在执行boxcox->创建随机正常数据->反向boxcox:

from scipy.stats import boxcox
from scipy.special import inv_boxcox

y,fitted_lambda= boxcox(data['y'],lmbda=None)
sns.distplot(y)

after boxcox

mu, sigma = 0.159053, 0.138988 # mean and standard deviation
s = np.random.normal(mu, sigma, 2153)
y = inv_boxcox(s,fitted_lambda)
where_are_NaNs = np.isnan(y)
y[where_are_NaNs] = np.mean(y)
sns.distplot(y)

ValueError:无法将float NaN转换为整数

错误说是浮动NaN,但是用均值替换NaN后y不包含任何NaN。

python random statistics normal-distribution weibull
1个回答
0
投票

通常,现实世界中的数据并不像正态分布或Weibull分布那样完全遵循“精细”分布。

与机器学习类似,从数据点分布中采样通常有两个步骤:

  • Fit到数据的数据模型。

  • 然后,预测在随机性的帮助下,基于该模型的新数据点。

有几种方法可以估计数据分布并从该估计中抽样:

  • 内核密度估计。
  • 高斯混合模型。
  • 直方图。
  • 回归模型。
  • 其他机器学习模型。

此外,诸如最大似然估计]之类的方法可以将已知分布(例如正态分布)拟合到数据,但是估计的分布通常比内核密度估计或其他机器学习模型更粗糙。

另请参见我的“ Random Numbers from an Arbitrary Distribution”部分。

© www.soinside.com 2019 - 2024. All rights reserved.