Answers:
“查找”表示您正在浏览数据。正式测试将是多余和可疑的。相反,应用标准探索性数据分析(EDA)技术来揭示数据中可能包含的内容。
这些标准技术包括重新表达,残差分析,鲁棒技术(EDA的“三个R”)和数据平滑,如John Tukey在其经典著作EDA(1977)中所述。我在Box-Cox的帖子中概述了如何进行其中的一些操作,例如对自变量进行转换?和在线性回归,当它适合使用一个独立的变量而不是实际的值的日志?,除其他外。
结果是,可以通过更改为对数-对数轴(有效地重新表达两个变量),不太积极地平滑数据以及检查平滑的残差以检查可能遗漏的内容来看到很多东西,正如我将说明的那样。
这是显示的平滑数据-在检查了多个具有不同保真度的平滑后,似乎在平滑程度过多与过少之间做出了很好的折衷。它使用Loess(一种著名的鲁棒方法)(它不受垂直偏心点的严重影响)。
垂直网格的步长为10,000。平滑度确实暗示了Grad_median
样本量的一些变化:当样本量接近1000时,平滑度似乎下降了。(平滑度的末端不可靠-特别是对于较小的样本,样本中的采样误差预计会相对较大-所以不要软件对平滑区域绘制的(非常粗糙的)置信带支持了这种真实下降的印象:其“摆动”大于带的宽度。
为了查看此分析可能遗漏的内容,下图查看了残差。(这些是自然对数的差异,直接测量先前平滑数据之间的垂直差异。由于它们的数量很小,因此可以解释为成比例的差异;例如, 反映的数据值比相应的平滑值低约值。)20 %
我们感兴趣的是(a)随样本大小的变化是否存在其他变化模式,以及(b)在样本大小的所有值之间响应的条件分布(点位置的垂直分布)是否合理地相似,或者它们的某些方面(例如它们的扩散或对称性)是否可能改变。
这种平滑尝试比以前更加紧密地跟踪数据点。然而,它基本上是水平的(在置信带范围内,始终覆盖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)
我也同意没有关系。我复制了原始散点图(左),并制作了glen_b建议的对数-对数散点图(右)。
看起来两者之间没有任何关系。对数转换后的数据之间的相关性较弱(Pearson R = -.13),并且无关紧要(p = .09)。根据您拥有多少额外的信息,也许有理由看到一些弱的负相关性,但这似乎有些绵延。我猜你看到的任何明显模式都是在这里看到的相同效果。
编辑:查看@famargar的图后,我意识到我已绘制了研究生样本数量与非研究生中位数工资的关系图。我相信@sameed想要的样本大小VS 毕业生 -median工资,虽然它不是完全清楚。对于后者,我重现了@famargar的数字,即(),并且我们的图看起来相同。p = 0.98
如第一个答案中所建议的那样,尝试线性回归将使您对这种关系有所了解。由于看起来您正在使用python plus matplotlib进行此绘图,因此与解决方案仅需一行代码。
您可以使用seaborn关节图,该图还将显示线性回归线,Pearson相关系数及其p值:
sns.jointplot("Grad_sample_size", "Grad_median", data=df, kind="reg")
如您所见,没有任何关联。查看最后一个图,似乎可以对数转换x变量。让我们尝试一下:
df['log_size'] = np.log(df['Grad_sample_size'])
sns.jointplot("log_size", "Grad_median", data=df, kind="reg")
您可以清楚地看到-是否进行对数转换-相关性很小,并且p值和置信区间都表示它在统计上没有意义。