产生大于3的峰度的随机正态分布

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

正态分布的峰度为3。随着分布中离群值的增加,尾巴变成“脂肪”,峰度增加到3以上。

如何在峰度大于3(最好是5-7)的两个数字之间生成随机正态分布?

进口

import numpy as np
import scipy.stats import kurtosis

0.01-0.10之间的随机制服

# Random Uniform Distribution
runif = np.random.uniform(0.01, 0.10, 10000)

kurtosis(runif, fisher=False)

1.8124891901330156

enter image description here

随机法线介于0.01-0.10之间

lower = 0.01
upper = 0.10
mu = (upper)/2
sigma = 0.01
N = 10000
retstats = scipy.stats.truncnorm.rvs((lower-mu)/sigma,(upper-mu)/sigma,loc=mu,scale=sigma,size=N)

mean = .05
stdev = .01  # 99.73% chance the sample will fall in your desired range

values = [gauss(mean, stdev) for _ in range(10000)]

kurtosis(values, fisher=False)

3.015004351756201

enter image description here

随机正态,尾巴在0.01-0.10之间

???

python numpy statistics normal-distribution
2个回答
1
投票
由于峰度不是正态分布函数的参数之一,因此您必须使用另一种方法来生成近似正态分布的函数。它变得复杂。看看这个:https://stats.stackexchange.com/questions/43482/transformation-to-increase-kurtosis-and-skewness-of-normal-r-v

上面的链接给出了使用R(叹息)代码的示例,但我认为它很简单,可以让您用Python编写等效代码。这是我所知道的几个扩展(即功能分层)之一,可以使您实现这一目标。

不幸的是,我知道没有简单的解决方案。


1
投票
正态分布的峰度始终为3。均匀分布的峰度为9/5。长尾分布的峰度高于3。例如,拉普拉斯的峰度为6。[请注意,通常这些分布是根据过量峰度定义的,该峰度等于实际峰度减去3。http://mathworld.wolfram.com/KurtosisExcess.html

但是,通过剪掉尾巴,可以减少峰度。为了生成范围有限且峰度较高的分布,您需要确保切口对尾部的影响最小。通俗地说,您需要一个非常尖刻的分发。

import numpy as np from scipy.stats import kurtosis min_range = 0.01 max_range = 0.10 midpoint = (max_range + min_range)/2 samples = 10000 def filter_tails(x): return x[(x >= min_range) & (x <= max_range)] runif = np.random.uniform(min_range, max_range, samples) value = kurtosis(filter_tails(runif), fisher=False) print(f"uniform kurtosis = {value}") sigma = 0.01 runif = np.random.normal(midpoint, sigma, samples) value = kurtosis(filter_tails(runif), fisher=False) print(f"gaussian kurtosis = {value}") exponential_decay = 0.001 runif = np.random.laplace(midpoint, exponential_decay, samples) value = kurtosis(filter_tails(runif), fisher=False) print(f"laplace kurtosis = {value}")

运行脚本,我得到:

uniform kurtosis = 1.8011863970680828 gaussian kurtosis = 3.0335178694177785 laplace kurtosis = 5.76290423111418

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