python代码为给定参数的截断正态分布生成随机样本

问题描述

python代码为给定参数min = 100,max = 1000,mean = 350,标准偏差= 200,偏度= -0.3的截断正态偏斜分布生成随机样本

我能够使用校正器函数生成与均值,标准差,上限和下限匹配的分布,但是我无法将偏斜参数传递给函数。下面是我正在使用的代码

# Creating Function to pass given mu,sigma,lower & upper bound values
def truncated_mean_std(mu,lower,upper):
    alpha = (lower - mu)/sigma
    beta = (upper - mu)/sigma
    d_pdf = (stats.norm.pdf(alpha) - stats.norm.pdf(beta))
    wd_pdf = (alpha * stats.norm.pdf(alpha) - beta * stats.norm.pdf(beta))
    d_cdf = stats.norm.cdf(beta) - stats.norm.cdf(alpha)
    mu_trunc = mu + sigma * (d_pdf / d_cdf)
    var_trunc = sigma**2 * (1 + wd_pdf / d_cdf - (d_pdf/d_cdf)**2)
    std_trunc = var_trunc**0.5
    return mu_trunc,std_trunc
# Creating function to return sample,mu,lower & upper bound values
def trunc_samples(mu,upper,num_samples=1000):
    random.seed(123)
    n = stats.truncnorm((lower - mu) / sigma,(upper - mu) / sigma,loc=mu,scale=sigma)
    samples = n.rvs(num_samples)
    return samples
# Creating function to correct the sample mu & sigma values to match the predefined values
def corrector(mu,upper):
    target = np.array([mu,sigma])
    result = scipy.optimize.minimize(
        lambda x: ((target - truncated_mean_std(x[0],x[1],upper))**2).sum(),x0=[mu,sigma])
    return result.x

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)