擅长:python、mysql、java
<p>我认为首先从统计学的角度来考虑这个问题是最容易的。我想你真正想说的是,你想计算<code>100*(1-m/nth)</code>百分位数,也就是数值低于<code>1-m/nth</code>的时间,其中<code>m</code>是你的采样周期,<code>n</code>是你想要的间隔。在您的示例中,它将是<code>100*(1-3/4th)</code>百分位或<code>25th</code>百分位。也就是说,您需要超过<code>75%</code>时间的值。你知道吗</p>
<p>因此,要对数据进行计算,应该使用<code>scipy.stats.scoreatpercentile</code>。因此,对于您的情况,您可以执行以下操作:</p>
<pre><code>>>> z = np.array([1, 2, 1, 2.2, 3, 4.4, 1, 1.2, 2, 3, 2.1, 1.2, 5, 0.5])
>>> m = 3.
>>> n = 4.
>>> x = scipy.stats.scoreatpercentile(z, 100*(1-m/n))
>>> print(x)
1.05
>>> print((z>x).sum()/len(z)) # test, should be about 0.75
0.714285714286
</code></pre>
<p>当然,如果你有很多价值观,这个估计会更好。你知道吗</p>
<p><strong>编辑</strong>:最初我将百分位数向后。它应该是<code>1-m/n</code>,但我最初只有<code>m/n</code>。你知道吗</p>