¿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