目录
均值(mean)
用R计算均值
mean(x, trim=0, na.rm=FALSE)
例1
例2
apply(x,1或2,计算函数 )
例3
参数trim
例4
参数na.rm
例5
学习机器学习和数据挖掘中的各种算法和模型,需要掌握统计学的基本概念。统计学是通过搜索、整理、分析数据等手段,以达到推断所测对象的本质,并预测对象未来走势的一门综合性科学。
简单说,统计学是根据样本估计总体的科学。它的一些思想和大数据思想有些相悖,不关注数据的大小,而是更关注数据的好坏。
分析数据的第一步要进行数据描述性分析,数据描述性分析指的是:通过绘制统计图、编译统计 表、描述统计量等方法来表数据数据的分布特征。
其中,描述统计量包括:中心趋势度量、分散程度度量
中心趋势度量 | 描述样本数据的集中趋势的统计量 | 均值、中位数、众数、百分位数…… |
分散程度度量 | 又称散布度量 | 方差、标准差、极差、百分位数…… |
对于R中的必会操作可以参见:R语言必会基础语法
均值数据的平均值
均值和期望:数据总体的平均值是均值,数据样本的平均值是期望。
函数:在R中,可以用mean()函数来计算样本的均值
其中,x是样本数据(比如向量、矩阵、数组或数据框),trim是计算均值前去掉与均值差较大数据的比例, 缺省值为0,即包含全部数据。当na.rm=FALSE时,允许数据中有缺失数据。
> data<-c(30,31,47,50,52,56,60,63,70,70,110)
> data
[1] 30 31 47 50 52 56 60 63 70 70 110
> result=mean(data);result
[1] 58.09091
mean()函数还可以计算一个矩阵的总体数据均值。
> data<-1:12
> dim(data)<-c(3,4);data
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> result=mean(data);result
[1] 6.5
计算矩阵中每行或每列的均值,需要调用apply()函数。
其中,x是样本数据,数字1表示求每行的数据平均值,数字2表示求每列的平均值。
还以上面的矩阵为例
> result=apply(data,1,mean);result
[1] 5.5 6.5 7.5
> result=apply(data,2,mean);result
[1] 2 5 8 11
均值的弱点是对异常值敏感,所以有的时候我们需要剔除掉一些数据,然后才能得到准确有意义的均值。
比如下面这组数据记录学生的体重值:
750,64.0,47.4,66.9,62.2,62.2,58.7,63.5
66.6,64.0,57.0,69.0,56.9,50.0,72.0
其中有一个值少了个小数点,变成了750kg,此时计算均值就是有误差的。所以需要把异常值替换掉。可以调用 mean()里的trim参数来处理。 trim的取值在0~0.5之间, 表示在计算均值前需要去掉的异常值比例。
当然,异常值也不是一定要剔除的,有些情况下,会专门做离群点分析。
> data<-c(750,64.0,47.4,66.9,62.2,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0);data
[1] 750.0 64.0 47.4 66.9 62.2 62.2 58.7 63.5 66.6 64.0 57.0 69.0
[13] 56.9 50.0 72.0
> result=mean(data,trim=0.1);result
[1] 62.53846
图中所求的第一个均值是没有剔除异常值时的均值,第二个为加入trim参数后的均值:
有时样本数据里有缺失值,比如下组数据:
75.0,64.0,47.4,66.9,62.2,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,NA
这样在计算均值时就会出现错误,此时可以选用参数na.rm=TRUE来忽略控制。
> data<-c(75.0,64.0,47.4,66.9,62.2,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,NA)
> result=mean(data,na.rm=TRUE);result
[1] 61.67143
> result=mean(data);result
[1] NA
补充:加权算术均值
每一个样本数据x都有一个对应的权重W与之关联,权重反映了对应数据x的重要程度。