几种平均数(Mean function)

前言:平均数是用来表示数据整体趋势的一个统计指标,本文参考wiki,采用一些简明的例子,主要是总结。

  • 算术平均数(Arithmetic Mean)
  1. 计算公式

  2. 优点:相比于中位数、众数,更少收到随机因素的影响
  3. 缺点:更容易收到极端值(biased value)的影响
  4. 例子:
    • data = [1, 2, 3, 4, 5, 6,  7, 8, 9, 10]. result = 5.5.
  • 几何平均数(Geometric Mean)
  1. 计算公式

  2. 优点:适用于对比率数据的平均,主要用于计算数据平均增长率
  3. 例子:
    • data = [1, 2, 3, 4, 5, 6,  7, 8, 9, 10]. result = 4.5287.
  • 调和平均数(Harmonic Mean)
  1. 计算公式

  2. 优点:计算平均速率,感觉很多paper都在用,用于计算平均速率
  3. 例子:
    • data = [1, 2, 3, 4, 5, 6,  7, 8, 9, 10]. result = 3.414.
  • 平方平均数(Quadratic Mean)
  1. 计算公式:

  2. 优点:是2次方的广义平均数的表达式。可以定义在连续区间。常用来计算一组数据与某个数据之间的平均差。
  3. 例子:
    • data = [1, 2, 3, 4, 5, 6,  7, 8, 9, 10]. result = 6.204.

注意到各种算法得到的平均值有所差别,比如在这个例子之中,调和平均数偏小,平方平均数偏大,当然我没有严格formulate,不能说是一个通用的结论。在看一篇Sigcomm的文章时,prediction的结果一般较为乐观(偏大)时,error比较大,作者采用了Harmonic mean。

附python实现代码(CalculateMeans.py)

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3
 4 from math import *
 5
 6 def ArithmeticMean(data):
 7     len_d = float(len(data))
 8     result = sum(data) / len_d
 9     return result
10
11 def GeometricMean(data):
12     len_d = len(data)
13     product = 1.0
14     for i in range(len_d):
15         product = product * data[i]
16     # the next line is equal to calculate the n-root
17     result = product ** (1.0/len_d)
18     return result
19
20 def HarmonicMean(data):
21     len_d = len(data)
22     x = [1.0/data[i] for i in range(len_d)]
23     result = float(len_d) / sum(x)
24     return result
25
26 def QuadraticMean(data):
27     len_d = len(data)
28     x = [data[i] * data[i] for i in range(len_d)]
29     result = sqrt(sum(x) / float(len_d))
30     return result
31
32
33 if __name__ == "__main__":
34     data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
35     print "Scenario used in the test:", data
36     print "The arithmetic mean:", ArithmeticMean(data)
37     print "The geometric mean:", GeometricMean(data)
38     print "The Harmonic mean:", HarmonicMean(data)
39     print "The Quadratic mean:", QuadraticMean(data)

实验结果:

参考:

https://zh.wikipedia.org/wiki/%E8%B0%83%E5%92%8C%E5%B9%B3%E5%9D%87%E6%95%B0

https://zh.wikipedia.org/wiki/%E5%87%A0%E4%BD%95%E5%B9%B3%E5%9D%87%E6%95%B0

https://zh.wikipedia.org/wiki/%E5%B9%B3%E6%96%B9%E5%B9%B3%E5%9D%87%E6%95%B0

https://zh.wikipedia.org/wiki/%E7%AE%97%E6%9C%AF%E5%B9%B3%E5%9D%87%E6%95%B0

时间: 2024-10-08 19:34:55

几种平均数(Mean function)的相关文章

(转)几种平均数的关系:

参考网址: http://baike.baidu.com/view/441784.htm 调和平均数: ${{H}_{n}}=\frac{n}{\sum\limits_{i=1}^{n}{\frac{1}{{{x}_{i}}}}}=\frac{n}{\frac{1}{{{x}_{1}}}+\frac{1}{{{x}_{2}}}+\cdots +\frac{1}{{{x}_{n}}}}$ 几何平均数: ${{G}_{n}}=\sqrt[n]{\prod\limits_{i=1}^{n}{{{x}_

【JQuery】jQuery(document).ready(function($) { });的几种表示方法及load和ready的区别

jQuery中处理加载时机的几种方式 第一种: jQuery(document).ready(function() { alert("你好"); }); //或 $(document).ready(function() { alert("你好"); }); 第二种: jQuery(function() { alert("你好"); }); //或 $(function() { alert("你好"); }); 第三种: (fu

javascript中用来定义引用类型的一种"默认"模式

// 终极版:组合使用构造函数模式和原型模式:***************************** // 评价:集构造函数模式和原型模式之大成: 用来定义引用类型的一种默认模式 function Person(name, age, job){ //构造函数用来定义实例属性 this.name = name; this.age = age; this.job = job; this.friends = ["Shelby","Court"]; } Person.p

Jquery 页面初始化常用的三种方法以及Jquery 发送ajax 请求

第一种 $(document).ready(function(){ //文档就绪事件 }); 第二种是第一种的简略写法,效果上和第一种是等效的. $(function(){ //文档加载事件,整个文档加载完成后执行.就仅仅只需要加载所有的DOM结构,在浏览器把所有的HTML放入DOM tree之前就执行js效果.包括在加载外部图片和资源之前. }); 第三种 jQuery(function($){ }); window.onload=function(){ //onload事件是js 中的代码

PHP中获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr($file, '.'), 1); } 第2种方法: function get_extension($file) { return substr($file, strrpos($file, '.')+1); } 第3种方法: function get_extension($file) { return end(expl

Javascript学习笔记:3种定义函数的方式

①使用函数声明语法定义函数 1 function sum(num1,num2){ 2 return num1+num2; 3 } ②使用函数表达式定义函数 1 var sum=function(num1,num2){ 2 return num1+num2; 3 } ③使用Function构造函数定义函数 1 var sum=new Function('num1','num2','return num1+num2'); 三种定义函数的方式,其中第二和第三种从技术角度讲都属于函数表达式的方式,但是不

对js中Function的浅见

它到底是什么 String Array 都是系统内置对象(已经定义好,可以直接使用)当然,这货也是一样,我们之前定义的函数,其实就是一个这货的实例. 在JS中,所有的对象都是由函数实现的,函数的数据类型是object.So,我们以前定义的函数也是一个对象. 几种写法 1 function fn1(a,b){ 2 return a+b; 3 } 4 5 //前面表示参数,后面表示函数语句 6 var fn2 = new Function("a","b","r

(function(){}),(function(){}())解析

前面一段时间,看到(function(){}),(function(){}())这些函数就犯晕,不知道它到底是什么意思,为什么函数外要加小括号,函数后要加小括号,加和不加到底有什么区别……一直犯迷糊,看了汤姆大叔的<深入理解JavaScript系列(4):立即调用的函数表达式>后才明白它们到底是什么东西,终于将困扰我已久的东西给干掉了. 在这里,我先介绍一下函数引用和函数调用的差别.函数声明表现形式和函数表达式的表现形式. 一.函数引用和函数调用的差别 函数引用和调用的差别与函数名称后是否有小

面向对象有几种写法?

4种. 1.function circleArea(r) {     this.r = r;     this.area = function() {         console.log('第一种:'+Math.PI * this.r * this.r) ;     }; } //测试 var ct= new circleArea(1.5); ct.area(); 2.function circleArea(r){     this.r = r; } circleArea.prototype