Regressão linear minimizando MAD no sklearn

7

A classe de regressão linear sklearn padrão encontra uma relação linear aproximada entre variável e covariável que minimiza o erro quadrado médio (MSE). Especificamente, seja o número de observações e vamos ignorar a interceptação por simplicidade. Seja o valor variável da ésima observação e sejam os valores das covariáveis ​​da ésima observação. O relacionamento linear tem a forma onde os coeficientes são dados por Nyjjx1 1,j,,xn,jnj

y=β1 1x1 1+βnxn;
β1 1,,βn
β1 1,,βn=umargmEunβ~1 1,,β~n(j=1 1N(yj-β~1 1x1 1,j--β~nxn,j)2).

Desejo agora encontrar os coeficientes que minimizam o desvio médio absoluto (MAD) em vez do erro médio quadrático. Ou seja, quero os coeficientes dados por

β1 1,,βn=umargmEunβ~1 1,,β~n(j=1 1N|yj-β~1 1x1 1,j--β~nxn,j|).

Entendo que, em nítido contraste com o caso MSE, a falta de diferenciabilidade da função de valor absoluto em implica que não há solução analítica para o caso MAD. Mas o último ainda é um problema de otimização convexa e, de acordo com esta resposta, pode ser facilmente resolvido por meio de programação linear.0 0

É possível implementar essa regressão linear no sklearn? Que tal usar outros kits de ferramentas estatísticas?

Giovanni De Gaetano
fonte
5
Eu apenas nomeei isso para reabrir. Sim, a pergunta é sobre como executar uma tarefa no sklearn ou no Python em geral. Mas ele precisa de conhecimento estatístico para entender ou responder , que é explicitamente no tópico .
precisa saber é o seguinte
11
@StephanKolassa Concordo com você - a questão deve ser reaberto ..
James Phillips

Respostas:

12

O MAD esperado é minimizado pela mediana da distribuição ( Hanley, 2001, The American Statistician ). Portanto, você está procurando um modelo que produza a mediana condicional , em vez da média condicional .

Este é um caso especial de , especificamente para o quantil de 50%. Roger Koenker é o principal guru da regressão quantílica ; veja em particular seu livro homônimo .

Existem maneiras de fazer regressão quantílica no Python. Este tutorial pode ser útil. Se você estiver aberto para usar o R, poderá usar o quantregpacote.

Stephan Kolassa
fonte
2
Em python, está disponível em statsmodels statsmodels.org/dev/generated/…
Tim
11
Obrigado! É uma maneira fácil de encarar o problema ...
Giovanni De Gaetano