R語言自定義兩種統(tǒng)計量度:平均值和中位數,何時去使用?
原文鏈接:http://tecdat.cn/?p=11085
?
?最常用的兩種統(tǒng)計量度是平均值和中位數。兩種度量均指示分布的中心值,即預期大多數數據點所處的值。但是,在許多應用程序中,考慮到手頭的數據,考慮兩種方法中的哪一種更為合適是很有用的。在這篇文章中,我們將研究這兩個數量之間的差異,并提供建議。
均值
算術平均數是大多數人簡單地稱為??平均值。但是,確切地說,我們必須注意,平均值只是平均值的一種類型。在迷失于這些術語的復雜性之前,讓我們繼續(xù)進行均值的定義
均值定義為
?

假設我們有x =(30,25,40,41,30,41,50,33,40,1000)x =(30,25,40,41,30,41,50,33,40,1000),這是什么意思?我們可以通過以下方式進行計算:
x <- c(30, 25, 40, 41, 30, 41, 50, 33, 40, 1000)
# the way of the beginner (don't do this!):
x.mean <- 0
for (xi in x) {
x.mean <- x.mean + xi
}
x.mean <- x.mean / length(x)
print(x.mean)
## [1] 133
# a better way:
x.mean <- sum(x) / length(x)
print(x.mean)
## [1] 133
# the right way:
x.mean <- mean(x)
print(x.mean)
## [1] 133
可以簡單地使用??mean
?函數,而不必自己實現(xiàn)均值。
中位數
中位數是指數字列表中最中心的值。盡管很容易解釋,但中位數比平均值更難計算。這是因為為了找到中位數,必須對列表中的數字進行排序。此外,我們必須區(qū)分兩種情況。如果列表中元素的數量為奇數,則中位數是列表中最中心的成員。但是,如果列表中有偶數個元素,則需要確定兩個最中心的數字的算術平均值。
我們可以通過以下方式對此進行形式化。令xx為數字的排序向量。那么中位數是
?

讓我們看看如何獲得R中的中位數。
x.median <- mymedian(x)
print(x.median)
## [1] 40
# the easy way:
x.median <- median(x)
print(x.median)
## [1] 40
均值和中位數的比較
定義了兩種類型的平均值之后,我們現(xiàn)在可以研究兩者之間的差異。盡管算術平均值考慮? ?了向量中的所有值,但中值僅考慮了?值的??子集。這是因為中位數基本上丟棄了除最中心值以外的所有矢量元素。中位數的此功能可能會有很大的不同。正如我們在示例中所看到的,xx的平均值(133)遠大于其中位數(40)。在這種情況下,這是因為中位數會丟棄xx中的值1000,而算術平均值會考慮它。
這使我們想到了我們要回答的問題:何時使用均值以及何時使用中位數?答案很簡單。如果您的數據包含離群值(例如在我們的示例中為1000),那么 通常寧愿使用中位數,因為平均值的值將由離群值而不是典型值主導。總之,如果 正在考慮均值,請檢查數據是否存在異常值。一種簡單的方法是繪制數據的直方圖。

?
對于我們的數據,直方圖清楚地顯示了值為1000的離群值,我們得出的結論是,中位數比平均值更合適。
?