Як виконати t-тест з величезними зразками?


11

У мене дві популяції, одна з N = 38,704 (кількість спостережень) та інша з N = 1,313,662. Ці набори даних мають ~ 25 змінних, всі безперервні. Я взяв середнє значення кожного з кожного набору даних і обчислював тестову статистику за формулою

t = середня різниця / STD помилка

Проблема полягає в ступені свободи. За формулою df = N1 + N2-2 ми матимемо більше свободи, ніж може впорядкувати таблиця. Будь-які пропозиції щодо цього? Як перевірити t статистику тут. Я знаю, що t-тест використовується для обробки зразків, але що робити, якщо ми застосовуємо це на великих зразках.

Відповіді:


21

chl вже згадував пастку численних порівнянь при проведенні одночасно 25 тестів з тим самим набором даних. Простий спосіб впоратися з цим - коригувати поріг значення р, поділивши їх на кількість тестів (у даному випадку 25). Більш точна формула: Налагоджене значення p = 1 - (1 - p значення) ^ (1 / n). Однак дві різні формули отримують майже однакове відрегульоване значення p.

Є ще одне важливе питання щодо вашої перевірки гіпотез. Ви, безумовно, зіткнетеся з помилкою типу I (помилково позитивним), за допомогою якого ви зможете виявити деякі дійсно тривіальні відмінності, які є надзвичайно важливими на рівні 99,9999%. Це тому, що коли ви маєте справу зі зразком такого великого розміру (n = 1313,662), ви отримаєте стандартну помилку, яка дуже близька до 0. Це тому, що квадратний корінь 1,313,662 = 1,146. Отже, ви розділите стандартне відхилення на 1,146. Коротше кажучи, ви зафіксуєте хвилинні відмінності, які можуть бути абсолютно несуттєвими.

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


5
+1 для викладення ключових ідей: (1) ми можемо гарантувати, що засоби будуть відрізнятися, коли набори даних такі великі, і (2) деякий інший аналіз, ймовірно, буде більш доцільним і корисним. Але оскільки ми не знаємо про мету аналізу, нам слід бути обережними щодо надання конкретних рекомендацій.
whuber

Спасибі Gaetan .. до тебе ... я думаю, що я забираю це, що стандартне відхилення є кращим показником, коли у тебе є такі великі зразки, як моя.
ayush biyani

1
айуш ... Ви праві. Це в основному це. І це тому, що ваша стандартна помилка стане такою невеликою (через великий розмір вибірки). Це, у свою чергу, завищує статистичну відстань між вашою тестовою та контрольною групами. І, змушує вас в кінцевому рахунку зіткнутися з помилкою типу I (виявити настільки малу різницю, що не має значення). Це поширена проблема при тестуванні гіпотез з великими зразками.
Sympa

14

Студентський т -розподіл стає все ближче і ближче стандартним нормальним розподілом ступенів свободи отримати більше. З 1313662 + 38704 - 2 = 1352364 градусів свободи, t -розподіл буде не відрізнятись від стандартного нормального розподілу, як це можна побачити на малюнку нижче (якщо, можливо, ви не дуже крайні хвости і вам цікаво відмінність абсолютно крихітних р- значень від ще більш крихітних). Таким чином, ви можете використовувати таблицю для стандартного нормального розподілу замість таблиці для t -розподілу.

alt текст


Хлопці, дякую за відповідь. У мене є дані для аналізу. Як я можу додавати дані до цього. Багато запитати у вас людей .. Дякую в очікуванні. Очікуючи швидкої відповіді.
ayush biyani

4
Так? Ви сказали у запитанні, що вже обчислили t-статистику, і chl надав зразок R-коду. Що ще ти хочеш? До речі, я не впевнений, що ти маєш право очікувати чи вимагати швидкої відповіді; нам за це не платять.
onestop

1
@ayush Для вашого попереднього запитання я надаю повну відповідь на ваше запитання (ІМХО) - тоді я дав кілька запитів на ваші коментарі, перш ніж зупинятися, коли я подумав, що ви ставите ще одне запитання, яке не є метою коментаря тут. . Отже, я б запропонував вам або чітко заявити, чи стосується вашого питання теоретичний розгляд або прикладний аналіз даних (в останньому випадку, наведіть нам відтворюваний приклад), або розділіть свої запитання. До речі, у вас все ще є можливість приймати відповіді, які вам здаються корисними (знову ж таки, ваш оригінальний запитання, а не коментарі, які випливають далі).
chl

2
@ayush Ага, і я просто розумію, що ти ніколи не проголосуєш жодного з відповідей, які були надані тобі (хоча у тебе зараз достатньо представників).
chl

@ chl - так .. Я навіть усвідомлюю свою провину і обов'язково виправлю це напевно в публікаціях, що надходять .. Дякую за вказівку на це..Поміркуйте мене на кілька днів наївним любителем ..
ayush biyani

10

Розподіл тенденцію до розподілу (гаусса), коли великий (насправді, коли , вони майже однакові, див. Малюнок, наданий @onestop). У вашому випадку я б сказав, що ДУЖЕ велике, так що ви можете просто використовувати -test. Як наслідок розміру вибірки, будь-які ДУЖЕ невеликі відмінності будуть оголошені істотними. Отже, варто запитати себе, чи справді цікаві ці тести (з повним набором даних).tznn>30nz

Напевно, оскільки ваш набір даних включає 25 змінних, ви робите 25 тестів? Якщо це так, вам, ймовірно, потрібно виправити кілька порівнянь, щоб не завищити показник помилок типу I (див. Пов’язані теми на цьому веб-сайті).

До речі, програмне забезпечення R надасть вам значення р, яке ви шукаєте, не потрібно покладатися на таблиці:

> 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 

0

Ви можете використовувати наступну функцію python, яку я написав, яка може обчислити ефект розміру. Тест тут простий

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}"

1
Хоча реалізація часто змішується з основним змістом у питаннях, ми, як передбачається, є сайтом для надання інформації про статистику, машинне навчання тощо, а не кодом. Буде добре також надати код, але, будь ласка, докладіть детальну відповідь у тексті для людей, які недостатньо добре читають цю мову, щоб розпізнати та витягнути відповідь з коду.
gung - Відновіть Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.