R语言与数据的概括性度量
程序员文章站
2022-07-11 14:59:17
...
参考书目:《统计学》-贾俊平;《统计学:从数据到结论》-吴喜之;
理论部分:数据的概括性度量
以下例子会用到的数据(这些数据被放在一个叫data5.txt的文件里):
74.3 78.8 68.8 78.0 70.4 80.5 80.5 69.7 71.2 73.5
79.5 75.6 75.0 78.8 72.0 72.0 72.0 74.3 71.2 72.0
75.0 73.5 78.8 74.3 75.8 65.0 74.3 71.2 69.7 68.0
73.5 75.0 72.0 64.3 75.8 80.3 69.7 74.3 73.5 73.5
读取数据:
Tdata <- read.table("data5.txt", header = F)
new_data <- as.vector(as.matrix(Tdata))
- 众数
> #众数
> z <- table(new_data)
> (z[which(z==max(z))])
new_data
72 73.5 74.3
5 5 5
注意:众数可以有多个,也可以没有。
- 中位数
> #中位数
> (med_data <- median(new_data))
[1] 73.5
- 四分位数
#下四分位数
> quantile(new_data, 0.25)
25%
71.2
#上四分位数
> quantile(new_data, 0.75)
75%
75.65
- 五位数总括(最小值、下四分位数、中位数、上四分位数、最大值)
> (fivenum(new_data))
[1] 64.3 71.2 73.5 75.7 80.5
- 简单平均数
> #均值
> (mean_data <- mean(new_data))
[1] 73.64
因为平均数易受数据极端值的影响,所以我们可以删除极端值,过滤掉一部分比例的数据,再计算均值
> #过滤掉极小和极大各10%的极端值
> (mean_data2 <- mean(new_data, trim = 0.1))
[1] 73.70937
trim的参数值可以在0~0.5
之间进行选择,如果大于等于0.5则会选择中位数作为均值。
比如:
> mean(c(-30, -20, -10, 1:10, 50, 100), trim = 3/15)
[1] 5
> mean(c(-30, -20, -10, 1:10, 50, 100), trim = 2/15)
[1] 4.090909
> mean(c(-30, -20, -10, 1:10, 50, 100), trim = 1)
[1] 5
> mean(c(-30, -20, -10, 1:10, 50, 100, 200), trim = 1)
[1] 5.5
- 极差
> #极差
> (diff(range(new_data)))
[1] 16.2
- 四分位差
> #四分位差
> (diff(quantile(new_data, c(0.25, 0.75))))
75%
4.45
- 平均差
> #平均差
> my_md <- function(x){mean(abs(x - mean(x, na.rm = T)), na.rm = T)}
> (my_md(new_data))
[1] 2.987
- 方差标准差(这里计算的是样本的方差标准差,分母为n-1)
> #方差
> (var_data <- var(new_data))
[1] 15.33836
> #标准差
> (sd_data <- sd(new_data))
[1] 3.916422
- 标准误
> #标准误
> (standard_error_data <- sd_data/(length(new_data))^(0.5))
[1] 0.6192406
- 标准得分
#标准得分
scale(new_data)
- 偏度与峰度
> #偏度
> (S_data <- skewness(new_data))
[1] -0.1563461
> #峰度
> (K_data <- kurtosis(new_data))
[1] 2.889835