La régression linéaire Multiple en Python
Je n'arrive pas à trouver toutes les bibliothèques python qui n'régression multiple. Les seules choses que je trouve que faire de régression simple. J'ai besoin de régresser ma variable dépendante (y) à l'encontre de plusieurs variables indépendantes (x1, x2, x3, etc.).
Par exemple, avec ces données:
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)
(sortie pour au dessus:)
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
Comment aurais-je régresser ces en python, pour obtenir la formule de régression linéaire:
Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + +a7x7 + c
- n'étant pas un expert, mais si les variables sont indépendantes, ne pouvez-vous pas simplement exécuter la régression simple à l'encontre de chacun et de résumer le résultat?
- Vous ne pouvez pas supposer que les variables sont indépendantes si. En fait, si vous êtes en supposant que les variables sont indépendantes, vous pouvez éventuellement être modélisation de vos données de manière incorrecte. En d'autres termes, les réponses
Y
peut être en corrélation les uns avec les autres, mais en supposant l'indépendance n'est pas exactement le modèle de l'ensemble de données. - désolé si cela a un dum question, mais pourquoi importe-t-il si le raw en fonction des variables x_i sont indépendants ou non? Comment cela affecte le prédicteur (=modèle)?
Vous devez vous connecter pour publier un commentaire.
sklearn.linear_model.LinearRegression
va le faire:Puis
clf.coef_
aura les coefficients de régression.sklearn.linear_model
dispose également d'une interface semblable à celle de réaliser divers types de régularisations sur la régression.score
méthode va le faire;sklearn.metrics
a un autre modèle de critères d'évaluation. Si vous voulez des trucs comme dans Akavall réponse, statsmodels a plus de R-comme les diagnostics.Ici est un peu de travail autour de ce que j'ai créé. Je l'ai vérifié avec R et il fonctionne correct.
Résultat:
De sortie:
pandas
fournit un moyen pratique pour exécuter des moindres carrés ordinaires comme indiqué dans cette réponse:Exécuter une régression des moindres carrés ordinaires avec des Pandas bloc de Données
reg_m
fonction est inutilement compliqué.x = np.array(x).T
,x = sm.add_constant(x)
etresults = sm.OLS(endog=y, exog=x).fit()
est assez.x = x[::-1]
au sein de définition de la fonction à obtenir dans le bon ordrecoef +- 2 * std err
(en fait, les Étudiant-t distribution paramétrée par degrés de liberté dans les résidus). c'est à dire plus absolu des valeurs t impliquent de la Cei en outre à partir de zéro, mais ils ne devraient pas être comparés directement. clarification est un peu en retard, mais j'espère que c'est utile à quelqu'unJuste pour clarifier, l'exemple que vous avez donné est plusieurs de régression linéaire, pas multivariée de régression linéaire consulter. Différence:
En bref:
(Un autre source.)
Vous pouvez utiliser numpy.linalg.lstsq:
Résultat:
Vous pouvez voir la sortie estimée avec:
Résultat:
Utilisation
scipy.optimize.curve_fit
. Et pas seulement pour un ajustement linéaire.Une fois que vous convertir vos données en les pandas dataframe (
df
),Le terme constant est inclus par défaut.
Voir ce portable pour plus d'exemples.
Je pense que cela peut le plus facilement pour finir ce travail:
De Régression Linéaire Multiple peut être manipulé à l'aide de la sklearn bibliothèque comme mentionné ci-dessus. Je suis l'aide de l'Anaconda installation de Python 3.6.
Créer votre modèle comme suit:
Vous pouvez utiliser numpy.linalg.lstsq
Vous pouvez utiliser la fonction ci-dessous et de le transmettre un DataFrame:
Voici une alternative et de la méthode de base:
Au lieu de
sm.OLS
vous pouvez également utilisersm.Logit
ousm.Probit
et etc.