Wie führen Sie Hypothesentests mit Big Data durch? Ich habe das folgende MATLAB-Skript geschrieben, um meine Verwirrung zu betonen. Es werden lediglich zwei Zufallsreihen generiert und eine einfache lineare Regression einer Variablen auf der anderen ausgeführt. Diese Regression wird mehrmals unter Verwendung verschiedener Zufallswerte durchgeführt und es werden Durchschnittswerte gemeldet. Wenn ich die Stichprobengröße erhöhe, werden die p-Werte im Durchschnitt sehr klein.
Ich weiß, dass p-Werte selbst bei zufälligen Daten klein genug werden, um einen Hypothesentest abzulehnen, da die Leistung eines Tests mit der Stichprobengröße zunimmt, wenn die Stichprobe groß genug ist. Ich habe herumgefragt und einige Leute sagten, dass es bei 'Big Data' wichtiger ist, die Effektgröße zu betrachten, d. H. ob der Test signifikant ist UND eine Wirkung hat, die groß genug ist, um uns darum zu kümmern. Dies liegt daran, dass bei großen Stichprobengrößen die p-Werte sehr kleine Unterschiede aufweisen, wie hier erläutert wird .
Die Effektgröße kann jedoch durch Skalierung der Daten bestimmt werden. Im Folgenden skaliere ich die erklärende Variable auf eine ausreichend kleine Größe, die bei einer ausreichend großen Stichprobengröße einen großen signifikanten Einfluss auf die abhängige Variable hat.
Ich frage mich also, wie wir aus Big Data einen Einblick gewinnen können, wenn diese Probleme bestehen.
%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