以文档中的以下示例为例:
rng = np.random.default_rng(seed=3576)
windspeed = 8 * rng.random(500)
boatspeed = .3 * windspeed**.5 + .2 * rng.random(500)
bin_means, bin_edges, binnumber = stats.binned_statistic(windspeed,
boatspeed, statistic='median', bins=[1,2,3,4,5,6,7])
bin_means中的第一个值(实际上在本例中计算中值)是0.48067334,这是数组boatspeed中的第90个值。
我真的很困惑,这个方法是如何把bin数组Map到值向量上的(在这个例子中是boatspeed)。第90个条目是如何属于一个从“1”开始到“2”结束的bin的?有人能给予一个直观的例子或解释吗?
我也不清楚需要风速矢量做什么。根据文档,这是“一系列要分组的值”,但统计数据是在第二个矢量船速上计算的,对我来说,这意味着我们实际上是在分组船速,而风速似乎并没有被使用/需要。
干杯干杯干杯
1条答案
按热度按时间pod7payv1#
scipy.stats.binned_statistic()
文档中的示例分析变量 Y(船速),通过将确定性函数 f 应用于随机变量 X 而产生(风速)通过 Y=f(X).故汇总统计boatspeed
的(例如中位数)取决于windspeed
。反过来,我们手头有 * 条件 * 中位数,而不是(无条件)中位数。但是,您调用了无条件中值,因为
相比之下,
binned_statistic()
计算boatspeed
的条件中值,假定相应的windspeed
值出现在区间[1,2)
中。更一般地,每个条件中值对应于
bin_means
中的一个条目,因为直观地说,我们得到了这个问题的答案:假设风速为
1
(即1<= windspeed<2
),那么,对于此类风速观测,相应的中值船速是多少?此外,
binnumber
只提供了一个数组,其中每个索引表示相应数据点在bin中的隶属关系。表示前一个
windspeed
bin的最大值严格小于当前bin的最小值。这是我们对数据进行正确装仓所期望的。此外,我们可以通过以下方式重现上面的示例: