Ambos gráficos parecen ajustarse bien a un modelo de regresión lineal y, en ese contexto, me parece que quieres probar la varianza del error de los dos modelos. Esto podría hacerse formulando su problema como una regresión lineal en la que tiene una variable explicativa continua y una variable de respuesta, además de otra variable explicativa que es un indicador de cuál de los grupos está mirando. Para probar la igualdad de la dispersión, básicamente se está probando la homocedasticidad de la varianza del error con respecto al indicador de grupo.
La puesta en práctica: Este es un ejemplo de una forma de hacerlo en R
. Primero generamos algunos datos de ejemplo y los representamos gráficamente, con el fin de imitar el tipo de datos que ha descrito en su pregunta. A continuación, analizamos los datos mediante un análisis de regresión.
#Generate some example data for analysis
set.seed(1)
beta0 <- 0;
beta1 <- 1;
n <- 1000;
x <- rnorm(n, 0, 5);
g <- ifelse(round(runif(n), 0) == 0, "Group 1", "Group 2");
sigma <- 2*(1+2*(g == "Group 2"));
e <- rnorm(n, 0, sigma);
y <- beta0 + beta1*x + e;
DATA <- data.frame(y = y, x = x, g = g);
#Plot example data
library(ggplot2);
ggplot(DATA, aes(x = x, y = y)) +
geom_point() + facet_wrap(~ g, ncol = 1) +
theme(plot.title = element_text(hjust = 0.5, face = 'bold')) +
ggtitle('Scatterplots of data for two groups') +
xlab('Explanatory Variable') + ylab('Response Variable');
Ahora que hemos generado los datos de ejemplo, podemos analizarlos mediante un análisis de regresión. Empezaremos ajustando un modelo de regresión estándar que supone una homocedasticidad (es decir, una varianza de error constante en todos los grupos). Podemos probar formalmente la heteroscedasticidad comprobando si los residuos estudiados de los dos grupos tienen la misma varianza. Para ello se utiliza una prueba estándar de Prueba F para la igualdad de varianza.
#Fit regression model
#Model allows heteroskedasticity in error term across group
MODEL <- lm(y ~ x*g, data = DATA)
#Extract studentised residuals
library(MASS);
RES <- studres(MODEL);
#Perform F-test for equality of variance across groups
library(stats);
VARTEST <- var.test(RES ~ g, alternative = 'two.sided');
VARTEST$p.value;
[1] 4.164927e-119
#Plot residuals by group (reporting variance test)
ggplot(data = data.frame(Residuals = RES, Group = g),
aes(x = Group, y = Residuals)) +
geom_violin(fill = 'blue') +
theme(plot.title = element_text(hjust = 0.5, face = 'bold'),
plot.subtitle = element_text(hjust = 0.5)) +
ggtitle('Residual Plot - Regression Model') +
labs(subtitle = paste0('(Test for homoscedasticity across groups - p-value = ',
sprintf("%.4f", VARTEST$p.value), ')')) +
xlab(NULL) + ylab('Studentised Residual');
A partir de este gráfico y de la prueba de varianza que lo acompaña, podemos ver inmediatamente que hay una fuerte evidencia de heteroscedasticidad en el modelo (es decir, la varianza del error difiere según el grupo). Esto se confirma por el valor p extremadamente bajo de la prueba. En consecuencia, si quiere modelar los datos correctamente, tendrá que cambiar a un modelo de regresión lineal que permita que la varianza del error difiera para los dos grupos (es decir, dicho modelo estimaría dos varianzas de error).