假设我有一个用numpy数组表示的时间序列,每3秒,我得到一个数据点。它看起来像这样(但是有更多的数据点):
z = np.array([1, 2, 1, 2.2, 3, 4.4, 1, 1.2, 2, 3, 2.1, 1.2, 5, 0.5])
我想找到一个阈值,平均每y
秒一个数据点就会超过这个阈值(x
)。你知道吗
从这个意义上说,也许我的问题更容易理解:假设我收集了一些关于每3秒钟有多少蚂蚁离开蚁丘的数据。使用这些数据,我想创建一个阈值(x
),这样在将来,如果一次离开的蚂蚁数量超过x
,我的蜂鸣器就会关闭。现在这是关键部分-我希望我的蜂鸣器大约每4秒钟响一次。我想使用Python来计算基于我已经收集的一系列数据,应该给x
多少时间。你知道吗
在Python中有这样做的方法吗?你知道吗
我认为首先从统计学的角度来考虑这个问题是最容易的。我想你真正想说的是,你想计算
100*(1-m/nth)
百分位数,也就是数值低于1-m/nth
的时间,其中m
是你的采样周期,n
是你想要的间隔。在您的示例中,它将是100*(1-3/4th)
百分位或25th
百分位。也就是说,您需要超过75%
时间的值。你知道吗因此,要对数据进行计算,应该使用
scipy.stats.scoreatpercentile
。因此,对于您的情况,您可以执行以下操作:当然,如果你有很多价值观,这个估计会更好。你知道吗
编辑:最初我将百分位数向后。它应该是
1-m/n
,但我最初只有m/n
。你知道吗假设触发器的1秒分辨率正常。。。你知道吗
将每个采样点除以其周期(以秒为单位),然后创建一个1秒数据数组-假设线性分布(?)对于每个样品。你知道吗
将数据重塑为四个秒周期(有损)
求每四秒周期的和,并求这些间隔的最小值
这为不重叠的4秒块提供了一个总阈值-但是它只为
z
生成6个触发器,表示42秒的数据。你知道吗使用重叠的、滚动的窗口来寻找每四秒窗口总和的最小值(无损)
这将为
z
生成8个触发器。你知道吗相关问题 更多 >
编程相关推荐