也许您将从探索工具中受益。按照这种精神,似乎已将数据拆分为x坐标的十分位。通过下面描述的修改,这是一种非常好的方法。
已经发明了许多双变量探索方法。John Tukey(EDA,Addison-Wesley 1977)提出的一个简单的例子就是他的“徘徊原理图”。您将x坐标切成条形,在每个条形的中部竖立相应y数据的垂直箱形图,并将箱形图的关键部分(中位数,铰链等)连接成曲线(可以选择平滑)。这些“徘徊痕迹”提供了数据的二元分布图,并允许立即对相关性,关系线性,离群值和边际分布进行直观的视觉评估,并对任何非线性回归函数进行稳健的估计和拟合优度评估。
Tukey在这个想法中加入了一种与箱线图想法一致的想法,即探究数据分布的一种好方法是从中间开始并向外进行工作,将数据量减半。即,箱到使用不必是切割在等距位数,而是应在点反映的位数和为。2− k1 -2− kķ = 1 ,2 ,3 ,...
为了显示不同的bin数量,我们可以使每个箱线图的宽度与其表示的数据量成正比。
产生的漂移示意图将如下所示。根据数据摘要开发的数据在背景中显示为灰色点。在此上方绘制了徘徊的示意图,其中五条迹线为彩色,框线图(包括所示的任何异常值)为黑白。
几乎为零的相关性的性质立即变得清晰:数据扭曲。在它们的中心附近,从到,它们具有很强的正相关性。在极值处,这些数据表现出总体上趋向于负的曲线关系。净相关系数(对于这些数据恰好是)接近零。但是,坚持认为“几乎没有相关性”或“显着但较低的相关性”将与老笑话中欺骗的错误相同,即关于统计学家对烤箱里的头和冰箱里的脚感到满意的统计数字,因为平均而言,温度很舒服。有时,一个数字根本无法描述情况。x = − 4x = 4- 0.074
具有类似目的的替代探索工具包括对数据的窗口分位数进行稳健的平滑处理,以及使用一系列分位数进行分位数回归的拟合。有了可用的软件来执行这些计算,它们可能比流浪的原理图更容易执行,但是它们不具有相同的构造简单性,易于解释性和广泛的适用性。
下面的R
代码生成了该图,几乎没有更改即可将其应用于原始数据。(忽略(由bplt
调用的bxp
)产生的警告:当没有异常值时,它将抱怨。)
#
# Data
#
set.seed(17)
n <- 1449
x <- sort(rnorm(n, 0, 4))
s <- spline(quantile(x, seq(0,1,1/10)), c(0,.03,-.6,.5,-.1,.6,1.2,.7,1.4,.1,.6),
xout=x, method="natural")
#plot(s, type="l")
e <- rnorm(length(x), sd=1)
y <- s$y + e # ($ interferes with MathJax processing on SE)
#
# Calculations
#
q <- 2^(-(2:floor(log(n/10, 2))))
q <- c(rev(q), 1/2, 1-q)
n.bins <- length(q)+1
bins <- cut(x, quantile(x, probs = c(0,q,1)))
x.binmed <- by(x, bins, median)
x.bincount <- by(x, bins, length)
x.bincount.max <- max(x.bincount)
x.delta <- diff(range(x))
cor(x,y)
#
# Plot
#
par(mfrow=c(1,1))
b <- boxplot(y ~ bins, varwidth=TRUE, plot=FALSE)
plot(x,y, pch=19, col="#00000010",
main="Wandering schematic plot", xlab="X", ylab="Y")
for (i in 1:n.bins) {
invisible(bxp(list(stats=b$stats[,i, drop=FALSE],
n=b$n[i],
conf=b$conf[,i, drop=FALSE],
out=b$out[b$group==i],
group=1,
names=b$names[i]), add=TRUE,
boxwex=2*x.delta*x.bincount[i]/x.bincount.max/n.bins,
at=x.binmed[i]))
}
colors <- hsv(seq(2/6, 1, 1/6), 3/4, 5/6)
temp <- sapply(1:5, function(i) lines(spline(x.binmed, b$stats[i,],
method="natural"), col=colors[i], lwd=2))