2017-03-10 2 views
0

Savez-vous comment je peux adapter la première partie dans le reste de la fonction pour obtenir une analyse de régression.Fonction Python pour la régression multivariée en utilisant les données de csv

import numpy as np 
import matplotlib.pyplot as plt 
from numpy import * 
from matplotlib.pyplot import * #for the graph 

data = np.genfromtxt('bookingdata.csv', delimiter = ',') 

tvst = data[1:,][:,1] 
cntime = data[1:,][:,2] 
brate = data[1:,][:,3] 
ppvwst = data[1:,][:,4] 



import statsmodels.api as sm 


def reg_m(tvst, cntime,brate,ppvwst): 
ones = np.ones(len(cntime[0]) 
X = sm.add_constant(np.column_stack((x[0], ones))) 
for ele in x[1:]: 
X = sm.add_constant(np.column_stack((ele, X))) 
results = sm.OLS(y, X).fit() 
return results 

et toutes les variables ont été chargées en tant que variables TVST, etc. cntime également toutes les variables sont des nombres.

l'objectif final est maintenant d'obtenir une régression à plusieurs variables comme

      OLS Regression Results        
============================================================================== 
Dep. Variable:      y R-squared:      0.535 
Model:       OLS Adj. R-squared:     0.461 
Method:     Least Squares F-statistic:      7.281 
Date:    Tue, 19 Feb 2013 Prob (F-statistic):   0.00191 
Time:      21:51:28 Log-Likelihood:    -26.025 
No. Observations:     23 AIC:        60.05 
Df Residuals:      19 BIC:        64.59 
Df Model:       3    
============================================================================== 
       coef std err   t  P>|t|  [95.0% Conf. Int.] 
------------------------------------------------------------------------------ 
x1    0.2424  0.139  1.739  0.098  -0.049  0.534 
x2    0.2360  0.149  1.587  0.129  -0.075  0.547 
x3   -0.0618  0.145  -0.427  0.674  -0.365  0.241 
const   1.5704  0.633  2.481  0.023   0.245  2.895 


Omnibus:      6.904 Durbin-Watson:     1.905 
Prob(Omnibus):     0.032 Jarque-Bera (JB):    4.708 
Skew:       -0.849 Prob(JB):      0.0950 
Kurtosis:      4.426 Cond. No.       38.6 
+0

Ce qui ne semble pas fonctionner? – DyZ

+0

J'ai chargé mon fichier csv en python, en tant que variables tvst (dépendante) et centime, brate, ppvwst (indépendant). Maintenant, je veux faire faire un test de régression multivariée sur le modèle, avec une telle sortie comme celle montrée ci-dessus. Je suis complètement perdu sur comment je peux le faire. –

+0

'add_constant' fait la même chose que d'ajouter la colonne des uns. L'un est redondant. – user333700

Répondre

0

d'abord, si y (EndoG) est juste une variable, on appelle cela la régression multiple. La régression multivariée fait habituellement référence au cas où nous avons plusieurs y en même temps, c'est-à-dire que y est multivarié.

add_constant fait la même chose que l'ajout de la colonne ones. L'un est redondant.

Ainsi, la régression multiple est juste

X = sm.add_constant(np.column_stack((cntime, brate, ppvwst))) 
results = sm.OLS(y, X).fit() 

ou étant donné que nous faisons déjà un column_stack qui évite une copie supplémentaire des données:

X = np.column_stack((ones, cntime, brate, ppvwst))) 
results = sm.OLS(y, X).fit()