单变量分析是理解单个变量的数值分布情况,与之相对的有双变量分析和多变量分析。
加载示例数据
因为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")
通过不同图形可视化,可以更方便观测数值的分布情况。
|