使用 R 的描述性统计解释数据

发布日期:2026-06-25 05:46:02   来源 : 杭州电子商务研究院    浏览量 :16
杭州电子商务研究院 发布日期:2026-06-25 05:46:02  
16

介绍

描述性统计是总结数据的基础。它分为集中趋势测量和离散度测量。集中趋势测量包括平均值、中位数和众数,而变异性测量包括标准差、方差和四分位距。在本指南中,您将学习如何计算这些描述性统计测量并使用它们来解释数据。

我们将首先加载本指南中要使用的数据。

数据

在本指南中,我们将使用包含 600 个观测值和 9 个变量的贷款申请人的虚构数据,如下所述:

  1. Marital_status:申请人是否已婚(“是”)或未婚(“否”)。

  2. Is_graduate:申请人是否是毕业生(“是”)或不是(“否”)。

  3. 收入:申请人的年收入(美元)。

  4. Loan_amount:提交申请的贷款金额(以美元计)。

  5. Credit_score:申请人的信用评分是良好(“满意”)还是不佳(“不满意”)。

  6. 年龄:申请人的年龄。

  7. 性别:申请人是女性(F)还是男性(M)。

  8. authorization_status:贷款申请是否被批准(“是”)或未被批准(“否”)。

  9. 投资:申请人申报的股票和共同基金投资(以美元计)。

让我们首先加载所需的库和数据。

      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)
    
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据