【发布时间】:2020-12-24 01:12:33
【问题描述】:
我正在努力学习 Python,我也在学习统计,所以我想看看我是否可以制作自己的函数来获得 mean、variance最后是数据集的标准差。
因此,我使用 map() 和 lambda 创建了方差函数,但是当我将它与在另一个屏幕上运行的 R 进行比较时,我得到了错误的结果。我发现如果我在 python 中使用numpy 库,我会得到与我在自制函数中得到的完全相同的值。
Python
females = [2474,2547,2830,3219,3429,3448,3677,3872,4001,4116]
males = [2844,2863,2963,3239,3379,3449,3582,3926,4151,4356]
def std_deviance(data):
mean = sum(data)/len(data)
variance = sum(list(map(lambda x: (x-mean)**2,data)))/len(data)
return variance**(1/2)
print('Females:\t', std_deviance(females))
# Females: 557.1610269930948
print('Males:\t\t',std_deviance(males))
# Males: 504.81913592889873
R
females <- c(2474,2574,2830,3219,3429,3448,3677,3872,4001,4116)
males <- c(2844,2863,2963,3239,3379,3449,3582,3926,4151,4356)
sd(females)
[1] 583.1874
sd(males)
[1] 532.1261
Python 与 numpy
>from numpy import std
females = [2474,2547,2830,3219,3429,3448,3677,3872,4001,4116]
males = [2844,2863,2963,3239,3379,3449,3582,3926,4151,4356]
print('Females:\t', std(females))
# Females: 557.1610269930948
print('Males:\t\t',std(males))
# Males: 504.81913592889873
【问题讨论】:
-
请提供预期的minimal, reproducible example。显示中间结果与您的预期不同的地方。
-
你需要的搜索词是正确的拼写,“variance”,标准差的平方。
-
最重要的是,您为什么要编写自己的公式而不是使用各种软件包中现成的公式?
-
@Prune 1. 我也会提供一些数据。对不起。 2. 我现在将编辑问题 3. 因为我想学习 python 而不是统计 :)
-
@Prune 请再次检查我的代码,并投票重新打开,或者让我知道如何澄清。
标签: python r statistics