151 lines
4.3 KiB
Plaintext
151 lines
4.3 KiB
Plaintext
# 基本统计分析 {#task-03}
|
||
|
||
{width=100%}
|
||
|
||
|
||
## 准备工作 {-}
|
||
|
||
如果没有相关的包,则使用`install.packages('package_name')`进行安装以下包。
|
||
```{r}
|
||
library(pastecs)
|
||
library(psych)
|
||
library(ggm)
|
||
```
|
||
|
||
读取数据,使用H1N1流感数据集和波士顿房价数据集。
|
||
```{r}
|
||
flu <- read.table("./datasets/h1n1_flu.csv", header = TRUE, sep = ",")
|
||
housing <- read.csv("./datasets/BostonHousing.csv", header = TRUE)
|
||
```
|
||
|
||
## 多种方法获取描述性统计量
|
||
|
||
### 基础方法
|
||
|
||
通过summary计算数值型变量的最大值、最小值、分位数以及均值,类别变量计算频数统计。
|
||
```{r}
|
||
summary(flu[c("household_children", "sex")])
|
||
```
|
||
```{r}
|
||
summary(flu[c("h1n1_concern", "h1n1_knowledge")])
|
||
```
|
||
|
||
|
||
通过 sapply() 计算描述性统计量,先定义统计函数,在进行聚合计算。
|
||
```{r}
|
||
mystats <- function(x, na.omit = FALSE) {
|
||
if (na.omit) {
|
||
x <- x[!is.na(x)]
|
||
}
|
||
m <- mean(x)
|
||
n <- length(x)
|
||
s <- sd(x)
|
||
skew <- sum((x - m)^3 / s^3) / n
|
||
kurt <- sum((x - m)^4 / s^4) / n - 3
|
||
return(c(n = n, mean = m, stdev = s, skew = skew, kurtosis = kurt))
|
||
}
|
||
|
||
sapply(flu[c("h1n1_concern", "h1n1_knowledge")], mystats)
|
||
```
|
||
|
||
### 拓展包方法
|
||
|
||
通过pastecs包中的 stat.desc()函数计算描述性统计量,可以得到中位数、平均数、平均数的标准误、平均数置信度为95%的置信区间、方差、标准差以及变异系数。
|
||
```{r}
|
||
stat.desc(flu[c("household_children", "sex")])
|
||
```
|
||
通过psych包中的describe()计算描述性统计量。
|
||
```{r}
|
||
describe(flu[c("household_children", "sex")])
|
||
```
|
||
|
||
## 分组计算描述性统计
|
||
|
||
### 基础方法
|
||
|
||
#### 使用aggregate()分组获取描述性统计 {-}
|
||
|
||
1. 分组计算不同性别收入贫困计数。
|
||
2. 是否属于查尔斯河的房价中位数平均值。
|
||
```{r}
|
||
aggregate(flu[c("income_poverty")], by = list(sex = flu$sex), length)
|
||
aggregate(housing$medv, by = list(medv = housing$chas), FUN = mean)
|
||
```
|
||
|
||
#### 使用 by() 分组计算描述性统计量 {-}
|
||
```{r}
|
||
by(flu[c("income_poverty", "sex")], flu$sex, length)
|
||
```
|
||
|
||
## 频数表和列联表
|
||
```{r}
|
||
table(flu$sex)
|
||
```
|
||
|
||
## 相关
|
||
|
||
### 相关的类型
|
||
|
||
#### Pearson、Spearman和Kendall相关 {-}
|
||
|
||
R可以计算多种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格(polychoric)相关系数和多系列(polyserial)相关系数。
|
||
1. 计算房价数据的相关系数,默认是Pearson相关系数。
|
||
```{r}
|
||
cor(housing)
|
||
```
|
||
|
||
2. 指定计算Spearman相关系数
|
||
```{r}
|
||
cor(housing, method = "spearman")
|
||
```
|
||
|
||
3. 城镇人均犯罪率与房价的相关系数
|
||
```{r}
|
||
x <- housing
|
||
y <- housing[c("medv")]
|
||
cor(x, y)
|
||
```
|
||
|
||
#### 偏相关 {-}
|
||
|
||
偏相关是指在控制一个或多个定量变量时,另外两个定量变量之间的相互关系。使用ggm 包中的 pcor() 函数计算偏相关系数。
|
||
|
||
### 相关性的显著性检验
|
||
|
||
```{r}
|
||
cor.test(housing[, c("crim")], housing[, c("medv")])
|
||
```
|
||
|
||
## 方差分析
|
||
方差分析(ANOVA)又称“变异数分析”或“F检验”,用于两个及两个以上样本均数差别的显著性检验。
|
||
|
||
### 单因素方差分析
|
||
从输出结果的F检验值来看,p<0.05比较显著,说明是否在查尔斯河对房价有影响。
|
||
```{r}
|
||
fit <- aov(housing$medv ~ housing$chas)
|
||
summary(fit)
|
||
```
|
||
|
||
### 多因素方差分析
|
||
构建多因素方差分析,查看因子对房价的影响是否显著。
|
||
```{r}
|
||
fit <- aov(housing$medv ~ housing$crim * housing$b)
|
||
summary(fit)
|
||
```
|
||
|
||
|
||
## 本章作者 {-}
|
||
|
||
__杨佳达__
|
||
|
||
> 数据挖掘师,Datawhale成员,目前在国内某第三方数据服务公司做数据分析挖掘及数据产品
|
||
> https://github.com/yangjiada
|
||
|
||
## 关于Datawhale {-}
|
||
|
||
Datawhale 是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结。 本次数据挖掘路径学习,专题知识将在天池分享,详情可关注 Datawhale:
|
||
|
||
```{r, echo = FALSE}
|
||
insert_logo()
|
||
```
|