Як ви виконуєте тести на гіпотези з великими даними? Я написав наступний сценарій MATLAB, щоб підкреслити мою розгубленість. Все, що вона робить, - це генерувати два випадкових ряду та запускати просту лінійну регресію однієї змінної на іншу. Він виконує цю регресію кілька разів, використовуючи різні випадкові значення та повідомляє середні значення. Що, як правило, відбувається, коли я збільшую розмір вибірки, значення p в середньому отримують дуже малі.
Я знаю, що, оскільки потужність тесту збільшується з розміром вибірки, даючи достатньо велику вибірку, значення p стануть досить маленькими, навіть із випадковими даними, щоб відхилити будь-який тест на гіпотезу. Я запитав навколо, і деякі люди сказали, що з "Big Data" важливіше дивитись на розмір ефекту, тобто. чи є тест значущим І чи достатньо великий для нас ефект. Це тому, що у великих розмірах вибірки р-значення набере дуже малі відмінності, як це пояснено тут .
Однак розмір ефекту можна визначити за допомогою масштабування даних. Нижче я масштабую пояснювальну змінну на досить малу величину, що з огляду на достатньо великий розмір вибірки, вона робить великий вплив на залежну змінну.
Тож мені цікаво, як ми можемо отримати будь-яку інформацію з Big Data, якщо ці проблеми існують?
%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