From 2f0eb87eaa6d2cfa37f36e0ac9bc0f5dce18fc38 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 22 Jun 2023 11:48:39 +0800 Subject: [PATCH] RP @tanloong https://linux.cn/article-15932-1.html --- ...18 The Functions in the R Stats Package.md | 78 +++++++++++-------- 1 file changed, 47 insertions(+), 31 deletions(-) rename {translated/tech => published}/20220818 The Functions in the R Stats Package.md (63%) diff --git a/translated/tech/20220818 The Functions in the R Stats Package.md b/published/20220818 The Functions in the R Stats Package.md similarity index 63% rename from translated/tech/20220818 The Functions in the R Stats Package.md rename to published/20220818 The Functions in the R Stats Package.md index 9e9707404b..4c2d96a324 100644 --- a/translated/tech/20220818 The Functions in the R Stats Package.md +++ b/published/20220818 The Functions in the R Stats Package.md @@ -3,15 +3,18 @@ [#]: author: "Shakthi Kannan https://www.opensourceforu.com/author/shakthi-kannan/" [#]: collector: "lkxed" [#]: translator: "tanloong" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15932-1.html" R 语言 stats 包中的函数 ====== + +![][0] + 我们已经学习了 R 语言的基础知识,包括其语法以及语法所对应的语义,现在准备使用 R 向统计学领域进发。本文是 R 系列的第十一篇文章,我们将学习如何使用 R 语言 stats 包中提供的统计函数。 -与此系列之前的文章一样,我们将使用安装在 Parabola GNU/Linux-libre (x86-64) 上的 R 4.1.2 版本来运行文中的代码。 +与此系列之前的文章一样,我们将使用安装在 Parabola GNU/Linux-libre(x86-64)上的 R 4.1.2 版本来运行文中的代码。 ``` $ R --version @@ -27,7 +30,7 @@ For more information about these matters see https://www.gnu.org/licenses/ ### mean 函数 -在 R 中 *mean* 函数用来计算算术平均值。该函数接受一个 R 对象 `x` 作为参数,以及一个 `trim` 选项来在计算均值之前剔除任意比例的数据 (LCTT 译注:比如对于一个含有 7 个元素的向量 `x`,设置 `trim` 为 0.2 表示分别去掉 `x` 中最大和最小的前 20% (即 1.4 个) 的元素,所去掉的元素的个数会向下取整,所以最终会去掉 1 个最大值和 1 个最小值;`trim` 取值范围为 $[0, 0.5]$,默认为 0)。逻辑参数logical argument (`TRUE` 或 `FALSE`) `na.rm` 可以设置是否忽略空值 (`NA`)。该函数的语法如下: +在 R 中 `mean` 函数用来计算算术平均值。该函数接受一个 R 对象 `x` 作为参数,以及一个 `trim` 选项来在计算均值之前剔除任意比例的数据(LCTT 译注:比如对于一个含有 7 个元素的向量 `x`,设置 `trim` 为 0.2 表示分别去掉 `x` 中最大和最小的前 20% —— 即 1.4 个 —— 的元素,所去掉的元素的个数会向下取整,所以最终会去掉 1 个最大值和 1 个最小值;`trim` 取值范围为 `[0, 0.5]`,默认为 0)。逻辑参数logical argument(`TRUE` 或 `FALSE`)`na.rm` 可以设置是否忽略空值(`NA`)。该函数的语法如下: ``` mean(x, trim = 0, na.rm = FALSE, ...) @@ -49,7 +52,7 @@ mean(x, trim = 0, na.rm = FALSE, ...) 1 ``` -我们使用 UCI 机器学习库提供的一个采集自葡萄牙银行机构的“银行营销数据集”作为样本数据。该数据可用于公共研究,包含 4 个 csv 文件,我们使用 `read.csv()` 函数导入其中的 *bank.csv* 文件。 +我们使用 UCI 机器学习库提供的一个采集自葡萄牙银行机构的“银行营销数据集”作为样本数据。该数据可用于公共研究,包含 4 个 csv 文件,我们使用 `read.csv()` 函数导入其中的 `bank.csv` 文件。 ``` > bank <- read.csv(file="bank.csv", sep=";") @@ -65,7 +68,7 @@ mean(x, trim = 0, na.rm = FALSE, ...) 3 apr 185 1 330 1 failure no ``` -下面是计算 age 列均值的示例: +下面是计算 `age` 列均值的示例: ``` > mean(bank$age) @@ -74,7 +77,7 @@ mean(x, trim = 0, na.rm = FALSE, ...) ### median 函数 -R 语言 stats 包中的 *median* 函数用来计算样本的中位数。该函数接受一个数值向量 `x`,以及一个逻辑值 `na.rm` 用来设置在计算中位数之前是否去除 `NA` 值。该函数的语法如下: +R 语言 `stats` 包中的 `median` 函数用来计算样本的中位数。该函数接受一个数值向量 `x`,以及一个逻辑值 `na.rm` 用来设置在计算中位数之前是否去除 `NA` 值。该函数的语法如下: ``` median(x, na.rm = FALSE, ...) @@ -89,7 +92,7 @@ median(x, na.rm = FALSE, ...) [1] 5 ``` -现在我们可以计算银行数据中 age 列的中位数: +现在我们可以计算银行数据中 `age` 列的中位数: ``` > median(bank$age) @@ -98,7 +101,7 @@ median(x, na.rm = FALSE, ...) ### pair 函数 -*pair* 函数用来合并两个向量,接受向量 `x` 和向量 `y` 两个参数。`x` 和 `y` 的长度必须相等。 +`pair` 函数用来合并两个向量,接受向量 `x` 和向量 `y` 两个参数。`x` 和 `y` 的长度必须相等。 ``` Pair(x, y) @@ -120,18 +123,28 @@ attr(,"class") ### dist 函数 -*dist* 函数用来计算数据矩阵中各行之间的距离矩阵,接受以下参数: +`dist` 函数用来计算数据矩阵中各行之间的距离矩阵,接受以下参数: | 参数 | 描述 | | :- | :- | -| x | 数值矩阵 | -| method | 距离测量方法 | -| diag | 若为 TRUE,则打印距离矩阵的对角线 | -| upper | 若为 TRUE,则打印距离矩阵的上三角 | -| p | 闵可夫斯基距离的幂次 (见下文 LCTT 译注) | +| `x` | 数值矩阵 | +| `method` | 距离测量方法 | +| `diag` | 若为 TRUE,则打印距离矩阵的对角线 | +| `upper` | 若为 TRUE,则打印距离矩阵的上三角 | +| `p` | 闵可夫斯基距离的幂次(见下文 LCTT 译注) | -该函数提供的距离测量方法包括:欧式距离euclidean最大距离maximum曼哈顿距离manhattan堪培拉距离canberra二进制距离binary闵可夫斯基距离minkowski,默认为欧式距离 (LCTT 译注: -**欧式距离**指两点之间线段的长度,比如二维空间中 A 点 $(x_1, y_1)$ 和 B 点 $(x_2, y_2)$ 的欧式距离是 $\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$;**最大距离**指 n 维向量空间中两点在各维度上的距离的最大值,比如 A 点 $(3, 6, 8, 9)$ 和 B 点 $(1, 8, 9, 10)$ 之间的最大距离是 $max(|3 - 1|, |6 - 8|, |8 - 9|, |9 - 10|)$,等于 2;**曼哈顿距离**指 n 维向量空间中两点在各维度上的距离之和,比如二维空间中 A 点 $(x_1, y_1)$ 和 B 点 $(x_2, y_2)$ 之间的曼哈顿距离是 $|x_1 - x_2| + |y_1 - y_2|$;**堪培拉距离**的公式是 $\sum\textstyle_{i=1}^{n}\frac{|V1_i - V2_i|}{|V1_i| + |V2_i|}$;**二进制距离**首先将两个向量中的各元素看作其二进制形式,然后剔除在两个向量中对应值均为 0 的维度,最后计算在剩下的维度上两个向量间的对应值不相同的比例,比如 $V1 = (1, 3, 0, 5, 0)$ 和 $V2 = (11, 13, 0, 15, 10)$ 的二进制形式分别是 $(1, 1, 0, 1, 0)$ 和 $(1, 1, 0, 1, 1)$,其中第 3 个维度的对应值均为 0,剔除该维度之后为 $(1, 1, 1, 0)$ 和 $(1, 1, 1, 1)$,在剩余的 4 个维度中只有最后一个维度在两个向量之间的值不同,最终结果为 0.25;**闵可夫斯基距离**是欧式距离和曼哈顿距离的推广,公式是 $\sqrt[p]{\sum\textstyle_{i=1}^{n}{|V1_i - V2_i|^p}}$,当 $p=1$ 时相当于曼哈顿距离,当 $p=2$ 时相当于欧式距离。)。下面是使用欧式距离计算 age 列距离矩阵的示例: +该函数提供的距离测量方法包括:欧式距离euclidean最大距离maximum曼哈顿距离manhattan堪培拉距离canberra二进制距离binary闵可夫斯基距离minkowski,默认为欧式距离。 + +> LCTT 译注: +> +> - **欧式距离**指两点之间线段的长度,比如二维空间中 A 点 $(x_1, y_1)$ 和 B 点 $(x_2, y_2)$ 的欧式距离是 $\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$; +> - **最大距离**指 n 维向量空间中两点在各维度上的距离的最大值,比如 A 点 $(3, 6, 8, 9)$ 和 B 点 $(1, 8, 9, 10)$ 之间的最大距离是 $max(|3 - 1|, |6 - 8|, |8 - 9|, |9 - 10|)$,等于 2; +> - **曼哈顿距离**指 n 维向量空间中两点在各维度上的距离之和,比如二维空间中 A 点 $(x_1, y_1)$ 和 B 点 $(x_2, y_2)$ 之间的曼哈顿距离是 $|x_1 - x_2| + |y_1 - y_2|$; +> - **堪培拉距离**的公式是 $\sum\textstyle_{i=1}^{n}\frac{|V1_i - V2_i|}{|V1_i| + |V2_i|}$; +> - **二进制距离**首先将两个向量中的各元素看作其二进制形式,然后剔除在两个向量中对应值均为 0 的维度,最后计算在剩下的维度上两个向量间的对应值不相同的比例,比如 $V1 = (1, 3, 0, 5, 0)$ 和 $V2 = (11, 13, 0, 15, 10)$ 的二进制形式分别是 $(1, 1, 0, 1, 0)$ 和 $(1, 1, 0, 1, 1)$,其中第 3 个维度的对应值均为 0,剔除该维度之后为 $(1, 1, 1, 0)$ 和 $(1, 1, 1, 1)$,在剩余的 4 个维度中只有最后一个维度在两个向量之间的值不同,最终结果为 0.25; +> - **闵可夫斯基距离**是欧式距离和曼哈顿距离的推广,公式是 $\sqrt[p]{\sum\textstyle_{i=1}^{n}{|V1_i - V2_i|^p}}$,当 $p=1$ 时相当于曼哈顿距离,当 $p=2$ 时相当于欧式距离。 + +下面是使用欧式距离计算 `age` 列距离矩阵的示例: ``` > dist(bank$age, method="euclidean", diag=FALSE, upper=FALSE, p=2) @@ -194,25 +207,25 @@ attr(,"class") ### quantile 函数 -*quantile* 函数用于计算数值向量 `x` 的分位数及其对应的概率。当设置 `na.rm` 为 `TRUE` 时,该函数将忽略向量中的 `NA` 和 `NaN` 值。概率 0 对应最小观测值,概率 1 对应最大观测值。该函数的语法如下: +`quantile` 函数用于计算数值向量 `x` 的分位数及其对应的概率。当设置 `na.rm` 为 `TRUE` 时,该函数将忽略向量中的 `NA` 和 `NaN` 值。概率 0 对应最小观测值,概率 1 对应最大观测值。该函数的语法如下: ``` quantile(x, ...) ``` -*quantile* 函数接受以下参数: +`quantile` 函数接受以下参数: | 参数 | 描述 | | :- | :- | -| x | 数值向量 | -| probs | 概率向量,取值为 $[0, 1]$ (LCTT 译注:默认为 `(0, 0.25, 0.5, 0.75, 1)`)| -| na.rm | 若为 TRUE,忽略向量中的 NA 和 NaN 值 | -| names | 若为 TRUE,在结果中包含命名属性 | -| type | 整数类型,用于选择任意一个九种分位数算法 (LCTT 译注:默认为 7)| -| digits | 小数精度 | +| `x` | 数值向量 | +| `probs` | 概率向量,取值为 `[0, 1]`(LCTT 译注:默认为 `(0, 0.25, 0.5, 0.75, 1)`)| +| `na.rm` | 若为 `TRUE`,忽略向量中的 `NA` 和 `NaN` 值 | +| `names` | 若为 `TRUE`,在结果中包含命名属性 | +| `type` | 整数类型,用于选择任意一个九种分位数算法(LCTT 译注:默认为 7)| +| `digits` | 小数精度 | | … | 传递给其他方法的额外参数 | -*rnorm* 函数可用于生成正态分布的随机数。它可以接受要生成的观测值的数量 n,一个均值向量以及一个标准差向量。下面是一个计算 `rnorm` 函数生成的随机数的四分位数的示例: +`rnorm` 函数可用于生成正态分布的随机数。它可以接受要生成的观测值的数量 `n`,一个均值向量以及一个标准差向量。下面是一个计算 `rnorm` 函数生成的随机数的四分位数的示例: ``` > quantile(x <- rnorm(100)) @@ -230,7 +243,7 @@ quantile(x, ...) ### IQR 函数 -*IQR* 函数用于计算向量中数值的 四分位距interquartile range。其语法如下: +`IQR` 函数用于计算向量中数值的 四分位距interquartile range。其语法如下: ``` IQR(x, na.rm = FALSE, type = 7) @@ -245,7 +258,7 @@ IQR(x, na.rm = FALSE, type = 7) ### sd 函数 -*sd* 函数用来计算一组数值中的标准差。该函数接受一个 数值向量numeric vector `x` 和一个逻辑值 `na.rm`。`na.rm` 用来设置在计算时是否忽略缺失值。该函数的语法如下: +`sd` 函数用来计算一组数值中的标准差。该函数接受一个 数值向量numeric vector `x` 和一个逻辑值 `na.rm`。`na.rm` 用来设置在计算时是否忽略缺失值。该函数的语法如下: ``` sd(x, na.rm = FALSE) @@ -261,7 +274,7 @@ sd(x, na.rm = FALSE) NA ``` -下面是计算 age 列标准差的示例: +下面是计算 `age` 列标准差的示例: ``` > sd(bank$age) @@ -270,6 +283,8 @@ NA R 语言 stats 包中还有很多其他函数,鼓励你自行探索。 +*(题图:MJ/ee6b533d-69fc-4baa-a985-cc4e499b5029)* + -------------------------------------------------------------------------------- via: https://www.opensourceforu.com/2022/08/the-functions-in-the-r-stats-package/ @@ -277,10 +292,11 @@ via: https://www.opensourceforu.com/2022/08/the-functions-in-the-r-stats-package 作者:[Shakthi Kannan][a] 选题:[lkxed][b] 译者:[tanloong](https://github.com/tanloong) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://www.opensourceforu.com/author/shakthi-kannan/ [b]: https://github.com/lkxed [c]: https://www.amherst.edu/media/view/129116/.../Sample+Quantiles.pdf +[0]: https://img.linux.net.cn/data/attachment/album/202306/22/113510g55tccfi5uihcuta.jpg \ No newline at end of file