# 基本统计分析 {#task-03}

![](./image/task03_structure.png){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()
```
