关于平均数

2024-02-14 20:48
文章标签 平均数

本文主要是介绍关于平均数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于平均数

  根据国家统计局发布的信息,2019年全国城镇非私营单位在岗职工社会年平均工资提高到了82461元,比2018年名义增长11%,实际增长8.7%。城镇私营单位在岗职工社会平均工资达到了49575元,比2018年上涨8.3%,扣除价格因素后,实际增长6.1%。

  这些数据引起了广大网友的质疑,有人说自己拖了社会主义的后腿,自己又“被平均了”;也有土豪表示“没拖后腿,自己不差钱”。很多人调侃国家统计局的平均数计算方式:“张家有财一千万,九个邻居穷光蛋,平均起来算一算,个个都是张百万”。国家统计局的计算方式可不是简单地“平均起来算一算”,这种平均数仅仅是算数平均数,也叫均值。

均值

  均值大家都清楚,就是求和平均,这是最深入人心的一种平均数。

  在正态分布的假设下,均值也是数学期望,用μ表示,它位于倒钟的中心位置:

  均值并不总是能反应数据的信息,有时很还会给人误导。下表是某个企业的月薪情况:

  该企业的月薪均值是:

  看起来是个待遇不错的公司,但实际情况是工程师和项目经理们天天要求加薪,原因是两位高管的月薪远远超过了其他人,他们是数据中的“异常值”。下面的代码绘制了月薪表的直方图:

import numpy as np
import matplotlib.pyplot as plt4 salary = np.array([4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 6, 6, 25, 35])
miu = np.mean(salary) # 均值
print('μ =', miu)8 plt.hist(salary, bins=40)
plt.xlabel('月薪(千元)')
plt.ylabel('频度')
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.show()

  两位高管被孤立了,他们的月薪将影响计算结果的准确性,此时我们说数据是偏斜的,确切地说,由于异常值在右侧,均值向右偏斜,形成了右偏态分布。

  这种扭曲的倒钟曲线成为偏态分布,根据尾巴的位置,分为左偏态(负偏态)和右偏态(正偏态):

 

  左偏态将把均值拉向左侧,此时均值小于大部分数值;右偏态把均值拉向右侧,此时均值大于大部分数值。工资表的数据是右偏态。

  异常值可以通过一些异常检测算法来剔除,比如基于正态分布的异常检测和使用局部异常因子的无监督学习算法。

中位数

  当异常数据对均值产生误导时,不妨试试中位数,这是另一种平均数。

  正如它的名字一样,中位数永远在数据的中间位置。先把数据按大小排序,如果是奇数个,那么中位数正好是中间那个;如果是偶数个,那么中位数是中间两个数据的平均值。

  按照中位数的算法把工资表展开:

  共有14个数,位于中间的恰好都是6,因此中位数也是6。

1 salary = np.array([4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 6, 6, 25, 35])
2 median = np.median(salary)
3 print('median =', median) # median = 6.0

  中位数也有抓瞎的时候。

  为了提升游乐园的竞争力,管理者决定根据游客的年龄来适当增加或减少一些项目。游乐园采取网上售票,所有游客在购票时都需要填写年龄。经过三个月的数据采集,计算出游客年龄的中位数是20,这可是个追求刺激的年龄,于是游乐园下架了旋转木马这类温柔的项目,添加了更大规模的过山车和大钟摆。在下一个周末:

  游客中的大多数是家长带着小朋友,一大加一小的模式,假设某个项目正好有14个人参加,他们的年龄如下:

  好了,现在中位数是20,结论是这个项目适合20岁的年轻人参加,于是:

ages = np.array([5, 5, 5, 6, 6, 7, 8, 32, 32, 32, 34, 35, 36, 36])
print('μ =', ages.mean()) # 均值,等同于np.mean(ages)
print('median =', np.median(ages)) # 中位数
plt.hist(ages, bins=40)
plt.xlabel('年龄')
plt.ylabel('频度')
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.show()

    μ = 19.928571428571427,median = 20.0,直方图如下:

  数据呈驼峰形,均值和中位数都在峰谷,其原因是数据应该划分为两批,一批是孩子,另一批是父母。这种情况下均值和中位数都不靠谱了,需要使用“众数”。

众数

  众数也是一种平均数,是一组数据中频数最大的数值。与前两种平均数不同,一组数据的众数可能有多个。如果数据呈现出多种趋势,我们可以为每种趋势给出一个众数。游乐场年龄数据可以分为两批,称这种数据是双峰数据。

  求得众数的方法很多,比如观察法,金氏插入法,皮尔逊经验法等。这里简单地介绍一下观察法。观察法大致分为2步:先将数据按照数值分组统计频数,再把频数最高的一个或几个挑选出来作为众数。可以使用pandas求得众数:

1 import pandas as pd
2 df = pd.DataFrame(ages)
3 print(df.mode()) # 众数

  结果是5和32。

  众数是唯一自带分组属性的平均数,但是如果一组数据的众数太多,则只会混淆视听,此时的众数将没有任何用处。

  最后附上不同分布下均值、中位数、众数的关系:


  作者:我是8位的

  出处:http://www.cnblogs.com/bigmonkey

  本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途! 

  扫描二维码关注公作者众号“我是8位的”

这篇关于关于平均数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709539

相关文章

若干个数 以“字符串形式‘从键盘输入,将其转换为 double 型,并求平均数

/* 若干个数 以“字符串形式‘从键盘输入,将其转换为 double 型,并求平均数 */ import java.util.Scanner; public class Test_Exp1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.

动态数组求n个数的和还有平均数 --- 蓝桥杯

#include <iostream> #include <cstdio> using namespace std; int main() { int n, sum = 0; cin >> n; for(int i = 0; i < n; i++) { int a; cin >> a; sum += a; } cout <<sum<<" "<<sum/n<<endl; return 0; }

求N个整数的平均数、众数和中位数

题目描述 求 NN 个整数的平均数,众数和中位数。 小知识: 1. 众数 如有 99个数:17,13,17,99,17,17,33,16,17,其中 17 出现的次数最多,即为这组数的众数。 (本题确保测试数据中,出现次数最多的数只有一个) 2. 中位数 如有 99个数:102,170,96,90,97,106,110,182,100。 将这 99个数按一定的顺序(从大到小或从小到大

卡码网笔试题 | 114 小欧的平均数、115 组装手机、116 小欧的卡牌

114 小欧的平均数 这题审题要仔细一些,注意题目的真正意思其实是要我们确定三个数的奇偶性,当其中两个分别为一个奇数一个偶数时,我们可以调整第三个数,之后切换到可以匹配的状态下再次调整刚才那两个数中的一个。而不是找到加起来为偶数的两个数,将剩余一个数调整到和平均数一样的大小。 所以其实统计三个数奇偶性就行了。如果都是奇数或者都是偶数刚好满足条件,不用调整。否则一奇数两偶数,或者一偶数两奇数,都

计算数据集的几何平均数geometric_mean

【小白从小学Python、C、Java】 【计算机等考+500强证书+考研】 【Python-数据分析】 计算数据集的几何平均数 geometric_mean [太阳]选择题 geometric_mean的作用是? import statistics a = [1, 2, 3, 4] average_a = statistics.geometric_mean(a) print(average_

2019-12-24-LeetCode【643. 子数组最大平均数 I】

643. 子数组最大平均数 I 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。 示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum

javascript 用循环求平均数

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//用户输入var input1 = prompt("输入数字");var input2 = prompt("输入数字");var input3 = prompt("输入数字");var input4 = p

【Python 数据分析】描述性统计:平均数(均值)、方差、标准差、极大值、极小值、中位数、百分位数、用箱型图表示分位数

目录 简述 / 前言1. 平均数(均值)、方差、标准差、极大值、极小值2. 中位数3. 百分位数4. 用箱型图表示分位数 简述 / 前言 前面讲了数据分析中的第一步:数据预处理,下面就是数据分析的其中一个重头戏:描述性统计,具体内容为:平均数(均值)、方差、标准差、极大值、极小值、中位数、百分位数、用箱型图表示分位数。 1. 平均数(均值)、方差、标准差、极大值、极小值 关键

【小红书2017年笔试】求一个数组中平均数最大的子数组

题目:    * 给一个数组,里边有N个整数,找长度为K(0<K<N)且平均值最大的子数组,并把这个最大值输出来  输入描述: * 6 (N的值) * 1 12 -5 -6 50 3 (含有N个整数的数组) * 4 (K的值)  输出描述:  * 12.75 题目很简单,时间复杂度O(N)内解决,就是维持一个长度为K的计算窗口,遍历数组,进来后一个数