《R语言实战》自学笔记25-统计函数

数据准备

df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 数据导入。
df # 查看数据。
##    year nitrogen variety block   v1   v2  v3   v4
## 1  2020       N1       a     1 1.26 2.14 3.4 4.66
## 2  2020       N1       a     2 1.20 2.90 4.1 5.30
## 3  2020       N1       a     3 1.30 3.00 4.3 5.60
## 4  2020       N1       b     1 1.08 1.72 2.8 3.88
## 5  2020       N1       b     2 1.05 1.65 2.7 3.75
## 6  2020       N1       b     3 1.15 1.35 2.5 3.65
## 7  2020       N2       a     1 1.32 3.78 5.1 6.42
## 8  2020       N2       a     2 1.28 4.32 5.6 6.88
## 9  2020       N2       a     3 1.35 3.95 5.3 6.65
## 10 2020       N2       b     1 1.33 3.47 4.8 6.13
## 11 2020       N2       b     2 1.28 2.72 4.0 5.28
## 12 2020       N2       b     3 1.30 3.90 5.2 6.50
## 13 2021       N1       a     1 1.19 3.61 4.8 5.99
## 14 2021       N1       a     2 1.21 3.29 4.5 5.71
## 15 2021       N1       a     3 1.24 3.26 4.5 5.74
## 16 2021       N1       b     1 1.09 2.71 3.8 4.89
## 17 2021       N1       b     2 1.28 2.32 3.6 4.88
## 18 2021       N1       b     3 1.35 1.95 3.3 4.65
## 19 2021       N2       a     1 1.45 4.35 5.8 7.25
## 20 2021       N2       a     2 1.40 3.80 5.2 6.60
## 21 2021       N2       a     3 1.37 4.23 5.6 6.97
## 22 2021       N2       b     1 1.28 2.72 4.0 5.28
## 23 2021       N2       b     2 1.15 3.35 4.5 5.65
## 24 2021       N2       b     3 1.24 3.46 4.7 5.94

5.2.2 统计函数

统计概念学习。

  1. 求和(sum):已知数据所有观测值的总和。
  2. 最大值(max):已知数据中最大的一个值。
  3. 最小值(min):已知数据中最小的一个值。
  4. 算术平均值(arithmetic mean):资料中各个观测值的总和除以观测值的个数所得的商,简称平均数。
    \overline x = \frac {x_1 + x_2 + ...+x_n } n
  5. 中位数(median):将资料内所有观测值从小到大依次排列,当观测值的个数是奇数时,位于中间的那个观测值为中位数,或者当观测值个数是偶数时,位于中间的两个观测值的平均数为中位数。记作M_d

(1)当观测值为奇数时,(n+1)/2位置的观测值即为中位数。
M_d = x_{(n+1)/2}

(2)当观测值个数为偶数时,n/2和n/2 + 1位置的两个观测值的平均数为中位数。
M_d = \frac {x_{n/2} + x_{n/2+1}} 2

  1. 标准差(Standard deviation):一组数据中的每一个观测值与这组数据的平均数的差的平方的和再除以数据个数,取平方根。用于表示数据点的离散程度。记为S。
    S = \sqrt {\frac 1n\sum_{i=1} ^n (x_i - \overline x)^2}
    其中,每一个观测值与平均数的差的平方和称为离均差平方和(SS - sum of squares of deviation from mean),SS越大说明总体的变异程度越大,说明数据离散程度越大。
  2. 方差(variance):亦称为均方(mean square, MS),每个值减去平均值的平方求和后除以总数,用于描述数据的离散程度。记为S^2
    S^2 = \frac 1n \sum_{i=1} ^n (x_i - \overline x)^2
    可以看出,方差是标准差的平方。
  3. 分位数(Quantile):将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。
  4. 绝对中位差(Median Absolute Deviation):数据点到中位数的绝对偏差的中位数。算法是用原数据减去中位数后得到的新数据的绝对值的中位数。
image.png
mean(df$v1) # 返回数据框df中v1列的平均值。
## [1] 1.25625
median(df$v1) # 返回数据框df中v1列的中位数。
## [1] 1.28
sd(df$v1) # 返回v1列标准差。
## [1] 0.1018017
var(df$v1) # 返回v1列方差。
## [1] 0.01036359
mad(df$v1) # 返回v1列的绝对中位差。
## [1] 0.103782
quantile(df$v1, c(0, 0.25, 0.5, 0.75, 1)) # 返回v1列的四分位数。
##     0%    25%    50%    75%   100% 
## 1.0500 1.1975 1.2800 1.3225 1.4500
IQR(df$v1) # 求df$v1的四分位距。
## [1] 0.125
range(df$v1) # 求v1列值域。
## [1] 1.05 1.45
sum(df$v1) # v1列求和。
## [1] 30.15
diff(df$v1) # 滞后差分。
##  [1] -0.06  0.10 -0.22 -0.03  0.10  0.17 -0.04  0.07 -0.02 -0.05  0.02 -0.11
## [13]  0.02  0.03 -0.15  0.19  0.07  0.10 -0.05 -0.03 -0.09 -0.13  0.09
diff(range(df$v1)) # 求数据极差,即最大值减最小值。
## [1] 0.4
min(df$v1) # 返回最小值。
## [1] 1.05
max(df$v1) # 返回最大值。
## [1] 1.45
fivenum(df$v1) # 可以通过fivenum函数直接获得基本描述性统计结果。
## [1] 1.050 1.195 1.280 1.325 1.450
summary(df$v1) # 可以通过summary获得最小值、最大值、中位数、平均数、第25和75分位数。
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.050   1.198   1.280   1.256   1.323   1.450

数据的标准化
数据的标准化是指将数据按照比例缩放,使之落入一个特定的区间。
数据的中心化:数据集中的各项数据减去数据集的均值。 中心化公式:
Z_i = X_i - \overline X
数据的标准化:中心化之后的数据再除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。经过该方法处理的数据的均值是0,标准差是1。 标准化公式:
Z_i = \frac {(X_i- \overline X)} S
其中,x为观测者,\overline X为平均值,S为标准差。

scale(x, center = TRUE, scale = TRUE)
x:用于标准化的数据,
center=T:表示数据中心化,
scale=T:表示数据标准化。
默认情况下,center=TRUE,scale=TRUE,scale()函数首先把一组数的每个数都减去这组数的平均值,然后除以这组数的均方根。
如果scale=TRUE,而center=FALSE,那么,scale()函数不会把一组数中的每个数减去平均值,而直接除以这组数据的均方根。

a <- 1:10 # 向量a。
scale(a, center=T, scale=F) # 数据中心化,对向量a每个数据减去平均值5.5。
##       [,1]
##  [1,] -4.5
##  [2,] -3.5
##  [3,] -2.5
##  [4,] -1.5
##  [5,] -0.5
##  [6,]  0.5
##  [7,]  1.5
##  [8,]  2.5
##  [9,]  3.5
## [10,]  4.5
## attr(,"scaled:center")
## [1] 5.5
scale(a, center=F, scale=T) # 每个数据除以均方根6.540472。
##            [,1]
##  [1,] 0.1528942
##  [2,] 0.3057883
##  [3,] 0.4586825
##  [4,] 0.6115766
##  [5,] 0.7644708
##  [6,] 0.9173649
##  [7,] 1.0702591
##  [8,] 1.2231533
##  [9,] 1.3760474
## [10,] 1.5289416
## attr(,"scaled:scale")
## [1] 6.540472
scale(a, center=T, scale=T) # 数据a标准化,每个数据减去平均值再除以均方根。
##             [,1]
##  [1,] -1.4863011
##  [2,] -1.1560120
##  [3,] -0.8257228
##  [4,] -0.4954337
##  [5,] -0.1651446
##  [6,]  0.1651446
##  [7,]  0.4954337
##  [8,]  0.8257228
##  [9,]  1.1560120
## [10,]  1.4863011
## attr(,"scaled:center")
## [1] 5.5
## attr(,"scaled:scale")
## [1] 3.02765
scale(df[5:8])*2 + 5 # 对数据集df的5到8列进行数据标准化。
##             v1       v2       v3       v4
##  [1,] 5.073673 2.853957 3.011836 3.159950
##  [2,] 3.894910 4.586751 4.496332 4.421136
##  [3,] 5.859514 4.814751 4.920473 5.012316
##  [4,] 1.537386 1.896360 1.739411 1.622881
##  [5,] 0.948005 1.736760 1.527340 1.366703
##  [6,] 2.912609 1.052762 1.103199 1.169643
##  [7,] 6.252435 6.593145 6.617040 6.628210
##  [8,] 5.466593 7.824341 7.677394 7.534687
##  [9,] 6.841816 6.980744 7.041182 7.081448
## [10,] 6.448895 5.886347 5.980828 6.056735
## [11,] 5.466593 4.176353 4.284261 4.381724
## [12,] 5.859514 6.866744 6.829111 6.785858
## [13,] 3.698450 6.205546 5.980828 5.780851
## [14,] 4.091371 5.475949 5.344615 5.229082
## [15,] 4.680752 5.407549 5.344615 5.288201
## [16,] 1.733846 4.153553 3.860119 3.613189
## [17,] 5.466593 3.264355 3.435978 3.593483
## [18,] 6.841816 2.420758 2.799765 3.140244
## [19,] 8.806420 7.892741 8.101536 8.263809
## [20,] 7.824118 6.638745 6.829111 6.982918
## [21,] 7.234737 7.619142 7.677394 7.712041
## [22,] 5.466593 4.176353 4.284261 4.381724
## [23,] 2.912609 5.612748 5.344615 5.110846
## [24,] 4.680752 5.863547 5.768757 5.682321
## attr(,"scaled:center")
##      v1      v2      v3      v4 
## 1.25625 3.08125 4.33750 5.59375 
## attr(,"scaled:scale")
##        v1        v2        v3        v4 
## 0.1018017 0.8771957 0.9430812 1.0149183

参考资料:

  1. 《R语言实战》(中文版),人民邮电出版社,2013.
  2. 《田间试验与统计分析》,明道绪,科学出版社,2008
  3. 统计学基础之分位数(Quantile),https://xueqiu.com/6430452153/178073485
  4. 什么是绝对中位差,https://www.zhihu.com/question/56537218
  5. 绝对中位差,https://blog.csdn.net/horses/article/details/78749485
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容