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