Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions Chinese_translation_Broom_package.Rmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# Chinese translation of broom package

Wenjie Wei and Yinqiu Feng

```{r}
library(broom)
```

## 序言
broom包可以将R语言中内置函数(例如lm,nls或t.test)的混乱输出转换为整齐的tibbel(一种R特有的数据框)。\

broom 是一种可以将不整齐的估测结果调整为我们想要的整齐数据的工具。它以3种S3类函数为中心,每种方法都采用R统计函数(lm,t.test,nls等等)产生的对象并转换结果至tibble。设计broom是为了和Hadley的dplyr包一起使用。\

broom应与reshape2和tidyr之类的包区分开来,这些包会将数据帧重新排列和重塑为不同的形式。这些软件包在整理好的的数据分析中执行关键任务,但专注于将一种特定格式的数据帧转换为另一种格式。相反,broom被设计为采用非表格数据格式的格式,并将其转换为整洁的数据框。\

整理模型输出不是一门精准的学科,它基于数据科学家对于从整洁的数据分析中得出的各种值(例如,估计值,测试统计数据和p值)进行判断的期望。您可能会丢失所需的原始对象中的某些信息,或者保留了比所需更多的信息。如果您认为应该更改模型的整理输出,或者缺少所需的S3类的整理功能,欢迎提出问题或需求。\

## 整理函数
这个软件包提供了三种S3类函数,可以进行三种不同的整理:\

tidy:绘制tibble,总结该模型的统计结果。这包括回归中每个项的系数和p值,聚类应用中的每个集群信息或多测试功能的每个测试信息。\

augment:在建模的原始数据中增加列数。这包括预测,残差和聚类分配。

glance:建立一行关于模型的精简总结。它通常包含诸如R方,调整R方和残余标准误差之类的值,这些值会针对整个模型计算一次。\

请注意,某些类可能只定义了其中一种或两种方法。\
作为说明性示例,我们来对R内置的mtcars数据集进行线性拟合。\
```{r}
lmfit <- lm(mpg ~ wt, mtcars)
lmfit
```

```{r}
summary(lmfit)
```
如果您只想看下总结数据,到这就已足够。但是,将其转换为包含所有相同信息的表格数据,以便您可以将其与其他模型结合或进行进一步的分析并非易事。您必须执行coef(summary(lmfit))以获得系数矩阵,术语仍存储在行名称中,并且列名称与其他包不一致(例如与p.value相比,Pr(> | t |)不一致)。\

现在,您可以在fit上用broom包里的tidy函数:
```{r}
tidy(lmfit)
```
这为您提供了表格数据表示形式。请注意,行名称已移至称为term的列中,并且这些列名称简单且一致(可以使用$进行访问)。\

您可能对回归中每个原始点的拟合值和残差感兴趣,而不是查看系数。为此,请使用augment函数,它会使用来自模型的信息来扩充原始数据:
```{r}
augment(lmfit)
```
注意,每个新列都以a开头。 (以避免覆盖任何原始列)\

最后,我们为整个回归模型计算了一些汇总统计量,例如R方和F统计量。这些可以通过glance函数访问:
```{r}
glance(lmfit)
```
关于tidy,augment和glance函数的区别,可以指路k-means vignette https://www.tidymodels.org/learn/statistics/k-means/

## 其他案例

### 广义线性模型和非线性模型

这些功能同样适用于glm的输出结果:
```{r}
glmfit <- glm(am ~ wt, mtcars, family = "binomial")
tidy(glmfit)
```
```{r}
augment(glmfit)
```
```{r}
glance(glmfit)
```
注意,通过glance计算的统计信息对于glm模型与lm模型的不同(例如,偏差而不是R方)\

这些函数还可以用于其他拟合,例如非线性模型(nls):
```{r}
nlsfit <- nls(mpg ~ k / wt + b, mtcars, start = list(k = 1, b = 0))
tidy(nlsfit)
```
```{r}
augment(nlsfit, mtcars)
```
```{r}
glance(nlsfit)
```
### 假设检验

tidy函数也可以应用于htest对象,例如最近很火的内置函数(如t.test,cor.test和wilcox.test)输出的对象。
```{r}
tt <- t.test(wt ~ am, mtcars)
tidy(tt)
```
在一些情况下,列数可能较少(例如,没有置信区间):
```{r}
wt <- wilcox.test(wt ~ am, mtcars)
tidy(wt)
```
由于tidy输出结果已经只有一行,因此glance返回相同的输出:
```{r}
glance(tt)
```
```{r}
glance(wt)
```
因为没有必要,我们仅针对卡方检验定义了扩充方法,对于其他检验,假设检验产生关于每个初始数据点的输出,则没有其他意义。
```{r}
chit <- chisq.test(xtabs(Freq ~ Sex + Class,
data = as.data.frame(Titanic)))
tidy(chit)
```
```{r}
augment(chit)
```
## 规则
为了保持一致性,我们制定了一些有关返回数据结构的规则。

### 全部函数

1. tidy, augment 和 glance的输出一定是tibble。

2. 所有的输出都没有行名。这样就可以确保用户将输出的tibble与整理好的数据组合在一起,同时不用担心丢失信息(因为R语言里行名不能有重复)。

3. 有一些列的名称保持一致,以便可以在不同模型之间进行组合,从而输出我们所期望的内容(避免R每次都会问“是pval还是PValue?”)。下面这些示例没有包括所有可能的列名,也不是所有的输出都包含所有这些列,有的输出甚至不包含任何这些列。仅供参考。

### tidy函数

1. Tidy的每一行输出都指代一些定义明确的概念,例如一个线性回归公式,一项测试或一个类别。虽然在不同模型里的含义不同,但可以比较明显地看出。每行输出并不能指代初始数据点(这个可以用augment函数)。

2. 常见的列名称包括:

• Term:指正在估计的回归或模型中的术语。

• p.value:用来匹配R的内置统计信息包中的功能(代替pvalue,PValue或pval)

• statistic:一种测试统计信息,通常是用于计算p值的统计信息。将这些内容组合到许多子组中来执行(例如自举假设测试法)

• estimate 估计值

• conf.low :estimate的置信区间的下限

• conf.high :estimate的置信区间的上限

• df:自由度

### augment函数

1. augment(model, data)将列添加到原始数据。

• 如果缺少data参数,可以用augment函数从模型中重建数据(有的时候实现不了,而且通常不会包含模型中未使用的列)。

2. augment输出中的每一行要与原始数据中的对应行匹配。如果原始数据有行名,augment需要将其转换成名为.rownames的列。

3. 新添加的列名以 . 开头。以避免覆盖原始数据中的列。
常见的列名称包括:

• .fitted 拟合值:与数据相同规模的预测值。

• .resid 残差:实际y值减去拟合值

• .cluster 集群:群集分配

### glance函数

1. glance只能返回一个单行tibble。

• 唯一的例外是glance(NULL)返回一个空的tibble。

2. 我们不会在输出里添加建模函数的参数。例如,glm的输出不需要包含family这个词,因为用户调用glm而不是建模函数本身。

3. 常见的列名称包括:

• r.squared :由模型解释的方差

• adj.r.squared:根据自由度调整方差

• sigma:残差的估计方差的平方根