Regressão linear ou teste T. Como escolher?
\ Frequentemente ficamos envolvidos no entusiasmo em torno de modelos sofisticados de machine learning e avanços em deep learning, mas não devemos ignorar a humilde regressão linear.
\ ==Num mundo de LLM e arquiteturas de ponta, a regressão linear desempenha silenciosamente um papel crucial, e é hora de destacarmos como ela pode ser benéfica ainda hoje.==
\ Considere um cenário em que uma empresa de comércio eletrónico introduz um novo banner e pretendemos avaliar o impacto dele na duração média da sessão. Para tal, foi realizada uma experiência e foram recolhidos dados para análise. Vamos analisar os resultados.
Vamos utilizar uma ferramenta familiar para esta tarefa: o teste t.
Os resultados são bastante promissores:
O aumento na métrica é simplesmente a diferença entre as médias amostrais dos grupos de controlo e de tratamento. No nosso caso, o aumento estimado é de 0,56 minutos, indicando que os utilizadores, em média, passam mais 33 segundos a usar o nosso produto.
Agora, vamos utilizar regressão linear com o vetor de tratamento (se o novo banner é mostrado ou não) como variável independente e a duração média da sessão como variável de saída.
Depois imprimimos o resumo do nosso modelo:
\
\ Notavelmente, o coeficiente para a variável de tratamento alinha-se com a nossa estimativa anterior de aumento de 0,56. Vale a pena notar que o R-quadrado é apenas 0,008, e não explicamos grande parte da variância com este modelo.
Será coincidência que o aumento obtido do teste t e o coeficiente de tratamento sejam iguais? Vamos explorar a conexão.
\ Vamos pensar no que a variável de tratamento reflete. Quando é igual a 1, indica a duração média da sessão para utilizadores que viram o banner; quando é igual a 0, indica a duração média da sessão para utilizadores que não viram o banner. Significa que a variável de tratamento (ou Inclinação da Regressão Linear em termos de regressão linear) representa a mudança na média entre os grupos de controlo e tratamento.
Qual é a hipótese nula para a variável de tratamento na regressão linear?
Qual é a hipótese nula quando aplicamos o teste T para a experiência? É exatamente a mesma.
Portanto, ao calcular as estatísticas t e o valor p para hipóteses idênticas, os nossos resultados permanecem consistentes e idênticos.
No entanto, qual é a razão por trás do uso da regressão linear? Não queremos apenas complicar as coisas.
\ Primeiro, vamos pensar se apenas o tratamento é responsável pela mudança na nossa métrica principal.
\ Na realidade, isto pode não ser totalmente preciso devido à presença de viés de seleção.
\ O viés de seleção nos testes A/B é um tipo de erro quando há uma diferença sistemática entre os grupos comparados que não se deve ao acaso, por exemplo:
\
Observamos que utilizadores antigos são expostos a um novo banner com mais frequência do que novos clientes.
\
A alocação aleatória que usamos em testes AB ajuda-nos a mitigá-lo, mas é difícil eliminá-lo completamente.
\ Vamos formular como estimar o efeito verdadeiro.
ATE: efeito médio do tratamento que pretendemos estimar.
\ ATT: efeito médio do tratamento dos tratados. Também podemos chamá-lo ACE: efeito causal médio. Na verdade, podemos calculá-lo. É a diferença entre as médias amostrais dos grupos de controlo e tratamento.
\ SB: viés de seleção que pretendemos minimizar.
\ Como podemos minimizá-lo?
\ A regressão linear permite-nos adicionar covariáveis/variáveis de confusão. Vamos experimentar e adicionar como uma das variáveis de confusão a duração média da sessão para utilizadores antes da experiência.
E imprimir o resumo do modelo:
O nosso R-quadrado disparou! Agora, explicamos 86% da variância.
\ O nosso efeito de tratamento agora é 0,47.
Então, temos dois efeitos de tratamento: 0,47 e 0,56; qual está correto?
\ Neste caso, sabemos com certeza o efeito verdadeiro porque simulei dados e o aumento 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)
Isso significa que 0,47 é melhor em termos de diferença absoluta e está mais próximo de refletir o aumento real.
Usar regressão linear tem as seguintes vantagens:
\ Podemos usar regressão linear para outros testes, como o teste t de Welch ou o teste Qui-quadrado?
\ A resposta simples é sim. No entanto, temos de fazer alguns ajustes que vamos discutir nos próximos artigos!


