问题描述
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 (将#修改为@)