第一部分:切尾均值

切尾均值(trimmed mean)又称“截尾均值”,是指在一个数列中,去掉两端的极端值后所计算的算术平均数,其计算和下式中的a(切尾比例)有关,从它的定义可以看出,切尾均值能够有效避免极端值对整体数据的影响,能够使数据的描述结果更加合理与稳定,在生活中最常见的是选秀比赛或者扣篮比赛中除掉最高分和最低分来计算选手的最终得分。psych包默认切尾比例是0.1,也就是将数据排序后分别去掉两端10%的数据。当然,切尾均值的计算会比这种直接去掉最大值和最小值的计算方法要稍微复杂一点,但仔细看也并不难理解。如下是具体的计算公式:

上式中n表示样本量,a(假定为10%)就是切尾比例,第一个数是从去掉前10%的数开始算起,最后一个数是到90%终止。

具体的R代码实现如下:

#创建数据,设定切尾比例
library(psych)
d <- c(1,2,3,5)  #将上一期内容里的变量a去除NA值
d <- sort(d) #排序
r <- 0.1 #设置切尾比例是0.1,与psych包的缺省值一致
count <- length(d) #计算初始数据个数
lower <- round(count*r+1) #切尾后的第一个数的位置
upper <- round(count-count*r) #切尾后最后一个数的位置
mean(d[lower:upper]) #切尾均值,和psych包计算结果一致
# [1] 2.75
describe.by(d)

可以看出最终的计算结果和我们上一期psych包的计算一致。

接下来我们换一组较大的数据试试:

e <- rnorm(100) #使用rnorm(100)生成100个服从标准正态分布的随机数
e <- sort(e) #将随机数排好序
r <- 0.1 #设置切尾比例是0.1,与psych包的缺省值一致
count <- length(e) #计算初始数据个数
lower <- round(count*r+1) #切尾后的第一个数的位置
upper <- round(count-count*r) #切尾后最后一个数的位置
mean(e[lower:upper]) #切尾均值,和psych包计算结果一致
# [1] -0.02388169
describe.by(e)

可以看出换了数据后计算结果四舍五入后也一致,当然这里由于使用的是随机数,所以你做出来的值可能和我的不一样,这个没有关系,只要你用基本函数计算出的切尾均值和psych包计算的一致即可。

接下来更换切尾比例试试:

r <- 0.15 #设置切尾比例是0.15
count <- length(e) #计算初始数据个数
lower <- round(count*r+1) #切尾后的第一个数的位置
upper <- round(count-count*r) #切尾后最后一个数的位置
mean(e[lower:upper]) #切尾均值,和psych包计算结果一致
# [1] -0.02015876
describe.by(e)

计算结果依然一致!而且我们可以发现切尾比例为0.1和0.15时的计算结果几乎一致,这是因为数据e本身是一组来自正态分布的数据,其数据间的偏差非常小,所以统计结果稳定。

今天我用R语言和大家详细介绍了切尾均值的含义以及它的意义,希望大家能够完全理解切尾均值的计算和意义,并能用R语言熟练计算。

第二部分:绝对中位差

绝对中位差(median absolute deviation)是指数据点到中位数的绝对偏差的中位数,实际上就是偏差的中位数。从它的定义中我们不难发现,这是一个用于描述数据变异程度的一个量,它的估计和标准差具有一致性。

具体的R代码实现如下:

d <- c(1,2,3,5)  #将a去除NA值
d <- sort(d)
median(abs(d-median(d))) # 计算绝对中位数
# [1] 1

上述结果和psych的计算结果不一致,这是因为R语言里mad的计算在上述结果的计算上乘了一个比例因子1.4826,为了达到渐进正态一致性。

median(abs(d-median(d)))*1.4826 # 计算绝对中位数(乘上比例因子)
# [1] 1.4826

当然我们同样可以使用之前的变量e来计算一下:

median(abs(e-median(e)))*1.4826
# [1] 1.081142

这个和上面psych包的结果一致。

在这一期中我们详细了解了切尾均值和绝对中位差的含义和计算,并用R语言的基本函数和psych包里的函数分别实现了一遍,相信大家应该对此有了更深刻的认识了,在下一期中我们将详细介绍偏度和峰度,敬请期待!

C++中如何读取一个数的位数_R语言入门之切尾均值(trimmed mean)和绝对中位差(mad)...相关推荐

  1. C++中如何读取一个数的位数_C语言编写程序求水仙花数

    C语言编写程序求水仙花数 水仙花数是一个数学问题,其实质是一个三位数,个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身.例如153=1*1*1+5*5*5+3*3*3,即153=1+12 ...

  2. C++中如何读取一个数的位数_求1000以内的水仙花数

    点击上方 蓝字关注我们 大家好,我是阿汤哥. 看知乎上有朋友说还不明白怎么判断水仙花数,今天我们就来看看这个问题.(PS:"求1000以内的水仙花数"这道题阿汤哥记忆犹新.到现在还 ...

  3. C++中如何读取一个数的位数_初中数学:近似数和平均数知识点总结及练习

    ​ 近 似 数 一个数与准确数相近,且比准确数略多或略少些,这一个数称之为近似数. 一个近似数四舍五入到哪一位,那么就说这个近似数精确到哪一位,从左边第一个不是0的数字起到精确的数位止的所有数止. 如 ...

  4. C语言:有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不在数组中,打印“not found”。

    /*有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数.如果不在数组中,打印"not found".*/#include<stdio ...

  5. c语言 有15个数按由大到小,C++ 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。...

    有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则输出"无此数". 以下是此题的[c++源代码],需要[c ...

  6. python计算n阶乘中尾部零的个数_(Java)设计一个算法,计算出n阶乘中尾部零的个数...

    展开全部 long 类型对大数阶乘来e68a8462616964757a686964616f31333365633963说存储范围大小,强行使用会溢出,可以使用 BigDecimal. 代码如下:im ...

  7. c语言中结构体数组的引用,【C语言入门教程】7.2 结构体数组的定义和引用

    7.2 结构体数组的定义和引用 当需要使用大量的结构体变量时,可使用结构体定义数组,该数组包含与结构体相同的数据结构所组成的连续存储空间.如下例所示: struct student stu_a[50] ...

  8. 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”

    #include <stdio.h> #include <conio.h> int main(){   int a[7]={1,2,3,4,5,6,7};   int i,nu ...

  9. c语言中如何排出三个数的大小,C语言比较三个数大小

    C语言比较三个数大小 首先比较第一个数和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换,不大于则不作处理:然后将第二个数和第三个数比较,同样,若大于则将它们互换:最后比较完以后, ...

  10. r语言中的或怎么表示什么不同_R语言中灵活运用if实现根据不同条件执行不同的语句...

    原标题:R语言中灵活运用if实现根据不同条件执行不同的语句 在程序语言中,if一般属于一种分支结构,即根据某个条件执行相关的语句,在R中也不例外.同时,if语句与else配合可以运用到多种条件递归判断 ...

最新文章

  1. 链路聚合_链路聚合可靠性技术详解(三)
  2. E2. Rubik‘s Cube Coloring (hard version) dp,满二叉树(2300)
  3. Vue采用input实现文件上传与删除
  4. delphi 第三方组件 log4cpp.dll
  5. php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法
  6. MySQL 数据类型、字符集编码、存储引擎
  7. ubuntu16.04安装monaco字体
  8. Cesium 场景设置~黑白、夜视和描边
  9. IT行业常见职位英语缩写及中文释义
  10. zblog php 模板修改,ZBlog博客程序zblogPHP主题模板定制仿制修改
  11. Develop -- Training(十五) -- 显示高效位图
  12. 微软将要求供应商提供带薪育儿假;倪光南谈中国软件业机遇,称已出现由中方主导的开源社区...
  13. Request和Response对象
  14. P1567 统计天数
  15. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入...
  16. 常见的几种页面内容布局方式
  17. xml基础教程详细总结
  18. python批量分析表格_python批量设置多个Excel文件页眉页脚的脚本
  19. 自然语言处理菜鸟学习笔记(一)
  20. 蓝湖类似的软件_一款产品设计团队必备的协作工具——蓝湖

热门文章

  1. Java项目-黄金矿工
  2. [渝粤教育] 苏州农业职业技术学院 日语会话基础 参考 资料
  3. 三、动态构建GStreamer管道
  4. 2022年茶艺师(初级)考试练习题模拟考试平台操作
  5. Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat ‘C:\hiberfil.sys‘的解决方案
  6. 软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-1
  7. matlab里comb用法,comb_comb的意思和用法搭配
  8. CSS3渐变、过渡、2D、3D和动画
  9. C++多态的职工管理系统
  10. High Scalability创始人Todd Hoff:Facebook网络性能的秘密武器