百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

用R语言做数据分析——描述统计量

toyiye 2024-07-11 00:34 13 浏览 0 评论

统计分析分为统计描述和统计推断两个部分,统计描述是通过绘制统计图、编制统计表、计算统计量等方法来表述数据的分布特征,它是数据分析的基本步骤,也是进行统计推断的基础。这里结合R语言介绍统计描述,也就是数据的描述性分析,用R语言作数据的描述性分析,可以更加方便、直观,有利于对统计描述的理解。

已知一组观测数据为x1,x2,...,xn,它们可以是从所要研究的对象的总体X中取出的,这n个观测值就构成一个样本。在一些简单的实际问题中,这n个观测值就是所要研究问题的全体,数据分析的任务就是要对这全部n个数据进行分析,提取数据中包含的有用信息。

数据作为信息的载体,当然要分析数据中包含的主要信息,即要分析数据的主要特征,也就是说,要研究数据的数字特征。这些特征就是在之前统计章节中所介绍的数据特征,即数据的集中趋势、分散趋势和数据的分布等。

数据的集中趋势常用的衡量指标有均值、众数、中位数、百分位数。

均值

在R语言中,可用mean()函数计算样本的均值,其使用方法为:

mean(x,trim=0,na.rm=FALSE)

其中x是对象(如向量、矩阵、数组或数据框),trim是计算均值前去掉与均值差较大数据的比例,缺省值为0,即包括全部数据。当na.rm=TRUE,允许数据中有缺失值,函数的返回值是对象的均值。

> x<-1:12

> dim(x)<-c(3,4)

> x

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

> mean(x)

[1] 6.5

注意,当x是矩阵或数组时,函数mean()返回的一个数而不是向量,即矩阵中全部数据的平均值。如需要得到矩阵各行各列的均值,需要调用apply()函数。

> #计算矩阵各行的均值

> apply(x,1,mean)

[1] 5.5 6.5 7.5

> #计算矩阵各列的均值

> apply(x,2,mean)

[1] 2 5 8 11

如果x是数据框,则mean()的返回值就是向量。

求和

求和函数sum()是与求均值相关的函数,其使用格式为:

sum(...,na.rm=FALSE)

如果x是向量,函数length(x)的返回值是向量x的长度,因此均值可由下面计算得出:

> w<-c(75.0,64.0,47.4,66.9,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)

> w.mean<-mean(w)

> w.mean

[1] 62.37143

> w[1]<-750

> w

[1] 750.0 64.0 47.4 66.9 62.2 58.7 63.5 66.6 64.0 57.0 69.0 56.9

[13] 50.0 72.0

> mean(w)

[1] 110.5857

> mean(w,trim=0.1)

[1] 62.56667

使用trim参数可以有效减少由于输入误差对计算的影响,trim的取值在0至0.5之间,表示在计算均值前需要去掉异常值的比例,利用这个参数可以有效的改善异常值对计算额影响。

如果向量中存在异常值NA,此时用mean()方法无法得出得出结果,而na.rm是控制缺失数据的参数。

> w<-c(75.0,64.0,47.4,66.9,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0,NA)

> mean(w)

[1] NA

> mean(w,na.rm=TRUE)

[1] 62.37143

加权平均值

与均值函数mean()相关的函数还有weighted.mean(),即计算数据的加权平均值,具体使用格式为:

weighted.mean(x,w,na.rm=FALSE)

其中x是数值向量,w是数据x的权,与x的维数相同。该函数可以对矩阵和数组计算加权平均值,但对数据框不适用。

排序

R语言中,sort()函数用于对数据的排序:

> x<-c(75,64,47.4,66.9,62.2,62.2,58.7,63.5)

> sort(x)

[1] 47.4 58.7 62.2 62.2 63.5 64.0 66.9 75.0

> #从大到小排序

> sort(x,decreasing=TRUE)

[1] 75.0 66.9 64.0 63.5 62.2 62.2 58.7 47.4

中位数

median()函数用于计算数据的中位数,其使用 格式为:median(x,na.rm=FALSE)

> x<-c(75,64,47.4,66.9,62.2,NA,58.7,63.5)

> x

[1] 75.0 64.0 47.4 66.9 62.2 NA 58.7 63.5

> median(x)

[1] NA

> median(x,na.rm=TRUE)

[1] 63.5

百分位数

quantile()函数用于计算数据的百分位数,其使用格式为:

quantile(x,probs-seq(0,1,0.25),na.rm=FALSE,names=TRUE)

其中x是向量,probs是给出相应的百分位数,缺省值是0、1/4、1/2、3/4。

> x<-c(75,64,47.4,66.9,62.2,58.7,63.5)

> quantile(x,probs=seq(0,1,0.2))

0% 20% 40% 60% 80% 100%

47.40 59.40 62.72 63.80 66.32 75.00

数据的分散趋势常用的衡量指标有方差、标准差、极差、四分位极差、变异系数和标准误等。

方差和标准差

R语言中,若x是由样本构成的向量,则var(x)计算样本方差,sd(x)计算样本标准差,它们的使用格式为:

var(x,y=NULL,na.rm=FALSE,use)

sd(x,na.rm=FALSE)

与方差函数var()相关的函数还有:cov()函数求协方差矩阵,cor()求相关矩阵。

> var(x)

[1] 70.23238

> sd(x)

[1] 8.380476

极差和四分位极差

极差的计算公式为:

R = max(x) - min(x)

其中x是由样本构成的向量,样本极差是描述样本分散性的数字特征,当数据越分散,其极差越大。

样本上、下四分位数之差称为四分位极差,其计算公式为:

R1= Q3 - Q1

分布形状的度量指标主要有偏度系数和峰度系数。

偏度系数是刻划数据的对称性指标。关于均值对称的数据其偏度系数为0,右侧更分散的数据偏度系数为正,左侧更分散的数据偏度系数为负数。

峰度系数:当数据的总体分布为正态分布时,峰度系数近似为0;当分布较正态分布的尾部更分散时,峰度系数为正,否则为负。当峰度系数为正时,两侧极端数据较多,当峰度系数为负时,两侧极端数据较少。

最后编写一个统计函数,计算样本的各种描述性统计量:

> data_outline<-function(x){

+ n<-length(x)

+ m<-mean(x)

+ v<-var(x)

+ s<-sd(x)

+ me<-median(x)

+ cv<-100*s/m

+ css<-sum((x-m)^2)

+ uss<-sum(x^2)

+ R<-max(x)-min(x)

+ R1<-quantile(x,3/4)-quantile(x,1/4)

+ sm<-s/sqrt(n)

+ g1<-n/((n-1)*(n-2))*sum((x-m)^3)/s^3

+ g2<-((n*(n+1))/((n-1)*(n-2)*(n-3))*sum((x-m)^4)/s^4-(3*(n-1)^2)/((n-2)*(n-3)))

+ data.frame(N=n,Mean=m,Var=v,std_dev=s,Median=me,std_mean=sm,CV=cv,CSS=css,USS=uss,R=R,R1=R1,Skewness=g1,Kurtosis=g2,row.names=1)

+ }

> w<-c(75.0,64.0,47.4,66.9,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)

> data_outline(w)

N Mean Var std_dev Median std_mean CV CSS USS

1 14 62.37143 60.81451 7.798366 63.75 2.084201 12.50311 790.5886 55253.32

R R1 Skewness Kurtosis

1 27.6 9.4 -0.4240699 -0.1252641

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码