Comment effectuez-vous des tests d'hypothèses avec des mégadonnées? J'ai écrit le script MATLAB suivant pour souligner ma confusion. Il ne fait que générer deux séries aléatoires et exécuter une régression linéaire simple d'une variable sur l'autre. Il effectue cette régression plusieurs fois en utilisant différentes valeurs aléatoires et rapporte des moyennes. Ce qui a tendance à se produire lorsque j'augmente la taille de l'échantillon, les valeurs de p deviennent en moyenne très petites.
Je sais que parce que la puissance d'un test augmente avec la taille de l'échantillon, étant donné un échantillon suffisamment grand, les valeurs de p deviendront suffisamment petites, même avec des données aléatoires, pour rejeter tout test d'hypothèse. J'ai demandé autour et certaines personnes ont dit qu'avec le «Big Data», il est plus important de regarder la taille de l'effet, c'est-à-dire. si le test est significatif ET a un effet suffisamment important pour que nous nous en soucions. En effet, dans les échantillons de grande taille, les valeurs de p s'accumuleront de très petites différences, comme cela est expliqué ici .
Cependant, la taille de l'effet peut être déterminée par la mise à l'échelle des données. Ci-dessous, je modifie la variable explicative à une amplitude suffisamment petite pour que, étant donné un échantillon suffisamment grand, elle ait un effet significatif important sur la variable dépendante.
Je me demande donc, comment pouvons-nous obtenir un aperçu du Big Data si ces problèmes existent?
%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
la source
Réponses:
Comme Peter l'a suggéré, je pense qu'une des choses importantes à l'ère du "Big Data" est de mettre encore moins l'accent sur les valeurs p, et plus sur une estimation de l'ampleur de l'effet.
Certains de mes propres travaux ont du mal avec cela d'une manière qui me semble encore plus insidieuse qu'avec le Big Data - pour les modèles de calcul stochastiques, votre puissance est entièrement fonction de la patience et des ressources informatiques. C'est une construction artificielle.
Revenons donc à l'estimation de l'effet. Même si c'est important, une augmentation de 0,0001% de quelque chose importe-t-elle dans le monde réel?
J'ai également essayé de renverser certaines des idées qui sous-tendent le rapport sur le pouvoir d'étude. Au lieu de rapporter la puissance de votre étude pour détecter l'effet observé, signalez la taille minimale de l'effet que l'étude a été poussée à trouver. De cette façon, le lecteur peut savoir si la signification était essentiellement garantie.
la source
Les informations que vous désirez proviendront des intervalles de confiance, pas autant des valeurs de p. Avec un échantillon de très grande taille, vous obtiendrez des intervalles de confiance très précis, à condition que vos hypothèses statistiques soient correctes.
la source
Il est important de regarder la taille de l'effet, que les données soient grandes ou petites.
Avec des données purement aléatoires, vous devriez obtenir un résultat significatif 5% du temps. C'est ce que signifie la valeur p. Cela est également vrai quelle que soit la taille de l'échantillon. Ce qui varie avec la taille de l’échantillon, c’est la taille de l’effet à trouver significative mais, avec de grands échantillons de bruit pur, seules de petites différences sont probables; avec de petits échantillons, des différences plus importantes se produisent plus souvent. Pensez à lancer une pièce 10 fois: obtenir 8, 9 ou même 10 têtes ne serait pas absurde. Cependant, si vous lancez une pièce 1000 fois, il serait vraiment étrange d'obtenir 800 têtes, encore moins 900 ou 1000 (les chiffres exacts peuvent être calculés, mais ce n'est pas le point. Cependant, avec 1000 lancers, même une petite déviation à partir de 500 sera significatif.
par exemple un test t avec des données aléatoires, 2 vecteurs de longueur 10
J'ai 0,07
Avec deux vecteurs de taille 1000
J'ai 0,05.
la source
Comme cela a déjà été mentionné, dans les tests d'hypothèse, vous étudiez en réalité l'hypothèse nulle, généralement dans l'espoir de pouvoir la rejeter. En plus des autres réponses, je voudrais proposer une approche quelque peu différente.
D'une manière générale, si vous avez une sorte de théorie sur ce qui pourrait se passer dans vos données, vous pourriez faire une analyse de confirmation (comme l' analyse factorielle confirmatoire comme un seul exemple). Pour ce faire, vous auriez besoin d'un modèle. Vous pouvez alors voir dans quelle mesure votre modèle correspond aux données. Cette approche permettrait également de tester différents modèles les uns contre les autres. Ce qui est bien avec le Big Data, c'est qu'il vous permet de faire ces tests de modèle. En revanche, en psychologie, par exemple, il n'est souvent pas vraiment possible de le faire, car les tailles d'échantillon ont tendance à être trop petites pour ce type de méthodes.
Je me rends compte qu'avec le Big Data, une approche exploratoire est généralement utilisée, car il n'y a pas encore de théorie. De plus, comme je ne sais pas exactement ce qui vous intéresse, ce n'est peut-être pas vraiment une option.
la source