Matlab与python计算标准差的不同之处

        学过概率论的应该都知道,现实世界得到的分布往往是抽样分布,而抽样分布标准差的无偏估计量是这样的:

S^{2}=\frac{\sum_{i}^{N}(X_{i}-\mu ))}{N-1}

在matlab官网当中这样解释:

S = std(A) 返回 A 沿大小不等于 1 的第一个数组维度的元素的标准差。默认情况下,标准差按 N-1 实现归一化,其中 N 是观测值数量。

一个例子:

A = [4 -5 1; 2 3 5; -9 1 7];
S = std(A)
S = 1×3

    7.0000    4.1633    3.0551

确实是按上述公式来的,但是numpy当中却不是这样计算的:

The standard deviation is the square root of the average of the squared deviations from the mean, i.e., std = sqrt(mean(x)), where x = abs(a - a.mean())**2.

什么意思呢?相当于上面公式中分母为N了,那就不是无偏估计了,我对这一点很疑惑,numpy为什么这样写,请大佬解答。

代码如下:

import numpy as np

a=np.array(a)
a.std(axis=0)

out:array([5.715476 , 3.399346 , 2.4944384], dtype=float32)

至于pytorch,我也查了相关文档,发现torch用的也是和matlab一样的方法来计算标准差。

官方文档在这里

import torch

a=torch.tensor([[4, -5, 1],[2, 3, 5],[-9, 1, 7]],dtype=torch.float32)
a.std(dim=0)

out:tensor([7.0000, 4.1633, 3.0551])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值