Тестування гіпотези з великими даними


12

Як ви виконуєте тести на гіпотези з великими даними? Я написав наступний сценарій 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

Тестування гіпотези стосується відхилення нульових моделей. Маючи більше даних, ви можете відхилити "більші нульові моделі", наприклад, маючи більше коваріатів або тестуючи кілька гіпотез.
momeara


2
Слон в кімнаті - це репрезентативність "великих даних". Багато величезних наборів даних, зібраних в Інтернеті, є (в кращому випадку) зразками зручності; існують приховані, але добре відомі небезпеки, що криються у намаганні узагальнити від вибірки до більшої сукупності або триває процес.
whuber

1
"Деякі люди сказали, що з" Big Data "важливіше дивитись на розмір ефекту". У розділі "Малі дані" важливо також переглянути розмір ефекту.
Арі Б. Фрідман

Відповіді:


11

Як запропонував Петро, ​​я думаю, що однією з важливих речей в епоху "Великих даних" є ще менший акцент на p-значеннях, а більше на оцінці масштабу ефекту.

Деякі з моїх власних робіт борються з цим способами, які, на мою думку, є навіть підступнішими, ніж з Big Data - для стохастичних обчислювальних моделей ваша сила цілком є ​​функцією терпіння та обчислювальних ресурсів. Це штучна конструкція.

Тому поверніться до оцінки ефекту. Навіть якщо це значне, чи зросте на 0,0001% щось, що має значення в реальному світі?

Я також розмовляв з реверсуванням деяких ідей, що стоять за можливістю звітування про дослідження. Замість того, щоб повідомити про потужність, яку ваше дослідження повинно було виявити спостережуваний ефект, повідомляючи про мінімальний розмір ефекту, який досліджував. Таким чином читач може знати, чи важливість була суттєво гарантована.


7

Прозріння, яке ви хочете, виходитиме з довірчих інтервалів, а не стільки з p-значень. Завдяки дуже великому розміру вибірки ви отримаєте дуже точні довірчі інтервали, за умови правильних ваших статистичних припущень.


Спасибі Майку. Ви кажете, що в цих ситуаціях перевірка довірчих інтервалів покаже, що вони настільки широкі, що нам не слід довіряти точному значенню наших оцінок?
JoeDanger

Цікавим є те, наскільки інтуїтивно це питання було викладено як проблема для великих даних (де тести гіпотез, що інформують нас про те, як навряд чи щось буде 0, є досить безглуздим), а не як проблема для малих даних (де оцінки параметрів дуже неточні. і часто все можна сказати так, наскільки малоймовірним буде параметр точно 0).
jona

6

Важливо дивитися на розмір ефекту незалежно від того, великі дані чи великі.

Маючи чисто випадкові дані, ви повинні отримати вагомий результат у 5% часу. Ось що означає p-значення. Це також справедливо незалежно від розміру вибірки. Що залежить від розміру вибірки, це те, наскільки малий розмір ефекту повинен бути значним; але при великих зразках чистого шуму ймовірні лише невеликі відмінності; при невеликих зразках більші відмінності трапляються частіше. Подумайте, як гортати монету 10 разів: Отримати 8, 9 або навіть 10 голів не було б абсурдом. Однак якщо ви кинете монету в 1000 разів, було б по-справжньому дивно отримати 800 голів, набагато менше 900 або 1000 (точні цифри можна порахувати, але це не справа. Однак, за 1000 кидок - навіть невелике відхилення від 500 буде значущим.

наприклад, тест з випадковими даними, 2 вектори довжиною 10

set.seed(102811)
samp.size <- 10
t10 <- vector("numeric", 100)
for (i in 1:100){
x <- rnorm(samp.size)
y <- rnorm(samp.size)
t <- t.test(x,y)
t10[i] <- t$p.value
sum(t10 < .05)/100

Я отримав 0,07

З двома векторами розміром 1000

set.seed(10291)
samp.size <- 1000
t1000 <- vector("numeric", 100)
for (i in 1:100){
  x <- rnorm(samp.size)
  y <- rnorm(samp.size)
  t <- t.test(x,y)
  t1000[i] <- t$p.value
}  
sum(t1000 < 0.05)/100

Я отримав 0,05.


1
Флорн, я вважаю це добре складеним, чи є якісь навчальні посібники / підручники з статистики, на які можна посилатися, які мають подібний момент?
SAFEX

1
Який конкретний момент? Про перегляд розмірів ефекту? Або про те, що таке випадковий?
Пітер Флом

"Що залежить від розміру вибірки, це те, наскільки малий розмір ефекту повинен бути визнаний значним", це дуже інтуїтивно зрозуміло з тексту, але чи є наукова робота, яка підтверджує це
SAFEX

1
Я не знаю книги, яка це прямо підтверджує - якщо ви хочете якусь книгу математичної статистики, я не людина, яку потрібно запитувати. Я впевнений, що хтось тут буде знати, але вони можуть не побачити цю тему коментарів. Можливо, задайте окреме запитання на кшталт "Явний доказ того, що те, що змінюється ...."
Пітер Флом

1
зроблено і ще раз дякую за інтуїтивний опис ( stats.stackexchange.com/questions/412643/… )
SAFEX

2

Як вже було сказано, під час тестування гіпотез ти фактично досліджуєш нульову гіпотезу, як правило, сподіваючись, що ти можеш її відкинути. Окрім інших відповідей, я хотів би запропонувати дещо інший підхід.

Взагалі кажучи, якщо у вас є якась теорія про те, що може відбуватися у ваших даних, ви можете зробити підтверджуючий аналіз (наприклад, підтверджуючий факторний аналіз, як лише один приклад). Для цього вам знадобиться модель. Потім ви зможете побачити, наскільки ваша модель відповідає вмісту даних. Такий підхід також дозволить протестувати різні моделі один проти одного. Приємна річ з Big Data - це те, що вона дозволяє насправді робити ці тести на моделі. Навпаки, в психології, наприклад, часто це зробити неможливо, оскільки розміри вибірки, як правило, занадто малі для таких видів методів.

Я розумію, що зазвичай з Big Data використовується дослідницький підхід, оскільки поки що немає теорії. Крім того, оскільки я не знаю, що саме вас цікавить, це насправді не може бути варіантом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.