使用 R 的描述性统计解释数据
介绍
描述性统计是总结数据的基础。它分为集中趋势测量和离散度测量。集中趋势测量包括平均值、中位数和众数,而变异性测量包括标准差、方差和四分位距。在本指南中,您将学习如何计算这些描述性统计测量并使用它们来解释数据。
我们将首先加载本指南中要使用的数据。
数据
在本指南中,我们将使用包含 600 个观测值和 9 个变量的贷款申请人的虚构数据,如下所述:
Marital_status:申请人是否已婚(“是”)或未婚(“否”)。
Is_graduate:申请人是否是毕业生(“是”)或不是(“否”)。
收入:申请人的年收入(美元)。
Loan_amount:提交申请的贷款金额(以美元计)。
Credit_score:申请人的信用评分是良好(“满意”)还是不佳(“不满意”)。
年龄:申请人的年龄。
性别:申请人是女性(F)还是男性(M)。
authorization_status:贷款申请是否被批准(“是”)或未被批准(“否”)。
投资:申请人申报的股票和共同基金投资(以美元计)。
让我们首先加载所需的库和数据。
library(readr)
library(dplyr)
library(e1071)
dat <- read_csv("data_de.csv")
glimpse(dat)
输出:
Observations: 600
Variables: 9
$ Marital_status <chr> "Yes", "Yes", "No", "Yes", "Yes", "Yes", "Yes", "Yes", ...
$ Is_graduate <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "No", "No", "Yes", "...
$ Income <int> 306800, 702100, 558800, 534500, 468000, 412700, 257100,...
$ Loan_amount <int> 43500, 104000, 66500, 64500, 135000, 63000, 55500, 2500...
$ Credit_score <chr> "Satisfactory", "Satisfactory", "Satisfactory", "Satisf...
$ approval_status <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",...
$ Age <int> 76, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74,...
$ Sex <chr> "M", "M", "M", "M", "M", "M", "F", "M", "F", "M", "M", ...
$ Investment <int> 199420, 456365, 363220, 347425, 304200, 268255, 167115,...
其中五个变量是分类变量(标记为“chr”),其余四个变量是数字变量(标记为“int”)。
集中趋势测量
集中趋势测量描述数据的中心,通常用平均值、中位数和众数表示。
意思是
平均值表示数据的算术平均值。计算方法是将数值相加,然后除以观测值的数量。在 R 中, mean()函数用于计算平均值。如果变量包含缺失值,则必须将参数na.rm=TRUE添加到 mean 函数中,该函数现在将在计算平均值时忽略缺失值。
下面的代码行使用'apply函数来计算数据中数值变量的平均值。参数c(3,4,7,9)根据数值变量在数据中的位置来选择它们。
从输出结果中,我们可以推断出申请人的平均年龄为 49.5 岁,平均年收入为 705,541 美元,平均投资额为 161,066 美元。输出结果还显示,申请的平均贷款额为 323,793 美元。
sapply(dat[,c(3,4,7,9)], mean)
输出:
Income Loan_amount Age Investment
705541.33 323793.67 49.45 161066.97
也可以计算数据中变量的平均值,如下所示。
print(mean(dat$Income))
print(mean(dat$Loan_amount))
输出:
1] 705541.3
[1] 323793.7
中位数
数据中变量最中间的值是其中值。下面的代码行使用 median ()函数打印数据中数值变量的中值。
sapply(dat[,c(3,4,7,9)], median)
输出:
Income Loan_amount Age Investment
508350 76000 51 106740
从输出结果中,我们可以推断出申请人的平均年龄为 51 岁,平均年收入为 508,350 美元,申请的贷款额中位数为 76,000 美元。
还可以计算数据中某个变量的中值,如下面的前两行代码所示。
print(median(dat$Income))
print(median(dat$Loan_amount))
输出:
1] 508350
[1] 76000
模式
众数表示数据中变量出现频率最高的值,是唯一可以用于数值变量和分类变量的集中趋势测量。
为了在 R 中找到模式,我们需要将五个“chr”变量转换为“factor”变量。这五个变量分别是“Marital_status”、“Is_graduate”、“Credit_score”、“approval_status”和“Sex”。
下面的第一行代码创建了一个包含数据集中上述变量的列列表。第二行使用lapply函数将存储在“names”中的这些变量转换为因子变量。第三行提供有关数据的信息。
names <- c(1,2,5,6,8)
dat[,names] <- lapply(dat[,names] , factor)
glimpse(dat)
输出:
Observations: 600
Variables: 9
$ Marital_status <fct> Yes, Yes, No, Yes, Yes, Yes, Yes, Yes, No, No,...
$ Is_graduate <fct> Yes, Yes, Yes, Yes, Yes, No, No, Yes, Yes, Yes...
$ Income <int> 306800, 702100, 558800, 534500, 468000, 412700...
$ Loan_amount <int> 43500, 104000, 66500, 64500, 135000, 63000, 55...
$ Credit_score <fct> Satisfactory, Satisfactory, Satisfactory, Sati...
$ approval_status <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Y...
$ Age <int> 76, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74...
$ Sex <fct> M, M, M, M, M, M, F, M, F, M, M, M, F, F, F, M...
$ Investment <int> 199420, 456365, 363220, 347425, 304200, 268255...
输出显示所有五个变量都已转换为“因子”变量。现在,我们可以使用下面的代码行打印每个变量的标签频率。
summary(dat[,c(1,2,5,6,8)])
输出:
Marital_status Is_graduate Credit_score approval_status Sex
No :209 No :130 Not _satisfactory:128 No :190 F:111
Yes:391 Yes:470 Satisfactory :472 Yes:410 M:489
变量“婚姻状况”的众数标签为“是”,表示大多数申请人已婚。同样,变量“性别”的众数标签为“M”,表示大多数申请人为男性。
还可以计算数据中变量的众数,如下面的代码行所示。
table(dat$Credit_score)
输出:
Not _satisfactory Satisfactory
128 472
离散度测量
分布被拉伸或压缩的程度由离散度来衡量,也称为变异性、散布或扩散。最常用的离散度度量是标准差、方差和四分位距。
标准差
标准差是一种用来量化一组数据值与其平均值之间的差异的度量。变量的标准差较低表明数据点趋向于接近其平均值,反之亦然。它还用于检查数据是否具有正态(或接近正态)分布。下面的代码行打印了数据中所有数值变量的标准差。
sapply(dat[,c(3,4,7,9)], sd)
输出:
Income Loan_amount Age Investment
711421.81415 724293.48078 14.72851 203058.62713
在解释标准差值时,重要的是要结合平均值来理解它们。例如,变量“收入”和“年龄”的单位不同,因此,仅根据标准差来比较这两个变量的分散性是不正确的。这一点需要牢记。
也可以计算变量的标准差,如下面的代码行所示。
print(sd(dat$Income))
print(sd(dat$Loan_amount))
输出:
1] 711421.8
[1] 724293.5
方差
方差是标准差的平方和随机变量与自身的协方差。下面的代码行打印数据集中所有数值变量的方差。方差的解释类似于标准差的解释。
sapply(dat[,c(3,4,7,9)], var)
输出:
Income Loan_amount Age Investment
5.061210e+11 5.246010e+11 2.169290e+02 4.123281e+10
四分位间距
四分位距 (IQR) 计算为上四分位数 (第 75 百分位数) 与下四分位数 (第 25 百分位数) 之间的差值。可以使用 IQR ()函数计算 IQR,如下面的代码行所示。
sapply(dat[,c(3,4,7,9)], IQR)
输出:
Income Loan_amount Age Investment
381125 69250 25 89315
偏斜度
偏度是衡量实值随机变量相对于其均值的对称性(或缺乏对称性)的指标。偏度值可以是正值、负值或未定义。在完全对称的分布中,均值、中位数和众数都具有相同的值。但是,我们数据中的变量并不对称,导致集中趋势的值不同。
下面的代码行打印所有数值变量的偏度值。
skew_val <- apply(dat[,c(3,4,7,9)], 2, skewness)
print(skew_val)
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~