我需要使用 Scipy 找出属于 1 个特定点(即 X 的 1 个值)的 Zscore。
以下是手动代码:
data = [25, 37, 15, 36, 92, 28, 33, 40]
mean = sum(data)/len(data)
summation = 0
for i in range(0, len(data)):
summation += (data[i]-mean)**2
std = ((1/len(data))*summation))**(1/2)
Z = (x-mean)/std
接下来,当我尝试使用 Scipy 执行相同操作时:
Z = stats.zscore(data)
我得到输出:
[-0.61219538 -0.05775428 -1.07422964 -0.10395771 2.48343411 -0.47358511
-0.24256798 0.08085599]
可能是因为我只传递了一个参数,也就是数据本身。如何获取只有一个 X 值的 Z 分数?
这个解决方案可能适合你。这个解决方案可能比其他方案更好。
您可能也喜欢这种方法(scipy.stats.zscore):
输出:
script.stats.zscore 将返回一个 array_like 对象(在本例中为 ndarray)。
然后,您可以在源列表中搜索您感兴趣的值的索引,并使用该索引从 ndarray 中提取相关数据。
下面实现了计算 zscores 的“手动”和 scipy 技术,并从一组精心挑选的值中选择值来获得它们的 zscores:
输出: