网站后台 刷新,网站改版降权,体育类网站模板,如何做网站营销一、描述性统计量
借助R语言内置的airquality数据集进行简单地演示#xff1a;
1、集中趋势#xff1a;均值和中位数
head(airquality)
# 求集中趋势
mean(airquality$Ozone, na.rmT) # 求均值
median(airquality$Ozone, na.rmT) # 求中位数 2、众数
众数#xff08;mod…一、描述性统计量
借助R语言内置的airquality数据集进行简单地演示
1、集中趋势均值和中位数
head(airquality)
# 求集中趋势
mean(airquality$Ozone, na.rmT) # 求均值
median(airquality$Ozone, na.rmT) # 求中位数 2、众数
众数mode是指在一组数据中出现频率最高的值。尽管R语言本身没有直接提供计算众数的内置函数但可以使用其他函数和方法来计算众数。
# 假设Temp是离散数据
which.max(table(airquality$Temp))
# 假设Temp是连续数据:density$x[which.max(density$y)]
Density - density(airquality$Temp)
Density 3、离散趋势
# 先求极差最大值-最小值
max(airquality$Ozone, na.rmT) - min(airquality$Ozone, na.rmT)
# 选取Ozone中所有非空元素组成的子集
Ozone.rm.na - with(airquality, Ozone[is.na(Ozone)F])
# 求平均差
sum(abs(Ozone.rm.na - mean(Ozone.rm.na))) / length(Ozone.rm.na)
# 求标准差
sd(airquality$Ozone, na.rmT)
# 求方差
var(airquality$Ozone, na.rmTRUE)
# 求变异系数
with(airquality, sd(Ozone, na.rmT) / mean(Ozone, na.rmT) * 100) 4、峰度和偏度
需要先安装moments扩展包。
library(moments)
kurtosis(airquality$Ozone, na.rmT) # 峰度
skewness(airquality$Ozone, na.rmT) # 偏度 5、百分位数
quantile(airquality$Ozone, probsseq(0,1,by0.1), na.rmTRUE) 6、Turkey五数
最小值、25百分位数、中位数、75百分位数、最大值
fivenum(airquality$Ozone, na.rmTRUE) 7、数量
length(airquality$Month)
table(airquality$Month) 8、算数截断平均数
mean()函数中有一个参数trim当指定trim时(0~0.5的数)表示先在数据两端各自截断相应比例的最大值和最小值再计算平均数此平均数就叫算数截断平均数它更能有效地代表数据的集中趋势。
mean(airquality$Ozone, na.rmT, trim0.2) 二、列联表
table()函数
使用table()函数创建列联表时只需要将相应的变量作为参数写进函数中即可。
当列联表多于二维度时可以使用ftable()函数使其呈现得更紧凑。
如下以vcd扩展包中的Arthritis数据集进行演示
二维度列联表
library(vcd)
head(Arthritis)
# 二维度列联表
table.2D - table(Arthritis$Treatment, Arthritis$Sex)
table.2D三维度列联表
# 三维度列联表
table.3D - table(Arthritis$Treatment, Arthritis$Sex, Arthritis$Improved)
table.3D ftable()函数
更紧凑的呈现方式
ftable(table.3D) xtabs()函数
也可以使用xtabs()函数创建列联表。此函数的特点是以公式而非变量的形式传递进函数中。
二维度列联表
xtabs(~ Treatment Sex, dataArthritis) 三维度列联表
xtabs(~ Treatment Sex Improved, dataArthritis) prop.table()函数
上述的table()函数和xtabs()函数得到的是频数表可以使用prop.table()函数得到频率表此函数通过margins参数指定频率分母的维度默认将所有数值相加作为分母。
# 默认将所有数值相加作为分母
prop.table(table.2D)
# 按行计算频率
prop.table(table.2D, margin1)
# 按列计算频率
prop.table(table.2D, margin2) addmargins()函数
此函数可以在列联表中加入边际边默认边际边求和也可以通过FUN参数指定其它计算。 边际边是边际频数marginal frequencies的简称它指的是列联表中行总和与列总和。 vcd扩展包中的mar_table()函数也可以同时加入按行或列求和的边际边。
按行和列求和
# 按行求和
addmargins(table.2D, margin1)
# 按列求和
addmargins(table.2D, margin2) 同时求行和列的和
# 分别按行和列求和
addmargins(table.2D, margin1:2)mar_table(table.2D) 按列求平均
addmargins(table.2D, margin2, FUNmean) margin.table()函数
margin.table(table.2D, margin1)
margin.table(table.2D, margin2) 三、同时输出多个统计量
用ggplot2包中的diamonds数据集做演示
此数据集总共只有10列数据。
library(ggplot2)
head(diamonds) 1、summary()函数
此函数R语言内置的统计量集合函数。当数据为数值时它输出最小值、第1四分位数、中位数、平均数、第3四分位数和最大值当数据为因子或类别时它输出各个水平或类别的数量。
summary(diamonds) 2、describe()函数
psych扩展包的describe()函数输出的结果更丰富包括数据量、均值、标准差、中位数、截断均值默认截断比例为0.1中位数绝对离差、最小值、最大值、全距、偏度、峰度和标准误差。
library(psych)
describe(diamonds) 3、stat.desc()函数
pastecs扩展包中的stat.desc()函数可以通过设置不同的参数来调整输出的统计量。 basicTRUE默认计算观测值、空值和缺失值的数量计算最大值、最小值、值域以及求和 descTRUE计算中位数、平均数、均值标准误差、95%的置信区间、方差、标准差以及变异系数 normTRUE计算正态分布的统计量如峰度、偏度、显著程度。 library(pastecs)
options(digits3) # 保留3位小数
stat.desc(diamonds, basicFALSE, descFALSE)