如果这是一个愚蠢的问题,我很抱歉。我正在尝试做一些我认为很简单的事情。创建一个由给定均值和std_dev的上限和下限限定的值范围:
我使用的是scipy.stats.truncnorm
r = truncnorm.rvs(a, b, loc=0, scale=1, size=1, random_state=None)
我认为我应用了错误的函数,因为我完全不知道如何解释从我提供的输入中获得的值
a (lower bound) = 20.9
b (upper bound) = 46.5
x_avg (mean) = 29.8
x_std (std_dev) = 4.5
size (# of values) = 20
r = truncnorm.rvs(a, b, x_avg, x_std, size)
array([123.98250345, 124.32804805, 123.98434454, 123.86675932,
124.2113707 , 123.85307689, 124.06329418, 124.32192561,
124.04215402, 124.00524577, 124.00042372, 123.87499012,
124.13146939, 123.94714796, 124.13634181, 123.9475407 ,
124.14616414, 123.85190967, 124.29072561, 124.02151428])
我会想象我会得到20个值挤在我提供的平均值周围,但相反,他们都挤在123周围...请帮助
1条答案
按热度按时间8tntrjer1#
参数
a
和b
不是边界。因此,遵循docs符号:
给予
文档可能会更清楚一点--你必须转到
truncnorm
的文档字符串,才能发现a
和b
本质上是Z值,用正态分布术语来说。