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
fonte
Respostas:
Como Peter sugeriu, acho que uma das coisas importantes na era do "Big Data" é colocar ainda menos ênfase nos valores de p e mais em uma estimativa da magnitude do efeito.
Parte do meu trabalho lida com isso de maneiras que eu acho ainda mais insidiosas do que com o Big Data - para modelos computacionais estocásticos, seu poder é inteiramente uma função da paciência e dos recursos de computação. É uma construção artificial.
Então volte para a estimativa do efeito. Mesmo que seja significativo, um aumento de 0,0001% em algo importa no mundo real?
Também andei brincando com a reversão de algumas das idéias por trás do relatório do poder de estudo. Em vez de relatar o poder que seu estudo teve para detectar o efeito observado, relatou o tamanho mínimo de efeito que o estudo foi acionado para encontrar. Dessa forma, o leitor pode saber se o significado era essencialmente garantido.
fonte
A percepção que você deseja virá de intervalos de confiança, não tanto de valores-p. Com um tamanho de amostra muito grande, você obterá intervalos de confiança muito precisos, desde que suas suposições estatísticas estejam corretas.
fonte
É importante observar o tamanho do efeito, independentemente de os dados serem grandes ou pequenos.
Com dados puramente aleatórios, você deve obter um resultado significativo 5% do tempo. É isso que o valor p significa. Isso também é verdade, independentemente do tamanho da amostra. O que varia com o tamanho da amostra é quão pequeno o tamanho do efeito deve ser considerado significativo; mas, com grandes amostras de ruído puro, apenas pequenas diferenças são prováveis; com amostras pequenas, diferenças maiores ocorrem com mais frequência. Pense em jogar uma moeda 10 vezes: obter 8, 9 ou até 10 cabeças não seria absurdo. No entanto, se você jogar uma moeda 1000 vezes, seria realmente estranho obter 800 cabeças, muito menos 900 ou 1000 (os números exatos podem ser calculados, mas esse não é o ponto. No entanto, com 1000 lançamentos, mesmo um pequeno desvio de 500 será significativo.
por exemplo, um teste t com dados aleatórios, 2 vetores de comprimento 10
Eu tenho 0,07
Com dois vetores do tamanho 1000
Eu tenho 0,05.
fonte
Como já foi mencionado, no teste de hipóteses você está realmente investigando a hipótese nula, geralmente na esperança de poder rejeitá-la. Além das outras respostas, gostaria de propor uma abordagem um pouco diferente.
De um modo geral, se você tem algum tipo de teoria sobre o que pode estar acontecendo em seus dados, pode fazer uma análise confirmatória (como a análise fatorial confirmatória como apenas um exemplo). Para fazer isso, você precisaria de um modelo. Você pode ver como seu modelo se ajusta aos dados. Essa abordagem também permitiria testar modelos diferentes entre si. O bom do Big Data é que ele permite que você efetue esses testes de modelo. Em contraste, na psicologia, por exemplo, muitas vezes não é realmente possível fazê-lo, porque o tamanho da amostra tende a ser muito pequeno para esse tipo de método.
Percebo que, normalmente, com Big Data, uma abordagem exploratória é usada, porque ainda não há teoria. Além disso, como não sei exatamente em que você está interessado, isso pode não ser realmente uma opção.
fonte