Skip to main content
 首页 » 编程设计

R语言实现单变量分析教程

2022年07月19日140zhujiabin

单变量分析是理解单个变量的数值分布情况,与之相对的有双变量分析和多变量分析。

加载示例数据

因为csv文件中年收入字段有千分位分隔符,所以先定义转换函数。

setClass("num.with.commas") 
setAs("character", "num.with.commas",  
        function(from) as.numeric(gsub(",", "", from) ) ) 
 
data <- read.csv("csv/data.csv",colClasses=c('numeric','numeric','num.with.commas','numeric')) 
data 
 
#    HouseholdID HouseholdSize AnnInCome NumberOfPets 
# 1            1             2    37,000            0 
# 2            2             4    49,000            0 
# 3            3             4    58,000            1 
# 4            4             1    68,000            3 
# 5            5             3    61,000            2 
# 6            6             5    64,000            2 
# 7            7             6    79,000            1 
# 8            8             4    89,000            1 
# 9            9             7   104,000            1 
# 10          10             2    95,000            0 
 

我们可以对上面任何一列进行单变量分析,以获得数据分布的更深理解。举例我们选择第二列 HouseholdSize 进行分析,主要包括三类分析:概要统计、频率分布、图表可视化。

概要统计

概要统计是单变量分析中最常用的方法。主要包括两类概要统计:

  • 衡量中心趋势

描述数据集中心的位置,包括平均值和中位数。

mean(data$HouseholdSize) 
# 3.8 
 
median(data$HouseholdSize) 
# 4 
  • 衡量离散趋势

描述数值在数据集中的分布情况,包括范围、四分位范围、标准差和方差。

range_info <- max(data$HouseholdSize) - min(data$HouseholdSize) 
range_info 
# 6 
 
# 获得最小值 和 最大值  
range(data$HouseholdSize) 
# 1 7 
 
# IQR = Q3 – Q1 
# 中间50% 数据范围 
IQR(data$HouseholdSize) 
# 2.5 
 
sd(data$HouseholdSize) 
# 1.87 
 
# 最小 Q1 中位数 Q3 最大值 
fivenum(data$HouseholdSize) 
# 1 2 4 5 7 
 
# 计算分位数 
quantile(data$HouseholdSize) 
 
#   0%  25%  50%  75% 100%  
# 1.00 2.25 4.00 4.75 7.00  
 
summary(data$HouseholdSize) 
 
# Min. 1st Qu.  Median    Mean 3rd Qu.    Max.  
# 1.00    2.25    4.00    3.80    4.75    7.00  

频率分布

执行单变量分析的另一种方法是创建频率分布,该分布描述不同值在数据集中出现的频率,通常用于分析因子变量。

table(data$HouseholdSize) 
 
# 1 2 3 4 5 6 7  
# 1 2 1 3 1 1 1  
 

结果显示2有连个, 4 有三个,其他数有1个。

图表分析

通过图表以可视化方式展示变量的数据分布情况。

常用图形包括:

  • 箱线图

箱线图可以同时展示5个数的概要信息,最小Q1,中位数,Q3,最大值

boxplot(data$HouseholdSize, main="Boxplot of HouseHoldSize") 

在这里插入图片描述

  • 直方图

直方图用于垂直条形图展示频率,通常用于显示数据分布。

hist(data$HouseholdSize, main="Hist of HouseHoldSize") 

在这里插入图片描述

  • 密度曲线图

密度曲线表示数据集中值分布曲线。可视化方式展示分布形状,是否包括多峰,偏度情况。

 
holdSize_density <- density(data$HouseholdSize) 
plot(holdSize_density, main = "density of hold size") 
 
 

在这里插入图片描述

  • 饼图

饼图展示每个数值占用的百分比。

pie(data$HouseholdSize, main = "Distribution of HoldSize") 

在这里插入图片描述

通过不同图形可视化,可以更方便观测数值的分布情况。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/124239072
阅读延展