使用 R 的定量技术探索数据
介绍
探索性数据分析是数据科学周期中最耗时但最重要的部分之一。在本指南中,您将学习 R 中可用的使用定量方法执行探索性数据分析的技术。
让我们从一些数据开始。
数据
在本指南中,我们将使用一个虚构的贷款申请人数据集,其中包含 200 个观测值和 10 个变量,如下所述:
Marital_status:申请人是否已婚(“是”)或未婚(“否”)
Is_graduate:申请人是否为毕业生(“是”)或不是(“否”)
收入:申请人的年收入(美元)
Loan_amount:提交申请的贷款金额(美元)
Credit_score:申请人的信用评分是好(“好”)还是不好(“坏”)
Approval_status:贷款申请是否被批准(“是”)或未被批准(“否”)
年龄:申请人的年龄(岁)
性别:申请人是男性(“M”)还是女性(“F”)
投资额:申请人申报的股票和共同基金投资总额(美元)
work_exp: 工作经验(年数)
让我们首先加载所需的库和数据。
library(plyr)
library(readr)
library(ggplot2)
library(GGally)
library(dplyr)
library(mlbench)
dat <- read_csv("data_test.csv")
glimpse(dat)
输出:
Observations: 200
Variables: 10
$ Marital_status <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes,...
$ Is_graduate <fct> No, No, No, No, No, No, No, No, No, No, No, No, Yes, Y...
$ Income <int> 72000, 64000, 80000, 76000, 72000, 56000, 48000, 72000...
$ Loan_amount <int> 70500, 70000, 275000, 100500, 51500, 69000, 147000, 61...
$ Credit_score <fct> Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad,...
$ approval_status <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes,...
$ Investment <int> 117340, 85340, 147100, 65440, 48000, 136640, 160000, 9...
$ gender <fct> Female, Female, Female, Female, Female, Female, Female...
$ age <int> 34, 34, 33, 34, 33, 34, 33, 33, 33, 33, 34, 33, 33, 33...
$ work_exp <dbl> 9.0, 8.0, 10.0, 9.5, 9.0, 7.0, 6.0, 9.0, 9.0, 11.0, 9....
输出显示数据集有五个分类变量(标记为“chr”)、四个整数变量(标记为“int”)和一个数字变量“work_exp”。我们将使用下面的代码行将分类变量转换为“factor”类型。
names <- c(1,2,5,6,8)
dat[,names] <- lapply(dat[,names] , factor)
glimpse(dat)
输出:
Observations: 200
Variables: 10
$ Marital_status <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes,...
$ Is_graduate <fct> No, No, No, No, No, No, No, No, No, No, No, No, Yes, Y...
$ Income <int> 72000, 64000, 80000, 76000, 72000, 56000, 48000, 72000...
$ Loan_amount <int> 70500, 70000, 275000, 100500, 51500, 69000, 147000, 61...
$ Credit_score <fct> Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad, Bad,...
$ approval_status <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes,...
$ Investment <int> 117340, 85340, 147100, 65440, 48000, 136640, 160000, 9...
$ gender <fct> Female, Female, Female, Female, Female, Female, Female...
$ age <int> 34, 34, 33, 34, 33, 34, 33, 33, 33, 33, 34, 33, 33, 33...
$ work_exp <dbl> 9.0, 8.0, 10.0, 9.5, 9.0, 7.0, 6.0, 9.0, 9.0, 11.0, 9....
现在让我们使用各种定量技术进行探索性分析。
计数、频率和比例
基本分析是计算简单的计算,例如计数、频率和比例。summary()函数可用于执行此任务。
summary(dat)
输出:
Marital_status Is_graduate Income Loan_amount Credit_score
Divorced:60 No : 84 Min. :32000 Min. : 12200 Bad :163
No :76 Yes:116 1st Qu.:56000 1st Qu.: 61375 Good: 37
Yes :64 Median :64000 Median : 77250
Mean :62750 Mean : 349278
3rd Qu.:72000 3rd Qu.: 144750
Max. :88000 Max. :6670000
approval_status Investment gender age work_exp
No :149 Min. : 6000 Female:178 Min. :32.00 Min. : 4.000
Yes: 51 1st Qu.: 81945 Male : 22 1st Qu.:33.00 1st Qu.: 7.000
Median : 114800 Median :34.00 Median : 8.000
Mean : 169694 Mean :33.98 Mean : 7.844
3rd Qu.: 173492 3rd Qu.:34.00 3rd Qu.: 9.000
Max. :3466580 Max. :49.00 Max. :11.000
我们可以从上面的输出推断出以下内容:
1:所有变量中均无“NA”或缺失值。这证实所有变量的观测值数量为 200。
显示数值变量的汇总统计数据。例如,申请人的年龄范围为 32 至 49 岁。
对于定性变量,显示相应变量中每个标签的频率。例如,目标变量“approval_status”的频率表显示,在 200 名申请人中,有 149 人的贷款申请被拒绝,其余的则被接受。
比例
处理频率表时,通常需要计算比例。在我们的例子中,我们可能想要计算分类变量(例如“approval_status”)的比例。下面的代码行创建了一个频率表和变量“approval_status”的标签比例。
table1 = table(dat$approval_status)
prop.table(table1)
输出:
No Yes
0.745 0.255
输出显示,约 75% 的申请者被拒绝,而录取率约为 25%。这也可以扩展到两个或更多变量。例如,如果我们想分析信用评分中批准申请的百分比,这也是可能的。
下面的第一行代码创建双向频率表,而第二行打印单元格百分比,这意味着所有单元格的总和将等于一。正如预期的那样,大多数信用评分较低的申请人的申请都被拒绝了。
prop.table函数还可用于生成行或列的百分比。下面的第三行和第四行代码创建了一个比例表,分别给出行和列的百分比。
table2 = table(dat$approval_status, dat$Credit_score)
prop.table(table2)
prop.table(table2, 1)
prop.table(table2, 2)
输出:
Bad Good
No 0.700 0.045
Yes 0.115 0.140
Bad Good
No 0.93959732 0.06040268
Yes 0.45098039 0.54901961
Bad Good
No 0.8588957 0.2432432
Yes 0.1411043 0.7567568
描述统计
在上一节中,我们进行了初步的数据分析。然而,任何定量分析如果没有描述性统计数据都是不完整的。它们是数据科学的基础,被定义为总结给定数据的度量。它们包括集中趋势度量(例如平均值、中位数和众数)和离散度量(例如标准差、方差和范围)。
summary ()函数提供了部分统计数据,但不是全部。R 中还有许多其他函数可用于识别这些指标。fivenum ()函数就是其中之一;它返回最小值、下限、中位数、上限和最大值。但是,这个函数有一个限制,即它对因子没有意义。
fivenum(dat$Income)
输出:
1] 32000 56000 64000 72000 88000
除了summary和fivenum函数之外,psych包也是一个更好的替代方案,它提供了几个定量指标,包括标准差、偏度和范围。
下面的第一行代码加载库,而第二行使用库中的“describe”函数打印所有变量的定量测量。
library(psych)
describe(dat)
输出:
vars n mean sd median trimmed mad min
Marital_status* 1 200 2.02 0.79 2 2.02 1.48 1
Is_graduate* 2 200 1.58 0.49 2 1.60 0.00 1
Income 3 200 62750.00 10638.77 64000 63062.50 11860.80 32000
Loan_amount 4 200 349278.00 741366.91 77250 170134.38 35211.75 12200
Credit_score* 5 200 1.19 0.39 1 1.11 0.00 1
approval_status* 6 200 1.25 0.44 1 1.19 0.00 1
Investment 7 200 169693.55 267134.29 114800 130429.69 65590.22 6000
gender* 8 200 1.11 0.31 1 1.01 0.00 1
age 9 200 33.98 1.76 34 33.71 1.48 32
work_exp 10 200 7.84 1.33 8 7.88 1.48 4
max range skew kurtosis se
Marital_status* 3 2 -0.03 -1.40 0.06
Is_graduate* 2 1 -0.32 -1.91 0.03
Income 88000 56000 -0.25 0.08 752.27
Loan_amount 6670000 6657800 4.53 28.55 52422.56
Credit_score* 2 1 1.61 0.60 0.03
approval_status* 2 1 1.12 -0.76 0.03
Investment 3466580 3460580 9.71 113.87 18889.25
gender* 2 1 2.47 4.14 0.02
age 49 17 4.63 31.04 0.12
work_exp 11 7 -0.25 0.08 0.09
变量“Loan_amount”和“Investment”的高偏度值表明这些变量不是正态分布的。
相关性
我们可以使用语法cor(X, Y) 或 rcorr(X, Y)来生成两个数字列之间的相关性。
cor(dat$Income, dat$Investment)
输出:
1] 0.06168653
0.06 的数值表示两个变量之间的相关性较弱。
汇总数据
在定量分析中,我们经常需要根据几个变量来汇总数据。这可以通过dplyr包中的summary()函数轻松完成。下面的代码总结并打印三个数值变量的平均值。
dat %>%
summarize(avg_income = mean(Income,na.rm=TRUE),
avg_loan = mean(Loan_amount,na.rm=TRUE),
avg_age = mean(age,na.rm=TRUE))
输出:
A tibble: 1 x 3
avg_income avg_loan avg_age
<dbl> <dbl> <dbl>
1 62750 349278 34.0
以上输出显示,申请人的平均年龄为 34 岁,平均收入为 62,750 美元。申请的平均贷款金额为 34,9278 美元。
分组变量
分析数据的另一种有用方法是使用group_by()函数,该函数根据单列或多列对输入数据进行分组,然后操作每个这样的数据组。下面的代码行按变量“approval_status”对数据框进行分组,然后计算每个标签的平均收入。
dat %>%
group_by(approval_status) %>%
summarise(mean_inc = mean(Income))
输出:
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~