Não consigo encontrar nenhuma biblioteca python que faça regressão múltipla. As únicas coisas que acho apenas fazem uma regressão simples. Eu preciso regredir minha variável dependente (y) contra várias variáveis independentes (x1, x2, x3, etc.).
Por exemplo, com esses dados:
print 'y x1 x2 x3 x4 x5 x6 x7'
for t in texts:
print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" /
.format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7)
(saída para acima :)
y x1 x2 x3 x4 x5 x6 x7
-6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45
-5.0 -4.55 -4.52 -0.71 13.74 4.47 0.16 0.50
-10.0 -10.96 -11.64 -0.98 15.49 4.18 0.19 0.53
-5.0 -1.08 -3.36 0.75 24.72 4.96 0.16 0.60
-8.0 -6.52 -7.45 -0.86 16.59 4.29 0.10 0.48
-3.0 -0.81 -2.36 -0.50 22.44 4.81 0.15 0.53
-6.0 -7.01 -7.33 -0.33 13.93 4.32 0.21 0.50
-8.0 -4.46 -7.65 -0.94 11.40 4.43 0.16 0.49
-8.0 -11.54 -10.03 -1.03 18.18 4.28 0.21 0.55
Como eu os regrediria em python, para obter a fórmula de regressão linear:
Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + + a7x7 + c
Y
podem ser correlacionadas entre si, mas supondo que a independência não modele com precisão o conjunto de dados.Respostas:
sklearn.linear_model.LinearRegression
vai fazer isso:Então
clf.coef_
terá os coeficientes de regressão.sklearn.linear_model
também possui interfaces semelhantes para fazer vários tipos de regularizações na regressão.fonte
score
método o fará;sklearn.metrics
possui alguns outros critérios de avaliação de modelo. Se você deseja coisas como as da resposta de Akavall, o statsmodels tem mais diagnósticos do tipo R.Aqui está um pequeno trabalho que eu criei. Eu verifiquei com R e funciona corretamente.
Resultado:
Resultado:
pandas
fornece uma maneira conveniente de executar o OLS, conforme fornecido nesta resposta:Execute uma regressão OLS com o Pandas Data Frame
fonte
reg_m
função é desnecessariamente complicada.x = np.array(x).T
,x = sm.add_constant(x)
Eresults = sm.OLS(endog=y, exog=x).fit()
é suficiente.x = x[::-1]
dentro de definição de função para entrar em ordem certacoef +- 2 * std err
(na verdade, a distribuição Student-t parametrizada por graus de liberdade nos resíduos). isto é, valores absolutos maiores de t implicam ICs além de zero, mas eles não devem ser comparados diretamente. esclarecimento é um pouco tarde, mas espero que seja útil para alguémSó para esclarecer, o exemplo que você deu é múltipla regressão linear, não multivariada de regressão linear referem. Diferença :
Em resumo:
(Outra fonte .)
fonte
Você pode usar numpy.linalg.lstsq :
Resultado:
Você pode ver a produção estimada com:
Resultado:
fonte
Use
scipy.optimize.curve_fit
. E não apenas para ajuste linear.fonte
Depois de converter seus dados em um dataframe do pandas (
df
),O termo de interceptação é incluído por padrão.
Veja este caderno para mais exemplos.
fonte
Eu acho que essa pode ser a maneira mais fácil de concluir este trabalho:
fonte
A regressão linear múltipla pode ser manipulada usando a biblioteca sklearn, conforme mencionado acima. Estou usando a instalação Anaconda do Python 3.6.
Crie seu modelo da seguinte maneira:
fonte
Você pode usar numpy.linalg.lstsq
fonte
Você pode usar a função abaixo e transmitir um DataFrame:
fonte
O Scikit-learn é uma biblioteca de aprendizado de máquina para Python que pode fazer esse trabalho para você. Apenas importe o módulo sklearn.linear_model para o seu script.
Encontre o modelo de código para regressão linear múltipla usando o sklearn no Python:
É isso aí. Você pode usar esse código como um modelo para implementar a regressão linear múltipla em qualquer conjunto de dados. Para uma melhor compreensão de um exemplo, visite: Regressão linear com um exemplo
fonte
Aqui está um método alternativo e básico:
Em vez de
sm.OLS
você também pode usarsm.Logit
orsm.Probit
e etc.fonte