计算机求标准差这事儿,实际上跟咱们抓手心里头那点波动挺像的。别整那些虚头巴脑的“起初、其次、最终”,直接摆个事实:标准差就是看数据散不散。散得越开,值儿就越大;专就在那儿蹦跶,值儿就越小。咱们手头手头那组数据,就是用来打架的选手。 要是数据特别规整划一,比如全是 1,要么全是 10,那就算不出个头尾,反正就像个铁盒子似的,没得抖。
这时候方差直接等于零,标准差也是零。
这说明啥?说明所有人都信你,要么大家都跟你站队。
反之,要是数据是 2、3、4、5,慌不慌?这就没法说了,哪位也不知道那个 2 跟 10 比哪位更了得,哪位跟哪位更近。
这时候方差就是个大数字,标准差也是个大数字,数值越大,说明这组数据越没底,越让人抓狂。 故此,别在那套复杂的数学公式里绕弯子。咱们就盯着方差看,方差是平均数的平方,也就是数据跟平均值距离的平方和的平均。算出来之后,再开根号,这就成了标准差。好办点说,方差是个平方数,标准差就是个数,单位跟原数据一样,撇脱比较。
比如原数据是 100,标准差是 10,那原数据变 120,标准差就得变 10。 你看我前面那段例数据,数据是 8、9、10、11、12。
哎哟喂,这简直就是一条直线,跟 11 平齐。我们算算方差,平均值就是 10。8 离 10 差 2,打平方是 4;9 离 10 差 1,平方是 1;10 离 10 差 0,平方是 0;11 离 10 差 1,平方是 1;12 离 10 差 2,平方是 4。
那总和就是 10。除以 n 拿到方差 2。开根号,方差对 2 开根号等于 1.41。
故此这组数据的标准差就是 1.41。
这组数据大家聊聊起来:10 离 10 最近,那标准差肯定最小。 反观我刚刚那段乱糟糟的数据:1、3、5、8、12。
这组数据啊,简直就是横冲直撞。平均值跑到 4.6 去。1 离平均值 3.6 远,平方是 12.96;3 离 4.6 差 1.6,平方 2.56;5 离 4.6 差 0.4,平方 0.16;8 离 4.6 差 3.4,平方 11.56;12 离 4.6 差 7.4,平方 54.76。加起来这平方加起来的大约是 81.9。除以 5 拿到方差 16.38。开根号,标准差大约是 4.04。
你看,这组数据里,12 离平均值最远,8 次之,1 最远,那标准差肯定是 12 这一位。
看看这个结局,是不是跟直觉一模一样? 实际上计算机算法那套,早就把这种心照不宣的套路给搞定了。它不靠脑子去猜哪近哪远,而是用一种极客的方式处理。
比如你只需求把数据往一个数组里扔进去,然后循环遍历。
每次算出平均值,然后跟当前数据算差,再平方,累加,最终除以个数。
这个过程好办粗暴,没有一句废话。 有人可能会问,那为啥不用更好办的公式?比如直接算所有数加上常数之后,再求标准差?实际上有时候确实不需求。
要是所有数据都加了个 100,平均值也变了,但数据之间的相对距离没变。
那算出来的标准差还是一样。
故此大量时候,算总体的标准差时,加个常数要么除以 n,对结局影响不大,主要是为了数值稳定。
要是数据量特别大,比如一千万条记录,这时候用循环累加法可能有点慢,但计算机处理这种规模的数据就像处理一吨沙子,别看慢点,但稳当,准没错。 在现实应用里,比如做市场调研,收集几百个花者的评分。有的说 9 分,有的说 1,有的说 8 分。
这时候要是不求标准差,你就根本不知道大家的意见是不是还比较一致,要么大家是不是两极分化严重。标准差能帮你一眼看出,这数据里有没有几个“极端值”,有没有哪几个人的极端操作拉高了方差。 还有,比如做金融风控,看某个交易员的操作。
要是标准差忒大,说明他要么大赚大赔,要么天天都在做过山车式的交易,风险忒高。
要是标准差挺小,说明他要么稳赚,要么就是横财。
这时候计算机算完标准差,直接告诉你这个数字,你心里就有底了。 别被那些书本上的定理吓到。
那些公式看着复杂,实际上就是把“平均数的平方”和“平均数的平方和”之间的关系,用代数和代数化了。
说白了,就是算出跟平均值的关系,再乘上系数,最终做个平均值。别看看着吓人,但逻辑就在心里头。 就拿咱们刚刚那组 1、3、5、8、12 来说,算出来标准差是 4.04。
这说明这个平均值 4.6 离这组数据里的任何一个点,都不近。任何一个点被“选中”的概率都不是挺高。
要是这组数据是 1、2、3、4、5,算出来标准差是 0.71,那这组数据就特别聚拢,任何数值被选中的概率都差不多。
这就好比,标准差是个“扩散系数”,扩散大了,数值就分散;扩散小了,数值就抱团。 有时候,数据本身就有时候挺难算的。
要是有无穷多个数据,要么数据分布贼复杂,比如正态分布曲线,这时候直接求期望和方差可能就没意义了。
这时候就需求用矩估摸法之类的统计方式,但那可就是比求标准差难多了。在计算机程序写代码的时候,有时候得把这个难题转化成数值计算的难题,比如用迭代逼近的方式,一点一点地猜,直到猜得充足准。 最终总结一下,求标准差这事儿,核心就两点:一是平均值,二是数据跟平均值的距离。计算机算,就是两个平均值,再平方,再求平均,最终开根号。别看过程看着像绕,但实际上逻辑挺好办。别找那些高大上的法缘,按部就班地算,就能拿到准的结局。
要是数据量大了,计算机会帮你加速;要是数据乱了,标准差能帮你找回秩序。
这就是它存有的意义,就是告诉你看一看,这数据到底是聚是一团,还是散成一片。