首页 > 其他分享 >R基本统计分析

R基本统计分析

时间:2023-04-19 17:14:50浏览次数:47  
标签:基本 统计分析 变量 mtcars mytable prop test table

#一、基本统计分析之基本方法####
#R语言实战—第7章(描述性统计、频数表和列联表、相关及检验、t检验等)
--------------------------------------------------------------------
#1.1 描述性统计分析####

#例子:通过sapply()
#定义一个函数,其中自变量为x,这里选择不忽视缺失值
mystats<-function(x,na.omit=F) {
x<-x[!is.na(x)] #把x中所有不是NA的值赋予x
m<-mean(x)
n<-length(x)
s<-sd(x)
skew<-sum((x-m)^3/s^3)/n #峰度值
kurt<-sum((x-m)^4/s^4)/n-3 #偏度值
return(c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt)) #返回值
}
mywars<-c('mpg','hp','wt')
sapply(mtcars[mywars],mystats)

#1.1.1 不分组计算描述统计量

##整体看描述统计量
mywars<-c('mpg','hp','wt')
head(mtcars[mywars])
summary(mtcars[mywars])

#通过Hmisc包的describe()
library('Hmisc')
mywars<-c('mpg','hp','wt')
describe(mtcars[mywars])

#通过psych包的describe()
library('psych')
describe(mtcars[mywars])

#通过pastecs包的stat.desc()
library('pastecs')
mywars<-c('mpg','hp','wt')
stat.desc(mtcars[mywars])

#1.1.2 分组计算描述统计量
##通过aggregate() 指定单一函数返回单一值
mywars<-c('mpg','hp','wt')
aggregate(mtcars[mywars],by=list(am=mtcars$am),mean)

#只分组,默认返回值 describeBy() 函数不允许指定任意函数
library('psych')
describeBy(mtcars[mywars],list(mtcars$am)) #增加分组变量

#通过分组,指定函数,一次返回若干统计值
#a 通过by分组
dstats<-function(x)sapply(x,mystats) #调用前面mystats的函数
myvars<-c('mpg','hp','wt')
by(mtcars[myvars],mtcars$am,dstats)

#b 通过summaryBy分组
#语法 summaryBy(formula=,data=,FUN=),formula左侧为数值型变量,右侧为类别型分组变量
library("doBy", lib.loc="D:/R/R-3.6.0/library")
summaryBy(mpg+hp+wt~am,data=mtcars,FUN=mystats)

-----------------------------------------------------------------------------
#1.2 频数表和列联表####
#使用table(var1,var2,...) #针对n个类别型变量(因子)创建n维列联表
#使用xtabs(formula,data) #根据一个公式和一个矩阵或数据框创建一个N维列联表

#考察类别型变量的频数表和列联表
library('vcd')
head(Arthritis)

#1.2.1 一维列联表
mytable<-table(Arthritis$Improved)
mytable<-with(Arthritis,table(Improved))

prop.table(mytable) #将频数转化为比例值(小数)
options(digits = 4)
prop.table(mytable)*100 #将比例转化为百分比

#1.2.2 二维列联表 p138
#两种方法
table(A,B) #A表示行变量,B表示列变量
mytable<-table(Arthritis$Improved,Arthritis$Treatment)

xtabs(~A+B,data=) #~之后的最后一个变量分类作为二维表的列
mytable<-xtabs(~Improved+Treatment,data=Arthritis) #此处Treatment中类别作为列

#1,2,3 根据二维表生成边际频数(结果同一维列联表)
#1.2.3.1 生成边际频数
mytable<-xtabs(~Improved+Treatment,data=Arthritis)
#指定单个变量
margin.table(mytable,1) #求和边际频数,下标1代表table语句中的第1个变量求和
#不指定变量
addmargins(mytable) #添加各行与各列和,addmargins()默认为所有变量创建边际和
addmargins(mytable,1) #仅添加各列的和
addmargins(mytable,2) #仅添加各列的和

#1.2.3.2 生成边际频数的比例
mytable<-xtabs(~Improved+Treatment,data=Arthritis)
prop.table(mytable) #各单元所占比例(小数)
prop.table(mytable)*100 #各单元所占百分比
#指定单个变量
prop.table(mytable,1) #根据二维表生成行与行的比例,1含义同上
#不指定变量
addmargins(prop.table(mytable)) #添加各单元边际百分比
addmargins(prop.table(mytable,1))*100#table语句中的第1个变量边际百分比和
addmargins(prop.table(mytable,1),2) #仅添加各行的和
addmargins(prop.table(mytable,1),1) #仅添加各列的和

#1.2.4 多维列联表 p141
#三维列联表
library('vcd')
mytable<-xtabs(~ Treatment+Sex+Improved,data=Arthritis)
ftable(mytable) #紧凑的方式输出多维列表

margin.table(mytable,1)
margin.table(mytable,c(1,2))
ftable(margin.table(mytable,c(1,2))) #注意和和上式结果显示区别

margin.table(prop.table(mytable),c(1,2))
ftable(margin.table(prop.table(mytable),c(1,2)))


addmargins(prop.table(mytable,c(1,2)),1)
addmargins(prop.table(mytable,c(1,2)),2)
addmargins(prop.table(mytable,c(1,2)),3) #注意三式区别

ftable(addmargins(prop.table(mytable,c(1,2)),1))
ftable(addmargins(prop.table(mytable,c(1,2)),2))
ftable(addmargins(prop.table(mytable,c(1,2)),3))
----------------------------------------------------------------------

#接下来检验列联表中变量是否相关或独立
#1.3 独立性检验####
#检验类别型变量独立性
#独立性检验原假设H0:相互独立;
#备择假设H1:相互不独立;可以进一步检验相关性 p143
#1.3.1 卡方独立性检验
mytable<-table(Arthritis$Improved,Arthritis$Treatment)
chisq.test(mytable) #检验二维表的行变量和列变量的独立性
mytable<-xtabs(~Improved+Sex,data=Arthritis)
chisq.test(mytable)

#1.3.2 fisher精确检验
#原假设H0:边界固定的列联表中的行和列是相互独立的
#fisher.test()可以在任意行列数大于等于2的二维表上使用,但不能用于2x2的列联表
mytable<-xtabs(~Treatment+Improved,data=Arthritis)
fisher.test(mytable)

#1.3.3 Cochran-Mantel-Haenszel检验
#原假设:两个名义变量在第三个变量中的每一层中都是条件独立的
mytable<-xtabs(~Treatment+Improved+Sex,data=Arthritis)
ftable(mytable)
mantelhaen.test(mytable) #结果表明:患者接受的治疗与得到的改善在性别的每一个水平下并不独立

#1.3.4 相关性的度量
#拒绝独立性原假设(p<0.05)时,则转向衡量相关性强弱的相关性度量 p145
library('vcd')
mytable<-xtabs(~Treatment+Improved,data=Arthritis)
assocstats(mytable) #总体来说,较大值意味着较强的相关性
---------------------------------------------------------------------

#1.4 相关性检验####
#1.4.1 相关系数p147:用来描述定量变量之间的线性相关程度,三种相关系数:
#pearson积差相关系数衡量了两个定量变量之间的线性相关程度;
#Spearman等级相关系数则衡量分级定序变量之间的相关程度;
#Kendall's Tau也是一种非参数的等级相关度量
#cor函数可以计算这三种相关系数
#cor(x,method='pearson') #method默认pearson
states<-state.x77[,1:6]
cor(states) #默认得到的是所有结果的方阵

#选择变量检测相关系数
x<-state.x77[,1:4]
y<-state.x77[,c('Life Exp','Murder')]
cor(x,y)

#1.4.2 相关性的显著性检验 p148
#前言:知道相关系数后,并不能说明总体相关系数显著不为0,
#还需要对相关系数进行显著性检验
#原假设Ho:变量间不相关(即总体相关系数为0)

#1 cor.test() 每次只能检验一种相关关系的显著性(两个变量间)
#用法:
cor.test(x,y, #x和y是要检验的相关性度量
alternative='two.side', #指定进行双侧检验或单侧检验,取值two.side/less/greater
method= ) #指定要计算的相关系数种类,同前

cor.test(mtcars[,3],mtcars[,5])

#2 corr.test() 一次检验多个变量间的相关关系的显著性
#corr.test()返回相关矩阵并进行显著性检验
library("psych", lib.loc="D:/R/R-3.6.0/library")
corr.test(x=states,
use='complete', # use取值'complete'或'pairwise'
#分别表示对缺失值执行成对删除或行删除
method='pearson') #默认,同前

#1.5 t检验####
#1.5.1独立样本的t检验
#关注的是结果变量y是连续型的变量的组间比较
#针对两组的独立样本t检可用于检验两个总体均值相等的假设,
#前提是假设两组数据是独立的,并且服从正态分布
library("MASS", lib.loc="D:/R/R-3.6.0/library")
t.test(y~x) #y因变量~x自变量
#H0:两个总体均值相等(u0=u1)
t.test(Prob~So,data=UScrime)
#t.test()中的t检验默认假定方差不相等,默认双侧检验
t.test(Prob~So,data=UScrime,
var.equal=TRUE #假定方差相等,使用合并方差估计
)

标签:基本,统计分析,变量,mtcars,mytable,prop,test,table
From: https://www.cnblogs.com/lizixi/p/17333910.html

相关文章

  • 数据分析的基本知识介绍,通过Python创建一些漂亮的数据可视化
    近一年势头不灭的Python在数据分析领域,是专家们的必备技能。随着IT行业的增长,对有经验的数据科学家的需求也水涨船高,而Python也一跃而成最受欢迎的语言。介绍数据分析的基本知识,并利用Python创建一些漂亮的数据可视化。概要为什么要学数据科学中的Python?Python简介为数据......
  • 云计算基本概念的介绍,理解的误区有哪些?
    或许会以为企业中的基层IT员工和负责人应该很了解云计算的优势和劣势。然而他们对一些基本概念的错误认识实在是令人不安。以下就是非常普遍存在的四大误区。只要使用了公有云,就会有安全风险。这是个很让我感觉不安的误区,我也在博客中多次探讨过这一问题。事实上,在你使用公有云服务......
  • 商业智能系统实施涉及哪些基本知识,商业智能项目,主要分为哪几步?
    商业智能系统的实施涉及企业运作管理、信息系统、数据仓库、业务数据分析、数据挖掘等知识。即需要选择合适的商业智能工具,还必须按照正确的步骤实施,商业智能项目可分为以下步骤。(1)需求分析:需求分析是商业智能实施的第一步,必须明确定义企业对商业智能的期望和需求,包括分析的主题,查......
  • 虚拟化+docker概念基本介绍
    文章目录引言一、虚拟化简介1.1.虚拟化概述1.2.cpu的时间分片(cpu虚拟化)1.3.cpu虚拟化性性能瓶颈1.4.虚拟化工作原理虚拟化类型虚拟化功能二、Docker容器概述2.1Docker是什么2.2使用docker有什么意义2.3Docker的使用场景2.4Docker引擎(DockerEngine)2.5Docker三要素(核心组件......
  • 网络爬虫技术是什么,网络爬虫的基本工作流程是什么?
    大量的数据散落在互联网中,要分析互联网上的数据,需要先把数据从网络中获取下业,这就需要网络爬虫技术。网络爬虫是搜索引擎抓取系统的重要组成部分,爬虫的主要目的是将互联网上网页下载到本地,形成一个或联网内容的镜像备份。网络爬虫的基本工作流程如下:......
  • 成为一名合格的数据科学家,所需要学习的基本技能
    数据科学家所需具体技能,罗列如下:1数据分析技能数据清洗运用合适的统计知识和方法来分析数据运用机器学习算法建立数据模型评估和应用数据模型实现数据可视化2编程技能精通一种或者多种数据分析工具(R/Python/SPSS/SAS/Matlab)精通一种或者多种面向对象的编程语言(Python/Java/C++等)......
  • docker常用的基本命令
    打包一个镜像[root@localhost~]#dockerimages//查看镜像列表docker.io/nginxlatestc39a868aad022daysago133MB[root@localhost~]#dockersave-onginx_latest.tarc39a868aad02用法:dockersaver-o打包的镜像名称......
  • MYSQL基本概述
    MYSQL1、主从复制总览:mysql主从复制是一个异步的复制过程:1、主库会创建一个binlog输出线程,实时的将mysql的操作写入本地的binlog二进制文件中2、从库开始复制时​ 创建从库I/O线程,将主库传来的binlog文件,保存到本地的relaylog文件中。​ 创建SQL线程,从readylog文件中的......
  • swift 自定义tabbar为基本结构的项目
    swift自定义tabbar1、Xcode新建一个项目,选择布局方式为storyBoard,语言为swift2、打开项目,新建一个cocoa文件,继承于TabBarViewController,名字命名为BaseTabBarViewController3、勾选mainstoryboard,选中右侧窗口第四个检查项,将Class关联到BaseTabBarViewController4、新建......
  • Datagrid组件的基本讲解
    https://blog.csdn.net/qq_37192800/article/details/784680341.datagrid的基本属性datagrid—-一种接收后台数据用于,以标准表单的形式展示的组件。EasyUI接收两种参数:对象参数;数组参数。url:数据请求后台的地址。title:表单的标题。iconCls:图标。pagination:......