概念
数值型变量
数值型变量:是将观测值以数值形式存储起来的变量,分为连续型和离散型两种类型。
连续型变量:可以取某个区间中的任何值,可以是任何位数,有无限个可能值。
离散型变量:只能取离散数据,如果有取值范围,就是有限个可能取值。分类变量
分类变量:有名义变量和有序变量两种形式。
名义变量:不能按照逻辑顺序排序的分类变量,例如性别。
有序变量:可以排序的分类变量,例如药物剂量,低、中、高。参数和统计量
参数:总体的特征叫作参数。
统计量:样本的特征叫作统计量,统计量是参数的估计量。
集中趋势:均值、中位数、众数
- 均值:
mean()
- 中位数:
median()
xdata <- c(2,4.4,3,3,2,2.2,2,4)
x.bar <- mean(xdata)
x.bar
m.bar <- median(xdata)
m.bar
- 众数、最小数、最大数:
table()
/min()
/max()
xtab <- table(xdata)
xtab
min(xdata)
max(xdata)
range(xdata) # 返回xdata的最小值和最大值
#
max(xtab)
d.bar <- xtab[xtab==max(xtab)] # 频数最大的观测值为众数
d.bar
- 忽略缺失值或者未定义的变量(NA或NaN): 增加参数
na.rm = TRUE
sum/prod/mean/median/max/min/rang
——都可以使用参数na.rm
mean(c(1,4,NA))
mean(c(1,4,NaN))
#
mean(c(1,4,NA),na.rm=TRUE)
mean(c(1,4,NaN),na.rm=TRUE)
- 对分组数据求统计量:
tapply()
mean(chickwts$weight[chickwts$feed=="casein"])
mean(chickwts$weight[chickwts$feed=="horsebean"])
mean(chickwts$weight[chickwts$feed=="linseed"])
mean(chickwts$weight[chickwts$feed=="meatmeal"])
mean(chickwts$weight[chickwts$feed=="soybean"])
mean(chickwts$weight[chickwts$feed=="sunflower"])
#分别求平均值很麻烦
tapply(chickwts$weight,INDEX=chickwts$feed,FUN=mean)
# 使用tapply 批量求出各组的平均值
计数、百分比和比例
-
table()
计数,除以nrow()
观测数,即可求出比例或百分比
table(chickwts$feed)
table(chickwts$feed)/nrow(chickwts)
- 计算逻辑标记向量的和计数,计算逻辑标记向量的均值即可求出比例
sum(chickwts$feed=="soybean")/nrow(chickwts)
mean(chickwts$feed=="soybean")
#可以使用这种方法计算组合样本的比例:
mean(chickwts$feed=="soybean"|chickwts$feed=="horsebean")
- 使用
tapply()
批量求出比例,round()
设置小数位
tapply(chickwts$weight,INDEX=chickwts$feed,FUN=function(x) length(x)/nrow(chickwts))
round(table(chickwts$feed)/nrow(chickwts),digits=3)
# 比例乘以100得到百分比:
round(mean(chickwts$feed=="soybean")*100,1)
四分位数、百分位数和五分位数
-
quantile()
求分位数和百分位数
xdata <- c(2,4.4,3,3,2,2.2,2,4)
quantile(xdata,prob=0.8) # 0.8分位数
quantile(xdata,prob=c(0,0.25,0.5,0.75,1)) # 同时计算多个分位数
quantile(chickwts$weight,prob=c(0.25,0.75)) # 计算下四分位数和上四分位数
-
summary()
计算五分位数和平均值
summary(xdata)
summary(quakes$mag[quakes$depth<400])
离散程度:方差、标准差和四分位差
- 方差:
var()
,标准差sd()
,四分位差IQR()
-
sqrt()
计算平方根
xdata <- c(2,4.4,3,3,2,2.2,2,4)
ydata <- c(1,4.4,1,3,2,2.2,2,7)
var(xdata)
sd(xdata)
IQR(xdata)
#
sqrt(var(xdata))
as.numeric(quantile(xdata,0.75)-quantile(xdata,0.25))
#
sd(ydata)
IQR(ydata)
#
sd(chickwts$weight)
IQR(chickwts$weight)
#
IQR(quakes$mag[quakes$depth<400])
协方差和相关系数
-
协方差:表示两个数值型变量在什么程度上一起变化。正数可能存在正线性关系,负数可能存在负线性关系,等于零不存在线性关系。
-
相关系数:最常用Pearson相关系数,取值[-1,1],越接近0,相关关系越弱。
cov()
计算协方差,cor()
计算相关系数
xdata <- c(2,4.4,3,3,2,2.2,2,4)
ydata <- c(1,4.4,1,3,2,2.2,2,7)
cov(xdata,ydata)
cov(xdata,ydata)/(sd(xdata)*sd(ydata))
cor(xdata,ydata)
#
plot(quakes$mag,quakes$stations,xlab="Magnitude",ylab="No. of stations")
cov(quakes$mag,quakes$stations)
cor(quakes$mag,quakes$stations)
异常值
在实际中,是否剔除奇异值很难确定,现阶段重要的是了解奇异值对分析产生影响,并且在统计研究之前应检查一下原始数据。
均值与奇异值高度相关,所有任何依赖均值的统计量如方差或协方差也会受影响,分位数以及相关统计量不会受到奇异值的影响,这种统计性质成为稳健性。
本章重要代码
mean:算术平均数
median:中位数
table:汇总频数
min,max,range:最小值,最大值,范围
round:四舍五入
quantile:分位数、百分位数
summary:五位数概况法
jitter:绘图中的抖动点
var,sd:方差,标准差
IQR:四分位差
cov,cor:协方差,相关系数