数据准备
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 统计函数
统计概念学习。
- 求和(sum):已知数据所有观测值的总和。
- 最大值(max):已知数据中最大的一个值。
- 最小值(min):已知数据中最小的一个值。
- 算术平均值(arithmetic mean):资料中各个观测值的总和除以观测值的个数所得的商,简称平均数。
- 中位数(median):将资料内所有观测值从小到大依次排列,当观测值的个数是奇数时,位于中间的那个观测值为中位数,或者当观测值个数是偶数时,位于中间的两个观测值的平均数为中位数。记作。
(1)当观测值为奇数时,(n+1)/2位置的观测值即为中位数。
(2)当观测值个数为偶数时,n/2和n/2 + 1位置的两个观测值的平均数为中位数。
- 标准差(Standard deviation):一组数据中的每一个观测值与这组数据的平均数的差的平方的和再除以数据个数,取平方根。用于表示数据点的离散程度。记为S。
其中,每一个观测值与平均数的差的平方和称为离均差平方和(SS - sum of squares of deviation from mean),SS越大说明总体的变异程度越大,说明数据离散程度越大。 - 方差(variance):亦称为均方(mean square, MS),每个值减去平均值的平方求和后除以总数,用于描述数据的离散程度。记为。
可以看出,方差是标准差的平方。 - 分位数(Quantile):将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。
- 绝对中位差(Median Absolute Deviation):数据点到中位数的绝对偏差的中位数。算法是用原数据减去中位数后得到的新数据的绝对值的中位数。
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
数据的标准化
数据的标准化是指将数据按照比例缩放,使之落入一个特定的区间。
数据的中心化:数据集中的各项数据减去数据集的均值。 中心化公式:
数据的标准化:中心化之后的数据再除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。经过该方法处理的数据的均值是0,标准差是1。 标准化公式:
其中,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
参考资料:
- 《R语言实战》(中文版),人民邮电出版社,2013.
- 《田间试验与统计分析》,明道绪,科学出版社,2008
- 统计学基础之分位数(Quantile),https://xueqiu.com/6430452153/178073485
- 什么是绝对中位差,https://www.zhihu.com/question/56537218
- 绝对中位差,https://blog.csdn.net/horses/article/details/78749485