¿Cómo se realizan las pruebas de hipótesis con Big Data? Escribí el siguiente script de MATLAB para enfatizar mi confusión. Todo lo que hace es generar dos series aleatorias y ejecutar una regresión lineal simple de una variable sobre la otra. Realiza esta regresión varias veces utilizando diferentes valores aleatorios y promedios de informes. Lo que suele 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, dada una muestra lo suficientemente grande, los valores p serán lo suficientemente pequeños, incluso con datos aleatorios, para rechazar cualquier prueba de hipótesis. Pregunté y algunas personas dijeron que con 'Big Data' es más importante observar el tamaño del efecto, es decir. si la prueba es significativa Y tiene un efecto lo suficientemente grande como para que nos importe. Esto se debe a que en los tamaños de muestra grandes, 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. A continuación, escalo la variable explicativa a una magnitud lo suficientemente pequeña que, dado un tamaño de muestra lo suficientemente grande, tiene un gran efecto significativo sobre la variable dependiente.
Entonces, me pregunto, ¿cómo podemos obtener una idea de Big Data si existen estos problemas?
%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