Testowanie hipotez za pomocą Big Data

12

Jak przeprowadzasz testy hipotez z użyciem dużych zbiorów danych? Napisałem następujący skrypt MATLAB, aby podkreślić moje zamieszanie. Wystarczy wygenerować dwie losowe serie i przeprowadzić prostą regresję liniową jednej zmiennej na drugiej. Wykonuje tę regresję kilka razy, używając różnych wartości losowych i zgłasza średnie. Co się dzieje, gdy zwiększam rozmiar próbki, wartości p średnio stają się bardzo małe.

Wiem, że ponieważ moc testu wzrasta wraz z rozmiarem próbki, biorąc pod uwagę wystarczająco dużą próbkę, wartości p staną się wystarczająco małe, nawet przy losowych danych, aby odrzucić dowolny test hipotez. Zapytałem, a niektórzy powiedzieli, że w przypadku „Big Data” ważniejsze jest przyjrzenie się wielkości efektu, tj. czy test jest znaczący ORAZ ma wystarczająco duży wpływ, aby nas obchodzić. Wynika to z tego, że w dużych próbkach wartości p wychwycą bardzo małe różnice, tak jak to wyjaśniono tutaj .

Jednak wielkość efektu można określić przez skalowanie danych. Poniżej skaluję zmienną objaśniającą do wystarczająco małej wielkości, która biorąc pod uwagę wystarczająco dużą wielkość próby, ma duży znaczący wpływ na zmienną zależną.

Zastanawiam się więc, w jaki sposób możemy uzyskać wgląd w Big Data, jeśli te problemy występują?

%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
JoeDanger
źródło
Testowanie hipotez dotyczy odrzucania modeli zerowych. Przy większej ilości danych możesz odrzucić „większe modele zerowe”, np. Poprzez posiadanie większej liczby zmiennych towarzyszących lub testowanie wielu hipotez.
momeara
2
Słoń w pokoju reprezentuje „duże zbiory danych”. Wiele ogromnych zbiorów danych zebranych w Internecie to (w najlepszym razie) próbki wygody; w próbie uogólnienia z próby na większą populację lub trwający proces kryją się znane, ale znane niebezpieczeństwa.
whuber
1
„Niektórzy twierdzili, że w przypadku„ Big Data ”ważniejsze jest przyjrzenie się wielkości efektu”. W przypadku „Małych danych” ważne jest również przyjrzenie się wielkości efektu.
Ari B. Friedman

Odpowiedzi:

11

Jak sugerował Peter, uważam, że jedną z ważnych rzeczy w erze „Big Data” jest jeszcze mniejszy nacisk na wartości p, a bardziej na oszacowanie wielkości efektu.

Niektóre z moich własnych dzieł zmagają się z tym w sposób, który moim zdaniem jest jeszcze bardziej podstępny niż w przypadku Big Data - w przypadku stochastycznych modeli obliczeniowych twoja moc jest całkowicie funkcją cierpliwości i zasobów obliczeniowych. To sztuczny konstrukt.

Wróć więc do oszacowania efektu. Nawet jeśli jest to znaczące, czy wzrost o 0,0001% ma znaczenie w prawdziwym świecie?

Pracowałem również nad odwróceniem niektórych pomysłów związanych z raportowaniem mocy badań. Zamiast raportować moc, którą badanie musiało wykryć obserwowany efekt, podać minimalną wielkość efektu, którą badanie było w stanie znaleźć. W ten sposób czytelnik może wiedzieć, czy znaczenie zostało zasadniczo zagwarantowane.

Fomite
źródło
7

Wgląd, którego pragniesz, będzie pochodził z przedziałów ufności, nie tyle z wartości p. Przy bardzo dużej próbie uzyskasz bardzo precyzyjne przedziały ufności, pod warunkiem, że twoje założenia statystyczne są prawidłowe.

Mike Flynn
źródło
Dzięki Mike. Czy mówisz w takich sytuacjach, że przedziały ufności wykażą, że są one tak szerokie, że nie powinniśmy ufać dokładnej wartości naszych szacunków?
JoeDanger,
Interesujące jest to, jak intuicyjnie pytanie zostało sformułowane jako problem dla dużych danych (gdzie testy hipotez informujące nas o tym, jak mało prawdopodobne jest 0, są raczej bezcelowe), a nie jako problem dla małych danych (gdzie oszacowania parametrów są bardzo nieprecyzyjne i często wszystko, co można powiedzieć, to to, jak mało prawdopodobne jest, aby parametr miał dokładnie 0).
jona
6

Ważne jest, aby spojrzeć na wielkość efektu niezależnie od tego, czy dane są duże, czy małe.

Przy danych czysto losowych powinieneś uzyskać znaczący wynik w 5% przypadków. To właśnie oznacza wartość p. Dotyczy to również niezależnie od wielkości próbki. Różni się w zależności od wielkości próbki, jak mały rozmiar efektu musi być uznany za znaczący; ale przy dużych próbkach czystego hałasu prawdopodobne są tylko niewielkie różnice; przy małych próbkach większe różnice występują częściej. Pomyśl o rzucie monetą 10 razy: zdobycie 8, 9 lub nawet 10 głów nie byłoby absurdalne. Jeśli jednak rzucisz monetą 1000 razy, naprawdę byłoby dziwnie zdobyć 800 głów, znacznie mniej 900 lub 1000 (dokładne liczby można obliczyć, ale nie o to chodzi. Jednak przy 1000 rzutach nawet małe odchylenie od 500 będzie znaczących.

np. test t z danymi losowymi, 2 wektory o długości 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

Mam 0,07

Z dwoma wektorami o wielkości 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

Mam 0,05.

Peter Flom - Przywróć Monikę
źródło
1
Florn, uważam to za dobrze zredagowane, czy są jakieś podręczniki akademickie / statystyki, do których można się odwoływać i które mają podobny punkt?
SAFEX,
1
Który konkretny punkt? O spojrzeniu na rozmiary efektów? Lub o tym, co jest losowe?
Peter Flom - Przywróć Monikę
„To, co różni się w zależności od wielkości próbki, to to, jak mały rozmiar efektu musi być uznany za znaczący”, jest to bardzo intuicyjne z tekstu, ale czy istnieją prace akademickie, które to potwierdzają
SAFEX
1
Nie znam książki, która wyraźnie to potwierdza - jeśli chcesz jakiejś książki ze statystykami matematycznymi, nie jestem osobą, o którą można zapytać. Jestem pewien, że ktoś tutaj będzie wiedział, ale może nie widzieć tego wątku komentarza. Być może zadaj osobne pytanie, np. „Wyraźny dowód na to, co się różni…”
Peter Flom - Przywróć Monikę
1
zrobione i jeszcze raz dziękuję za intuicyjny opis ( stats.stackexchange.com/questions/412643/… )
SAFEX
2

Jak już wspomniano, w testowaniu hipotez badasz hipotezę zerową, zwykle w nadziei, że możesz ją odrzucić. Oprócz innych odpowiedzi chciałbym zaproponować nieco inne podejście.

Ogólnie rzecz biorąc, jeśli masz jakąś teorię na temat tego, co może się dziać w twoich danych, możesz wykonać analizę potwierdzającą (np. Analizę czynnikową potwierdzającą jako tylko jeden przykład). Aby to zrobić, potrzebujesz modelu. Następnie możesz sprawdzić, jak dobrze twój model pasuje do danych. Takie podejście pozwoliłoby również na przetestowanie różnych modeli między sobą. Zaletą Big Data jest to, że pozwala ona faktycznie wykonywać te testy modeli. W przeciwieństwie do tego w psychologii np. Często nie jest to możliwe, ponieważ rozmiary prób bywają zbyt małe dla tego rodzaju metod.

Zdaję sobie sprawę, że zazwyczaj w Big Data stosuje się podejście eksploracyjne, ponieważ nie ma jeszcze teorii. Ponadto, ponieważ nie wiem, czym dokładnie jesteś zainteresowany, może to nie być opcja.

Jens Kouros
źródło