From 0c6de09d984cbb4d31cca81be01044ad22f301cb Mon Sep 17 00:00:00 2001 From: stlp Date: Sat, 20 Mar 2021 21:10:45 -0700 Subject: [PATCH] =?UTF-8?q?Chinese=5Ftranslation=5FBroom=5Fpackage?= =?UTF-8?q?=EF=BC=9A=20ww2563=EF=BC=8C=20yf2579?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Chinese_translation_Broom_package.Rmd | 176 ++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Chinese_translation_Broom_package.Rmd diff --git a/Chinese_translation_Broom_package.Rmd b/Chinese_translation_Broom_package.Rmd new file mode 100644 index 00000000..d93b69cf --- /dev/null +++ b/Chinese_translation_Broom_package.Rmd @@ -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:残差的估计方差的平方根 +