Jak wykonać test T z dużymi próbkami?

11

Mam dwie populacje, jedną z N = 38 704 (liczba obserwacji), a drugą z N = 1 313 662. Te zestawy danych mają ~ 25 zmiennych, wszystkie ciągłe. Wziąłem średnią z każdego z każdego zestawu danych i obliczyłem statystyki testowe przy użyciu wzoru

t = średnia różnica / błąd standardowy

Problemem jest stopień swobody. Zgodnie z formułą df = N1 + N2-2 będziemy mieć więcej swobody, niż może obsłużyć stół. Wszelkie sugestie na ten temat? Jak sprawdzić statystykę t tutaj. Wiem, że test t służy do obsługi próbek, ale co, jeśli zastosujemy to do dużych próbek.

ayush biyani
źródło

Odpowiedzi:

21

chl wspominał już o pułapce wielokrotnych porównań przeprowadzając jednocześnie 25 testów z tym samym zestawem danych. Łatwym sposobem na poradzenie sobie z tym jest dostosowanie progu wartości p przez podzielenie ich przez liczbę testów (w tym przypadku 25). Bardziej precyzyjna formuła jest następująca: Skorygowana wartość p = 1 - (1 - wartość p) ^ (1 / n). Jednak te dwa różne wzory wyprowadzają prawie taką samą skorygowaną wartość p.

Jest jeszcze jeden poważny problem z testowaniem hipotez. Z całą pewnością napotkasz błąd typu I (fałszywie dodatni), w wyniku którego odkryjesz bardzo trywialne różnice, które są niezwykle istotne na poziomie 99,9999%. Dzieje się tak dlatego, że gdy mamy do czynienia z próbką o tak dużym rozmiarze (n = 1 313 662), otrzymamy standardowy błąd, który jest bardzo bliski 0. To dlatego, że pierwiastek kwadratowy z 1 313 662 = 1146. Odchylenie standardowe podzielisz przez 1,146. Krótko mówiąc, uchwycisz drobne różnice, które mogą być całkowicie nieistotne.

Sugerowałbym odejście od tej struktury testowania hipotez i zamiast tego przeprowadzenie analizy typu efektu wielkości. W tych ramach miarą odległości statystycznej jest odchylenie standardowe. W przeciwieństwie do błędu standardowego, odchylenie standardowe nie jest sztucznie zmniejszane przez wielkość próbki. Takie podejście pozwoli lepiej zrozumieć istotne różnice między zestawami danych. Wielkość efektu jest również znacznie bardziej skoncentrowana na przedziale ufności wokół średniej średniej różnicy, co jest znacznie bardziej pouczające niż testowanie hipotez koncentruje się na istotności statystycznej, która często wcale nie jest znacząca. Mam nadzieję, że to pomaga.

Sympa
źródło
5
+1 za przedstawienie kluczowych pomysłów: (1) możemy zagwarantować, że środki będą się różnić, gdy zbiory danych będą tak duże, i (2) niektóre inne analizy będą prawdopodobnie bardziej odpowiednie i przydatne. Ponieważ jednak nie wiemy o celu analizy, powinniśmy zachować ostrożność przy wydawaniu konkretnych zaleceń.
whuber
Dziękuję Gaetan .. mam cię .. Myślę, że to, co od tego wyciągam, to to, że odchylenie standardowe jest lepszym miernikiem, gdy masz duże próbki, takie jak moja .. proszę daj mi znać, jeśli coś pominąłem.
ayush biyani
1
ayush ... Masz rację. To jest w zasadzie to. A to dlatego, że standardowy błąd stanie się tak mały (ze względu na duży rozmiar próbki). To z kolei zawyża statystyczną odległość między grupą testową a grupą kontrolną. Powoduje to, że ostatecznie trafiasz na błąd typu I (odkryj różnicę, która jest tak mała, że ​​nie ma znaczenia). Jest to powszechny problem w testowaniu hipotez z dużymi próbkami.
Sympa
14

Studenta t -Dystrybucja staje się bliżej i bliżej rozkładu normalnego jako stopni swobody uzyskać większe. Przy 1313662 + 38704 - 2 = 1352364 stopni swobody, rozkład t będzie nie do odróżnienia od standardowego rozkładu normalnego, jak widać na poniższym obrazku (chyba że jesteś w skrajnym ogonie i jesteś zainteresowany odróżniając absolutnie małe wartości p od jeszcze mniejszych). Możesz więc użyć tabeli dla standardowego rozkładu normalnego zamiast tabeli dla rozkładu t .

alternatywny tekst

jeden przystanek
źródło
Chłopaki, dzięki za odpowiedź. Mam dane do analizy. Jak dołączyć do tego dane. Dużo was pytam ludzi .. Dzięki z niecierpliwością. Oczekiwanie szybkiej odpowiedzi.
ayush biyani
4
Co? Powiedziałeś w pytaniu, że już obliczyłeś statystykę t, a chl dostarczył przykładowy kod R. Czego jeszcze chcesz? Nawiasem mówiąc, nie jestem pewien, czy masz prawo oczekiwać lub poprosić o szybką odpowiedź; nie otrzymujemy za to zapłaty.
onestop
1
@ayush W przypadku twojego poprzedniego pytania udzielam pełnej odpowiedzi na twoje pytanie (IMHO) - następnie podałem kilka uwag do twoich komentarzy, zanim przestałem, kiedy myślałem, że pytasz o inne pytanie, które nie jest celem opcji komentowania tutaj . Proponuję więc, abyś wyraźnie stwierdził, czy twoje pytanie dotyczy rozważań teoretycznych lub zastosowanej analizy danych (w tym drugim przypadku, daj nam powtarzalny przykład) lub rozdziel swoje pytania. BTW, nadal masz opcję akceptowania odpowiedzi, które uważasz za przydatne (ponownie, napisz swoje pierwotne pytanie, a nie poniższe komentarze).
chl
2
@ayush Ah, i zdaję sobie sprawę, że nigdy nie głosujesz na żadną z odpowiedzi, które zostały ci dostarczone (chociaż masz teraz wystarczającą liczbę przedstawicieli).
chl
@ chl-- tak .. nawet zdaję sobie sprawę z mojej winy i naprawię to na pewno w postach ... Dzięki za wskazanie tego ... Zastanów się przez kilka dni naiwnym amatorem ..
Ayush Biyani
10

Rozkład tendencję do rozkładu (gaussowskiego), gdy jest duże (w rzeczywistości, gdy , są prawie identyczne, patrz zdjęcie dostarczone przez @onestop). W twoim przypadku powiedziałbym, że jest BARDZO duże, więc możesz po prostu użyć testu- . W wyniku wielkości próby wszelkie BARDZO niewielkie różnice zostaną uznane za znaczące. Warto więc zadać sobie pytanie, czy te testy (z pełnym zestawem danych) są naprawdę interesujące.z n n > 30 n ztznn>30nz

Dla pewności, ponieważ zestaw danych zawiera 25 zmiennych, wykonujesz 25 testów? W takim przypadku prawdopodobnie trzeba poprawić wiele porównań, aby nie zawyżać wskaźnika błędów typu I (patrz pokrewny wątek na tej stronie).

BTW, oprogramowanie R daje wartości p, których szukasz, nie musisz polegać na tabelach:

> x1 <- rnorm(n=38704)
> x2 <- rnorm(n=1313662, mean=.1)
> t.test(x1, x2, var.equal=TRUE)

    Two Sample t-test

data:  x1 and x2 
t = -17.9156, df = 1352364, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -0.1024183 -0.0822190 
sample estimates:
  mean of x   mean of y 
0.007137404 0.099456039 
chl
źródło
0

Możesz użyć następującej funkcji pytona, którą napisałem, która może obliczyć efekt rozmiaru. Test jest tutaj prosty

import numpy as np 
from scipy.stats import t

def Independent_tTest(x1, x2, std1, std2, n1, n2): 
    '''Independent t-test between two sample groups

    Note: 
        The test assumptions:
            H0: The two samples are not significantly different (from same population)
            H1: The two samples are siginficantly different (from two populations)
            - Accept the H1 if t-value > t-critical or p-value value < p-value critical
    Args: 
        x1(float): mean of the first sample group.
        x2(float): mean of the second sample group.
        std1(float): standard deviation of first sample group.
        std2(float): standard devation of second sample group.

    Return: 
        degree_of_freedome, t-statistics, p-value

    '''
    degree_of_freedom = n1 + n2  -2
    corrected_degree_of_freedom = (((std1**2/n1) + (std2**2/n2))**2)/(((std1**4)/((n1**2)*(n1-1)))+((std2**4)/((n2**2)*(n2-1))))

    poolvar = ((n1-1)*(std1**2)+ (n2-1)*(std2**2))/corrected_degree_of_freedom
    t_value = (x1 -x2)/np.sqrt(poolvar*((1/n1)+ (1/n2)))
    sig = 2 * (1-(t.cdf(abs(t_value), corrected_degree_of_freedom)))
    effect_size = np.sqrt((t_value**2)/(t_value**2+corrected_degree_of_freedom))
    return f"corrected degree of freedom {corrected_degree_of_freedom:0.4f} give a t-value = {t_value:0.4f}, with significant = {sig:0.4f} with effectsize ={effect_size:0.4f}"
Dr Neo
źródło
1
Chociaż implementacja jest często pomieszana z treścią merytoryczną w pytaniach, mamy być witryną do dostarczania informacji na temat statystyk, uczenia maszynowego itp., A nie kodu. Dobrze jest również podać kod, ale proszę opracować merytoryczną odpowiedź w tekście dla osób, które nie czytają tego języka wystarczająco dobrze, aby rozpoznać i wyodrębnić odpowiedź z kodu.
gung - Przywróć Monikę