13 votos

Prueba de hipótesis con grandes datos

¿Cómo se realizan pruebas de hipótesis con grandes datos? Escribí el siguiente MATLAB script para enfatizar mi confusión. Todo lo que hace es generar dos series aleatorias, y ejecutar una simple regresión lineal de una variable en la otra. Realiza esta regresión varias veces usando diferentes valores aleatorios e informa los promedios. Lo que tiende a suceder es que a medida que aumento el tamaño de la muestra, los valores p en promedio se vuelven muy pequeños.

Sé que debido a que el poder de una prueba aumenta con el tamaño de la muestra, si la muestra es lo suficientemente grande, los valores p serán lo suficientemente pequeños, incluso con datos aleatorios, para rechazar cualquier prueba de hipótesis. Pregunté por ahí y algunas personas dijeron que con 'Big Data' es más importante mirar el tamaño del efecto, es decir, si la prueba es significativa Y tiene un efecto lo suficientemente grande para que nos preocupemos. Esto se debe a que en los grandes tamaños de muestra los valores p recogerán diferencias muy pequeñas, como se explica aquí .

Sin embargo, el tamaño del efecto puede determinarse mediante el escalado de los datos. Por debajo de la escala de la variable explicativa a una magnitud lo suficientemente pequeña como para que, dado un tamaño de muestra lo suficientemente grande, tenga un gran efecto significativo en la variable dependiente.

Así que me pregunto, ¿cómo podemos obtener alguna visión de Big Data si estos problemas existen?

%make average
%decide from how many values to make average
obs_inside_average = 100;

%make average counter
average_count = 1;

for average_i = 1:obs_inside_average,

%do regression loop
%number of observations
n = 1000;

%first independent variable (constant term)
x(1:10,1) = 1; 

%create dependent variable and the one regressor
for i = 1:10,

    y(i,1) = 100 + 100*rand();

    x(i,2) = 0.1*rand();

end

%calculate coefficients
beta = (x'*x)\x'*y;

%calculate residuals
u = y - x*beta;

%calcuatate sum of squares residuals
s_2 = (n-2)\u'*u;

%calculate t-statistics
design = s_2*inv(x'*x);

%calculate standard errors
stn_err = [sqrt(design(1,1));sqrt(design(2,2))];

%calculate t-statistics
t_stat(1,1) = sqrt(design(1,1))\(beta(1,1) - 0);
t_stat(2,1) = sqrt(design(2,2))\(beta(2,1) - 0);

%calculate p-statistics
p_val(1,1) = 2*(1 - tcdf(abs(t_stat(1,1)), n-2));
p_val(2,1) = 2*(1 - tcdf(abs(t_stat(2,1)), n-2));

%save first beta to data column 1
data(average_i,1) = beta(1,1);

%save second beta to data column 2
data(average_i,2) = beta(2,1);

%save first s.e. to data column 3
data(average_i,3) = stn_err(1,1);

%save second s.e. to data column 4
data(average_i,4) = stn_err(2,1);

%save first t-stat to data column 5
data(average_i,5) = t_stat(1,1);

%save second t-stat to data column 6
data(average_i,6) = t_stat(2,1);

%save first p-val to data column 7
data(average_i,7) = p_val(1,1);

%save second p-val to data column 8
data(average_i,8) = p_val(2,1);

end

%calculate first and second beta average
b1_average = mean(data(:,1));
b2_average = mean(data(:,2));

beta = [b1_average;b2_average];

%calculate first and second s.e. average
se1_average = mean(data(:,3));
se2_average = mean(data(:,4));

stn_err = [se1_average;se2_average];

%calculate first and second t-stat average
t1_average = mean(data(:,5));
t2_average = mean(data(:,6));

t_stat = [t1_average;t2_average];

%calculate first and second p-val average
p1_average = mean(data(:,7));
p2_average = mean(data(:,8));

p_val = [p1_average;p2_average];

beta
stn_err
t_stat
p_val

11voto

Brettski Puntos 5485

Como Peter sugirió, creo que una de las cosas importantes en la era de los "Grandes Datos" es poner aún menos énfasis en los valores p, y más en una estimación de la magnitud del efecto.

Algunos de mis propios trabajos luchan con esto de maneras que creo que son aún más insidiosas que con Big Data - para los modelos computacionales estocásticos, su poder es enteramente una función de paciencia y recursos de computación. Es una construcción artificial.

Así que vuelve a la estimación del efecto. Aunque sea significativo, ¿importa un aumento del 0,0001% en algo en el mundo real?

También he estado jugando con la inversión de algunas de las ideas detrás de la presentación de la potencia de estudio. En lugar de informar sobre el poder que tuvo tu estudio para detectar el efecto observado, informar sobre el tamaño mínimo del efecto que el estudio fue capaz de encontrar. De esa manera el lector puede saber si la importancia estaba esencialmente garantizada.

6voto

Zizzencs Puntos 1358

Es importante observar el tamaño del efecto independientemente de si los datos son grandes o pequeños.

Con datos puramente aleatorios, deberías obtener un resultado significativo el 5% de las veces. Eso es lo que significa el valor p. Esto también es cierto independientemente del tamaño de la muestra. Lo que varía con el tamaño de la muestra es lo pequeño que tiene que ser el tamaño del efecto para que sea significativo; pero, con grandes muestras de ruido puro, sólo es probable que haya pequeñas diferencias; con muestras pequeñas, las diferencias más grandes ocurren más a menudo. Piense en lanzar una moneda 10 veces: Conseguir 8, 9 o incluso 10 cabezas no sería absurdo. Sin embargo, si se tira una moneda 1000 veces, sería verdaderamente impar obtener 800 cabezas, mucho menos 900 o 1000 (los números exactos pueden ser calculados, pero ese no es el punto. Sin embargo, con 1000 lanzamientos, incluso una pequeña desviación de 500 será significativa.

por ejemplo, una prueba t con datos aleatorios, 2 vectores de longitud 10

set.seed(102811)
samp.size <- 10
t10 <- vector("numeric", 100)
for (i in 1:100){
x <- rnorm(samp.size)
y <- rnorm(samp.size)
t <- t.test(x,y)
t10[i] <- t$p.value
sum(t10 < .05)/100

Tengo 0.07

Con dos vectores de tamaño 1000

set.seed(10291)
samp.size <- 1000
t1000 <- vector("numeric", 100)
for (i in 1:100){
  x <- rnorm(samp.size)
  y <- rnorm(samp.size)
  t <- t.test(x,y)
  t1000[i] <- t$p.value
}  
sum(t1000 < 0.05)/100

Tengo 0,05.

2voto

Henrik Ripa Puntos 325

La perspicacia que deseas va a venir de los intervalos de confianza, no tanto de los valores p. Con un tamaño de muestra muy grande vas a obtener unos intervalos de confianza muy precisos, siempre que tus suposiciones estadísticas sean correctas.

2voto

Lohoris Puntos 301

Como ya se ha mencionado, en la prueba de hipótesis se investiga la hipótesis nula, generalmente con la esperanza de poder rechazarla. Además de las otras respuestas me gustaría proponer un enfoque algo diferente.

En términos generales, si se tiene algún tipo de teoría sobre lo que podría estar sucediendo en los datos, se podría hacer un análisis de confirmación (como análisis factorial confirmatorio como sólo un ejemplo). Para hacerlo necesitaría un modelo. Entonces puedes ver lo bien que tu modelo se ajusta a los datos. Este enfoque también permitiría probar diferentes modelos entre sí. Lo bueno de Big Data es que le permite hacer estas pruebas de modelos. Por el contrario, en psicología, por ejemplo, a menudo no es realmente posible hacerlo, porque los tamaños de las muestras tienden a ser demasiado pequeños para este tipo de métodos.

Me doy cuenta de que típicamente con Big Data, se usa un enfoque exploratorio, porque todavía no hay una teoría. Además, como no sé qué es exactamente lo que le interesa, esto podría no ser realmente una opción.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X