Como você realiza testes de hipóteses com big data? Eu escrevi o seguinte script do MATLAB para enfatizar minha confusão. Tudo o que ele faz é gerar duas séries aleatórias e executar uma regressão linear simples de uma variável na outra. Ele realiza essa regressão várias vezes usando diferentes valores aleatórios e médias de relatórios. O que tende a acontecer é que, à medida que aumenta o tamanho da amostra, os valores de p ficam, em média, muito pequenos.
Eu sei que, como o poder de um teste aumenta com o tamanho da amostra, dada uma amostra grande o suficiente, os valores de p se tornarão pequenos o suficiente, mesmo com dados aleatórios, para rejeitar qualquer teste de hipótese. Eu perguntei ao redor e algumas pessoas disseram que com 'Big Data' é mais importante observar o tamanho do efeito, ou seja. se o teste é significativo E tem um efeito suficientemente grande para que possamos nos preocupar. Isso ocorre porque em tamanhos de amostra grandes, os valores p captam diferenças muito pequenas, como é explicado aqui .
No entanto, o tamanho do efeito pode ser determinado pela escala dos dados. Abaixo da escala da variável explicativa para uma magnitude suficientemente pequena que, dado um tamanho de amostra suficientemente grande, ela tem um grande efeito significativo na variável dependente.
Então, eu estou me perguntando, como podemos obter informações sobre o Big Data se esses problemas existem?
%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