1
resposta

Constante 1

Por que o professor escolheu "1" como constante para a regressão linear?

Sei que ele passou para o X em X = sm.add_constant(dataset, X)

E por isso usou posteriormente resultado.predict([1, x])

Existe algum caso em que usamos uma constante diferente de 1?

1 resposta

Olá Vinícius, tudo bem? Espero que sim!

Desculpe pela demora em retornar.

Para entender o porquê da utilização da constante 1, temos que conhecer a fórmula matemática da regressão linear.

A equação é dada por:

Yi = β1 + β2.X2i + ... + βk.Xki + ui

Onde:

  • Yi é a variável dependente
  • X2 a Xk são as variáveis explicativas
  • β1 é o intercepto
  • β2 a βk são os coeficientes angulares parciais
  • u é a parte aleatória que não pode ser explicada matematicamente

Podemos passar essa equação para a forma matricial, resultando no seguinte:

Equação da regressão linear no formato matricial. Há um vetor de n elementos de Y1 a Yn na parte esqueda da equação. Na parte direita da equação, temos a multiplicação entre duas matrizes e a soma de um vetor. A primeira matriz ao lado direito da equação possui n linhas e k colunas, com a primeira coluna sendo de valores 1 e as outras colunas sendo as variáveis X explicativas. Essa matriz é multiplicada por um vetor de k linhas dos coeficientes betas. Por fim é somado um vetor de n linhas, correspondentes aos valores aleatórios que não podem ser explicados matematicamente

Do lado direito da equação, há uma coluna de valores 1, que é responsável pela multiplicação pelo valor β1, que é o intercepto da equação. Caso esse valor fosse diferente de 1, o intercepto seria obtido de forma incorreta. Caso o valor seja 0, o intercepto não conseguiria ser encontrado, trazendo um viés para o modelo, forçando a passar pela origem, o ponto (0,0,...0) e modificando os coeficientes angulares do modelo.

Portanto, o valor 1 é utilizado para encontrar o valor do intercepto de acordo com a equação original e não pode ser utilizado um valor diferente, caso contrário não seria a equação correta.

A função do pacote statsmodels necessita digitar isso de forma manual, até mesmo criar a coluna de valores 1 com o método add_constant(). Seria interessante se ele fizesse isso de forma automática, mas isso não foi implementado na função e devemos fazer de forma manual.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!