Data-Visualization

我如何解釋這個散點圖?

  • September 5, 2017

我有一個散點圖,其樣本大小等於 x 軸上的人數和 y 軸上的工資中位數,我試圖找出樣本大小是否對工資中位數有任何影響。

這是情節:

在此處輸入圖像描述

我如何解釋這個情節?

“找出”表示您正在探索數據。正式的測試將是多餘的和可疑的。相反,應用標準探索性數據分析 (EDA) 技術來揭示數據中可能包含的內容。

這些標準技術包括重新表達殘差分析穩健技術(EDA 的“三個 R”)以及John Tukey 在其經典著作EDA (1977)中描述的數據*平滑。*我在 Box-Cox 的帖子中概述瞭如何進行其中的一些,例如自變量的轉換?在線性回歸中,什麼時候適合使用自變量的對數而不是實際值?除其他外

結果是,通過更改對數軸(有效地重新表達兩個變量),不要過於激進地平滑數據,並檢查平滑的殘差以檢查它可能遺漏的內容,可以看到很多,正如我將說明的那樣。

以下是平滑顯示的數據——在檢查了幾個對數據保真度不同的平滑之後——似乎是平滑過多和過少之間的一個很好的折衷。它使用黃土,一種眾所周知的穩健方法(它不受垂直外圍點的嚴重影響)。

對數散點圖

垂直網格的步長為 10,000。平滑確實暗示了樣本量的一些變化Grad_median:它似乎隨著樣本量接近 1000 而下降。(平滑的末端是不可信的——尤其是對於小樣本,樣本誤差預計會相對較大——所以不要不要過多地解讀它們。)這種真實下降的印象得到了軟件在平滑周圍繪製的(非常粗糙的)置信帶的支持:它的“擺動”大於帶的寬度。

要查看此分析可能遺漏了什麼,下圖查看殘差。(這些是自然對數的差異,直接測量前面平滑數據之間的垂直差異。因為它們是小數字,所以可以解釋為比例差異;例如, 反映的數據值大約是低於相應的平滑值。)

我們感興趣的是(a)隨著樣本量的變化是否存在額外的變化模式,以及(b)響應的條件分佈——點位置的垂直分佈——在所有樣本量值中是否看似相似,或者它們的某些方面(例如它們的散佈或對稱性)是否會改變。

[圖2殘差圖

這種平滑嘗試比以前更緊密地跟踪數據點。儘管如此,它本質上是水平的(在置信帶範圍內,始終覆蓋 y 值),表明無法檢測到進一步的變化。如果正式測試,中間附近垂直分佈的輕微增加(樣本量為 2000 到 3000)不會顯著,因此在這個探索階段肯定是不起眼的。在任何單獨的類別中都沒有明顯的、系統性的偏離這種整體行為(區分,不太好,按顏色——我在這裡沒有顯示的圖中單獨分析了它們)。

因此,這個簡單的總結:

對於接近 1000 的樣本量,工資中位數大約低 10,000

充分捕捉數據中出現的關係,並且似乎在所有主要類別中都保持一致。這是否重要——也就是說,當面對額外的數據時它是否會站起來——只能通過收集這些額外的數據來評估。


對於那些想要檢查這項工作或進一步研究的人,這裡是R代碼。

library(data.table)
library(ggplot2)
#
# Read the data.
#
infile <- "https://raw.githubusercontent.com/fivethirtyeight/\
data/master/college-majors/grad-students.csv"
X <- as.data.table(read.csv(infile))
#
# Compute the residuals.
#
span <- 0.6 # Larger values will smooth more aggressively
X[, Log.residual := 
     residuals(loess(log(Grad_median) ~ I(log(Grad_sample_size)), X, span=span))]
#
# Plot the data on top of a smooth.
#
g <- ggplot(X, aes(Grad_sample_size, Grad_median)) + 
 geom_smooth(span=span) + 
 geom_point(aes(fill=Major_category), alpha=1/2, shape=21) + 
 scale_x_log10() + scale_y_log10(minor_breaks=seq(1e4, 5e5, by=1e4)) + 
 ggtitle("EDA of Median Salary vs. Sample Size",
         paste("Span of smooth is", signif(span, 2)))
print(g)

span <- span * 2/3 # Look for a little more detail in the residuals
g.r <- ggplot(X, aes(Grad_sample_size, Log.residual)) + 
 geom_smooth(span=span) + 
 geom_point(aes(fill=Major_category), alpha=1/2, shape=21) + 
 scale_x_log10() + 
 ggtitle("EDA of Median Salary vs. Sample Size: Residuals",
         paste("Span of smooth is", signif(span, 2)))
print(g.r)

引用自:https://stats.stackexchange.com/questions/301428

comments powered by Disqus