如何解决R和Python中的标准差不同
我正在尝试学习Python,同时也在学习统计信息,所以我想看看我是否可以使自己的函数获得平均值,方差最后是数据集的标准偏差。
因此,我使用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,4116)
males <- c(2844,4356)
sd(females)
[1] 583.1874
sd(males)
[1] 532.1261
带有numpy的Python
from numpy import std
females = [2474,4356]
print('Females:\t',std(females))
# Females: 557.1610269930948
print('Males:\t\t',std(males))
# Males: 504.81913592889873
解决方法
您犯了印刷错误。 (在您的Python示例中,females
向量的第二个元素是2547,在您的R示例中,向量的第二个元素是2574。)更正后,这个问题就是Output values differ between R and Python?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。