Regresie liniară sau Test T. Cum să alegi?
\ Adesea ne lăsăm prinși în agitația din jurul modelelor sofisticate de machine learning și descoperirilor din deep learning, dar să nu trecem cu vederea umila regresie liniară.
\ ==Într-o lume a LLM și arhitecturilor de ultimă oră, regresia liniară joacă în liniște un rol crucial, și este momentul să aruncăm o lumină asupra modului în care poate fi benefică chiar și astăzi.==
\ Considerați un scenar în care o companie de e-commerce introduce un banner nou, și dorim să evaluăm impactul acestuia asupra duratei medii a sesiunii. Pentru a realiza acest lucru, a fost efectuat un experiment, și au fost colectate date pentru analiză. Să analizăm rezultatele.
Să folosim un instrument familiar pentru această sarcină: testul t.
Rezultatele sunt destul de promițătoare:
Creșterea în metrică este pur și simplu diferența dintre mediile eșantioanelor grupurilor de control și tratament. În cazul nostru, creșterea estimată este de 0,56 minute, indicând că utilizatorii, în medie, petrec cu 33 de secunde mai mult folosind produsul nostru.
Acum, să folosim regresia liniară cu vectorul de tratament (dacă noul banner este afișat sau nu) ca variabilă independentă și durata medie a sesiunii ca variabilă de ieșire.
Apoi printăm rezumatul modelului nostru:
\
\ Este de remarcat că coeficientul pentru variabila de tratament se aliniază cu estimarea noastră anterioară de creștere de 0,56. Merită menționat că R-pătrat este doar 0,008, și nu explicăm prea mult din varianță cu acest model.
Este o coincidență faptul că creșterea obținută din testul t și coeficientul de tratament sunt aceleași? Să explorăm conexiunea.
\ Să ne gândim la ce reflectă variabila de tratament. Când este egală cu 1, indică durata medie a sesiunii pentru utilizatorii care au vizualizat banner-ul; când este egală cu 0, indică durata medie a sesiunii pentru utilizatorii care nu au văzut banner-ul. Aceasta înseamnă că variabila de tratament (sau panta în termeni de regresie liniară) semnifică schimbarea în medie între grupurile de control și tratament.
Care este ipoteza nulă pentru variabila de tratament în regresia liniară?
Care este ipoteza nulă când aplicăm Testul T pentru experiment? Este complet aceeași.
Prin urmare, atunci când calculăm statistica t și valoarea p pentru ipoteze identice, constatările noastre rămân consistente și identice.
Totuși, care este motivul din spatele utilizării regresiei liniare? Nu vrem doar să complicăm lucrurile.
\ În primul rând, să ne gândim dacă doar tratamentul este responsabil pentru schimbarea în metrica noastră primară.
\ În realitate, acest lucru ar putea să nu fie complet corect din cauza prezenței bias-ului de selecție.
\ Bias-ul de selecție în testarea A/B este un tip de eroare când există o diferență sistematică între grupurile comparate care nu se datorează întâmplării, de exemplu:
\
Observăm că utilizatorii vechi sunt expuși la un banner nou mai des decât clienții noi.
\
Alocarea aleatorie pe care o folosim în testele AB ne ajută să o atenuăm, dar este greu de eliminat complet.
\ Să formulăm cum să estimăm efectul real.
ATE: efectul mediu al tratamentului pe care urmărim să-l estimăm.
\ ATT: efectul mediu al tratamentului celor tratați. Îl putem numi și ACE: efectul cauzal mediu. Îl putem calcula efectiv. Este diferența dintre mediile eșantioanelor grupurilor de control și tratament.
\ SB: bias-ul de selecție pe care urmărim să-l minimizăm.
\ Cum îl putem minimiza?
\ Regresia liniară ne permite să adăugăm covariate/variabile confundante. Să încercăm și să adăugăm ca o variabilă confundantă durata medie a sesiunii pentru utilizatori înainte de experiment.
Și printăm rezumatul modelului:
R-pătrat-ul nostru a crescut vertiginos! Acum, explicăm 86% din varianță.
\ Efectul nostru de tratament acum este 0,47.
Deci, avem două efecte de tratament: 0,47 și 0,56; care este corect?
\ În acest caz, cunoaștem cu siguranță efectul real deoarece am simulat datele și creșterea reală: 0,5
import numpy as np import pandas as pd from scipy import stats import statsmodels.api as sm np.random.seed(45) n = 500 x = np.random.normal(loc = 10 ,scale = 3, size= 2 * n) y = x + np.random.normal(loc = 2 , scale = 1 ,size = len(x)) # For 50% of users we simulate treatment effect treat = 1 * (np.random.rand(2 * n) <= 0.5) experiment = pd.DataFrame(x, columns=["covariate"]) experiment['metric'] = y experiment['treatment'] = treat experiment['noise'] = np.random.normal(size = len(experiment)) # Add noise and uplift to 'metric' for rows where 'treat' is equal to 1 # The real uplift is 0.5 experiment['metric'] = experiment.apply(lambda row: row['metric'] + 0.5 * row['treatment'] + row['noise'] if row['treatment'] == 1 else row['metric'], axis=1)
Aceasta înseamnă că 0,47 este mai bună în termeni de diferență absolută și este mai aproape de a reflecta creșterea reală.
Utilizarea regresiei liniare are următoarele avantaje:
\ Putem folosi regresia liniară pentru alte teste, cum ar fi testul t Welch sau testul Chi-pătrat?
\ Răspunsul simplu este da. Totuși, trebuie să facem unele ajustări pe care le vom discuta în următoarele articole!

![[ANALIZĂ] O privire mai atentă asupra listării PNB Holdings a lui Lucio Tan la PSE](https://www.rappler.com/tachyon/2026/01/1thnwww4nv8.jpg)
