Quizás te beneficiarías de una herramienta exploratoria. La división de los datos en deciles de la coordenada x parece haberse realizado con ese espíritu. Con las modificaciones que se describen a continuación, es un enfoque perfecto.
Se han inventado muchos métodos exploratorios bivariados. Una simple propuesta por John Tukey ( EDA , Addison-Wesley 1977) es su "trama esquemática errante". Corta la coordenada x en contenedores, erige un diagrama de caja vertical de los datos y correspondientes en la mediana de cada contenedor, y conecta las partes clave de los gráficos de caja (medianas, bisagras, etc.) en curvas (opcionalmente suavizándolas). Estas "huellas errantes" proporcionan una imagen de la distribución bivariada de los datos y permiten una evaluación visual inmediata de la correlación, linealidad de la relación, valores atípicos y distribuciones marginales, así como una estimación robusta y una evaluación de bondad de ajuste de cualquier función de regresión no lineal .
A esta idea, Tukey agregó el pensamiento, consistente con la idea del diagrama de caja, de que una buena manera de probar la distribución de datos es comenzar en el medio y trabajar hacia afuera, reduciendo a la mitad la cantidad de datos a medida que avanza. Es decir, los contenedores para usar no necesitan cortarse en cuantiles igualmente espaciados, sino que deben reflejar los cuantiles en los puntos y para . 1 - 2 - k k = 1 , 2 , 3 , …2−k1−2−kk=1,2,3,…
Para mostrar las diferentes poblaciones de contenedores, podemos hacer que el ancho de cada diagrama de caja sea proporcional a la cantidad de datos que representa.
El diagrama esquemático errante resultante se vería así. Los datos, desarrollados a partir del resumen de datos, se muestran como puntos grises en el fondo. Sobre esto se ha dibujado el diagrama esquemático errante, con los cinco trazos en color y los diagramas de caja (incluidos los valores atípicos que se muestran) en blanco y negro.
La naturaleza de la correlación cercana a cero se aclara de inmediato: los datos se tuercen. Cerca de su centro, que van desde hasta , tienen una fuerte correlación positiva. En valores extremos, estos datos exhiben relaciones curvilíneas que tienden a ser en general negativas. El coeficiente de correlación neto (que resulta ser para estos datos) es cercano a cero. Sin embargo, insistir en interpretar eso como "casi sin correlación" o "correlación significativa pero baja" sería el mismo error burlado en el viejo chiste sobre la estadística que estaba contenta con su cabeza en el horno y sus pies en la nevera porque, en promedio, La temperatura era cómoda. A veces un solo número no sirve para describir la situación.x = 4 - 0.074x=−4x=4−0.074
Las herramientas exploratorias alternativas con propósitos similares incluyen suavidades robustas de cuantiles en ventana de los datos y ajustes de regresiones cuantiles usando un rango de cuantiles. Con la disponibilidad inmediata del software para realizar estos cálculos, tal vez se han vuelto más fáciles de ejecutar que un trazado esquemático errante, pero no disfrutan de la misma simplicidad de construcción, facilidad de interpretación y amplia aplicabilidad.
El siguiente R
código produjo la figura y se puede aplicar a los datos originales con poco o ningún cambio. (Ignore las advertencias producidas por bplt
(llamado por bxp
): se queja cuando no tiene valores atípicos para dibujar).
#
# 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))