自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

R 語言 stats 包中的函數(shù)

開發(fā)
本文是 R 系列的第十一篇文章,我們將學(xué)習(xí)如何使用 R 語言 stats 包中提供的統(tǒng)計(jì)函數(shù)。

我們已經(jīng)學(xué)習(xí)了 R 語言的基礎(chǔ)知識(shí),包括其語法以及語法所對(duì)應(yīng)的語義,現(xiàn)在準(zhǔn)備使用 R 向統(tǒng)計(jì)學(xué)領(lǐng)域進(jìn)發(fā)。本文是 R 系列的第十一篇文章,我們將學(xué)習(xí)如何使用 R 語言 stats 包中提供的統(tǒng)計(jì)函數(shù)。

與此系列之前的文章一樣,我們將使用安裝在 Parabola GNU/Linux-libre(x86-64)上的 R 4.1.2 版本來運(yùn)行文中的代碼。

$ R --version
R version 4.1.2 (2021-11-01) -- "Bird Hippie"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see https://www.gnu.org/licenses/

mean 函數(shù)

在 R 中 mean 函數(shù)用來計(jì)算算術(shù)平均值。該函數(shù)接受一個(gè) R 對(duì)象 x 作為參數(shù),以及一個(gè) trim 選項(xiàng)來在計(jì)算均值之前剔除任意比例的數(shù)據(jù)(LCTT 譯注:比如對(duì)于一個(gè)含有 7 個(gè)元素的向量 x,設(shè)置 trim 為 0.2 表示分別去掉 x 中最大和最小的前 20% —— 即 1.4 個(gè) —— 的元素,所去掉的元素的個(gè)數(shù)會(huì)向下取整,所以最終會(huì)去掉 1 個(gè)最大值和 1 個(gè)最小值;trim 取值范圍為 [0, 0.5],默認(rèn)為 0)。邏輯參數(shù)logical argument(TRUE 或 FALSEna.rm 可以設(shè)置是否忽略空值(NA)。該函數(shù)的語法如下:

mean(x, trim = 0, na.rm = FALSE, ...)

該函數(shù)支持?jǐn)?shù)值、邏輯值、日期和 時(shí)間區(qū)間time intervals。下面是使用 mean 函數(shù)的一些例子:

> mean(c(1, 2, 3))
2

> mean(c(1:5, 10, 20))
6.428571

> mean(c(FALSE, TRUE, FALSE))
0.3333333

> mean(c(TRUE, TRUE, TRUE))
1

我們使用 UCI 機(jī)器學(xué)習(xí)庫(kù)提供的一個(gè)采集自葡萄牙銀行機(jī)構(gòu)的“銀行營(yíng)銷數(shù)據(jù)集”作為樣本數(shù)據(jù)。該數(shù)據(jù)可用于公共研究,包含 4 個(gè) csv 文件,我們使用 read.csv() 函數(shù)導(dǎo)入其中的 bank.csv 文件。

> bank <- read.csv(file="bank.csv", sep=";")

> bank[1:3,]
  age        job marital education default balance housing loan  contact day
1  30 unemployed married   primary      no    1787      no   no cellular  19
2  33   services married secondary      no    4789     yes  yes cellular  11
3  35 management  single  tertiary      no    1350     yes   no cellular  16
  month duration campaign pdays previous poutcome  y
1   oct       79        1    -1        0  unknown no
2   may      220        1   339        4  failure no
3   apr      185        1   330        1  failure no

下面是計(jì)算 age 列均值的示例:

> mean(bank$age)
41.1701

median 函數(shù)

R 語言 stats 包中的 median 函數(shù)用來計(jì)算樣本的中位數(shù)。該函數(shù)接受一個(gè)數(shù)值向量 x,以及一個(gè)邏輯值 na.rm 用來設(shè)置在計(jì)算中位數(shù)之前是否去除 NA 值。該函數(shù)的語法如下:

median(x, na.rm = FALSE, ...)

下面是使用該函數(shù)的兩個(gè)例子:

> median(3:5)
4
> median(c(3:5, 50, 150))
[1] 5

現(xiàn)在我們可以計(jì)算銀行數(shù)據(jù)中 age 列的中位數(shù):

> median(bank$age)
39

pair 函數(shù)

pair 函數(shù)用來合并兩個(gè)向量,接受向量 x 和向量 y 兩個(gè)參數(shù)。x 和 y 的長(zhǎng)度必須相等。

Pair(x, y)

該函數(shù)返回一個(gè) Pair 類的列數(shù)為 2 的矩陣,示例如下:

> Pair(c(1,2,3), c(4,5,6))
     x y
[1,] 1 4
[2,] 2 5
[3,] 3 6
attr(,"class")
[1] "Pair"

該函數(shù)常用于像 T 檢驗(yàn)和 Wilcox 檢驗(yàn)等的 配對(duì)檢驗(yàn)paired test。

dist 函數(shù)

dist 函數(shù)用來計(jì)算數(shù)據(jù)矩陣中各行之間的距離矩陣,接受以下參數(shù):

參數(shù)

描述

x

數(shù)值矩陣

method

距離測(cè)量方法

diag

若為 TRUE,則打印距離矩陣的對(duì)角線

upper

若為 TRUE,則打印距離矩陣的上三角

p

閔可夫斯基距離的冪次(見下文 LCTT 譯注)

該函數(shù)提供的距離測(cè)量方法包括:歐式距離euclidean、最大距離maximum、曼哈頓距離manhattan、堪培拉距離canberra、二進(jìn)制距離binary 和 閔可夫斯基距離minkowski,默認(rèn)為歐式距離。

LCTT 譯注:

  • 歐式距離指兩點(diǎn)之間線段的長(zhǎng)度,比如二維空間中 A 點(diǎn) 和 B 點(diǎn) 的歐式距離是  ;
  • 最大距離指 n 維向量空間中兩點(diǎn)在各維度上的距離的最大值,比如 A 點(diǎn) (3,6,8,9) 和 B 點(diǎn)  (1,8,9,10) 之間的最大距離是 ,等于 2;
  • 曼哈頓距離指 n 維向量空間中兩點(diǎn)在各維度上的距離之和,比如二維空間中 A 點(diǎn) 和 B 點(diǎn) 之間的曼哈頓距離是 ;
  • 堪培拉距離的公式是  ;
  • 二進(jìn)制距離首先將兩個(gè)向量中的各元素看作其二進(jìn)制形式,然后剔除在兩個(gè)向量中對(duì)應(yīng)值均為 0 的維度,最后計(jì)算在剩下的維度上兩個(gè)向量間的對(duì)應(yīng)值不相同的比例,比如  V1=(1,3,0,5,0) 和  V2=(11,13,0,15,10) 的二進(jìn)制形式分別是  (1,1,0,1,0) 和  (1,1,0,1,1),其中第 3 個(gè)維度的對(duì)應(yīng)值均為 0,剔除該維度之后為  (1,1,1,0) 和  (1,1,1,1),在剩余的 4 個(gè)維度中只有最后一個(gè)維度在兩個(gè)向量之間的值不同,最終結(jié)果為 0.25;
  • 閔可夫斯基距離是歐式距離和曼哈頓距離的推廣,公式是 ,當(dāng)  p = 1 時(shí)相當(dāng)于曼哈頓距離,當(dāng)  p = 2 時(shí)相當(dāng)于歐式距離。

下面是使用歐式距離計(jì)算 age 列距離矩陣的示例:

> dist(bank$age, method="euclidean", diag=FALSE, upper=FALSE, p=2)
      1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
2     3
3     5  2
4     0  3  5
5    29 26 24 29
6     5  2  0  5 24
7     6  3  1  6 23  1
8     9  6  4  9 20  4  3
9    11  8  6 11 18  6  5  2
10   13 10  8 13 16  8  7  4  2
11    9  6  4  9 20  4  3  0  2  4
12   13 10  8 13 16  8  7  4  2  0  4
13    6  3  1  6 23  1  0  3  5  7  3  7
14   10 13 15 10 39 15 16 19 21 23 19 23 16
15    1  2  4  1 28  4  5  8 10 12  8 12  5 11
16   10  7  5 10 19  5  4  1  1  3  1  3  4 20  9
17   26 23 21 26  3 21 20 17 15 13 17 13 20 36 25 16
18    7  4  2  7 22  2  1  2  4  6  2  6  1 17  6  3 19
19    5  8 10  5 34 10 11 14 16 18 14 18 11  5  6 15 31 12
20    1  2  4  1 28  4  5  8 10 12  8 12  5 11  0  9 25  6  6
21    8  5  3  8 21  3  2  1  3  5  1  5  2 18  7  2 18  1 13  7
22   12  9  7 12 17  7  6  3  1  1  3  1  6 22 11  2 14  5 17 11  4
23   14 11  9 14 15  9  8  5  3  1  5  1  8 24 13  4 12  7 19 13  6  2
     26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
...

改用二進(jìn)制距離的計(jì)算結(jié)果如下:

> dist(bank$age, method="binary", diag=FALSE, upper=FALSE, p=2)
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
2    0
3    0 0
4    0 0 0
5    0 0 0 0
6    0 0 0 0 0
7    0 0 0 0 0 0
8    0 0 0 0 0 0 0
9    0 0 0 0 0 0 0 0
10   0 0 0 0 0 0 0 0 0
11   0 0 0 0 0 0 0 0 0  0
12   0 0 0 0 0 0 0 0 0  0  0
13   0 0 0 0 0 0 0 0 0  0  0  0
14   0 0 0 0 0 0 0 0 0  0  0  0  0
15   0 0 0 0 0 0 0 0 0  0  0  0  0  0
16   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0
17   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0
18   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0
19   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0
20   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0
21   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0
22   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0
23   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0
     29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

quantile 函數(shù)

quantile 函數(shù)用于計(jì)算數(shù)值向量 x 的分位數(shù)及其對(duì)應(yīng)的概率。當(dāng)設(shè)置 na.rm 為 TRUE 時(shí),該函數(shù)將忽略向量中的 NA 和 NaN 值。概率 0 對(duì)應(yīng)最小觀測(cè)值,概率 1 對(duì)應(yīng)最大觀測(cè)值。該函數(shù)的語法如下:

quantile(x, ...)

quantile 函數(shù)接受以下參數(shù):

參數(shù)

描述

x

數(shù)值向量

probs

概率向量,取值為 [0, 1](LCTT 譯注:默認(rèn)為 (0, 0.25, 0.5, 0.75, 1)

na.rm

若為 TRUE,忽略向量中的 NA 和 NaN 值

names

若為 TRUE,在結(jié)果中包含命名屬性

type

整數(shù)類型,用于選擇任意一個(gè)九種分位數(shù)算法(LCTT 譯注:默認(rèn)為 7)

digits

小數(shù)精度


傳遞給其他方法的額外參數(shù)

rnorm 函數(shù)可用于生成正態(tài)分布的隨機(jī)數(shù)。它可以接受要生成的觀測(cè)值的數(shù)量 n,一個(gè)均值向量以及一個(gè)標(biāo)準(zhǔn)差向量。下面是一個(gè)計(jì)算 rnorm 函數(shù)生成的隨機(jī)數(shù)的四分位數(shù)的示例:

> quantile(x <- rnorm(100))
    0%          25%          50%          75%         100%
-1.978171612 -0.746829079 -0.009440368  0.698271134  1.897942805

下面是生成銀行年齡數(shù)據(jù)對(duì)應(yīng)概率下的分位數(shù)的示例:

> quantile(bank$age, probs = c(0.1, 0.5, 1, 2, 5, 10, 50)/100)
0.1% 0.5%   1%   2%   5%  10%  50%
20.0 22.6 24.0 25.0 27.0 29.0 39.0

IQR 函數(shù)

IQR 函數(shù)用于計(jì)算向量中數(shù)值的 四分位距interquartile range。其語法如下:

IQR(x, na.rm = FALSE, type = 7)

參數(shù) type 指定了一個(gè)整數(shù)以選擇分位數(shù)算法,該算法在 Hyndman and Fan (1996) 中進(jìn)行了討論。下面是計(jì)算銀行年齡四分位距的示例:

> IQR(bank$age, na.rm = FALSE, type=7)
16

sd 函數(shù)

sd 函數(shù)用來計(jì)算一組數(shù)值中的標(biāo)準(zhǔn)差。該函數(shù)接受一個(gè) 數(shù)值向量numeric vector x 和一個(gè)邏輯值 na.rm。na.rm 用來設(shè)置在計(jì)算時(shí)是否忽略缺失值。該函數(shù)的語法如下:

sd(x, na.rm = FALSE)

對(duì)于長(zhǎng)度為 0 或 1 的向量,該函數(shù)返回 NA。下面是兩個(gè)例子:

> sd(1:10)
3.02765

> sd(1)
NA

下面是計(jì)算 age 列標(biāo)準(zhǔn)差的示例:

> sd(bank$age)
10.57621

R 語言 stats 包中還有很多其他函數(shù),鼓勵(lì)你自行探索。

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2017-10-17 11:58:54

R語言UpSetR可視化

2017-06-01 09:34:55

R語言包sqldf

2023-11-27 15:02:37

BytesGolang

2015-08-18 09:42:25

2009-08-21 18:46:30

下載Server 20

2023-10-18 08:22:38

BufioGolang

2015-10-27 10:12:21

r語言命令相見恨晚

2021-07-27 10:18:21

R語言視覺工作室代碼分析

2013-05-24 10:01:40

R語言

2014-03-26 10:52:24

Apache Spar

2015-11-02 14:48:05

LinuxR 語言

2018-05-16 07:53:51

R函數(shù)可視化

2023-08-31 09:28:12

Golang可導(dǎo)出函數(shù)

2017-07-05 14:42:13

2015-07-02 09:40:57

R語言優(yōu)勢(shì)缺點(diǎn)

2013-05-10 14:37:37

2018-04-20 09:06:11

R語言數(shù)據(jù)存儲(chǔ)

2021-04-13 07:58:42

Go語言函數(shù)

2017-01-10 09:15:11

2010-01-11 15:29:13

引用C++語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)