2016-03-28 3 views
0

Ich habe Daten als x-und y-Variablen in Python als Liste gespeichert. Wie kann ich das in Python importieren, um durch statsmodels zu laufen.Öffnen und modellieren Daten in Statsmodels als GLM

from __future__ import print_function 
import statsmodels.api as sm 
import statsmodels.formula.api as smf 
import pandas as pd 

x = [1,1,2,3] 
y=[1,0,0,0] 
data = pd.DataFrame(x,y) #to merge the two side by side 

star98 = sm.datasets.star98.load_pandas().data 

formula = 'x ~ y' 


pd.options.mode.chained_assignment = None # default='warn' 


mod1 = smf.glm(formula=formula, data=data, family=sm.families.Binomial()).fit() 

x = mod1.summary() 

Valueerror: Die erste Vermutung über die Devianz Funktion zurück eine nan. Dies könnte ein Grenzproblem sein und sollte gemeldet werden

Antwort

5

Sie hatten ein paar kleinere Probleme. Zunächst wird die Art und Weise Sie Ihre Daten wurden Gebäude, y wurde tatsächlich als Index der Datenrahmen interpretiert:

In [3]: 
    x = [1,1,2,3] 
    y=[1,0,0,0] 
    data = pd.DataFrame(x,y) #to merge the two side by side 
    data 
Out[3]: 
    0 
1 1 
0 1 
0 2 
0 3 

Stattdessen müssen Sie sowohl als Spalten passieren und stellen Sie sicher, dass sie Spaltennamen erhalten; desto leichter ist wahrscheinlich mit einem Wörterbuch:

In [13]: 
    x = [1,1,2,3] 
    y = [1,0,0,0] 
    data = pd.DataFrame({'x' : x, 'y' : y}) #to merge the two side by side 
    data 
Out[13]: 
    x y 
0 1 1 
1 1 0 
2 2 0 
3 3 0 

Zweitens Ihre Formel falsch war (da ich glaube, dass Sie versuchen, y aus den Daten in x zu klassifizieren), sollte es sein,

formula = 'y ~ x' 

Wenn Sie passen so mit dem Rest Ihres Codes, Sie werden bessere Ergebnisse erzielen.

In [21]: 
    x 
Out[21]: 
Generalized Linear Model Regression Results 
Dep. Variable: y No. Observations: 4 
Model: GLM Df Residuals: 2 
Model Family: Binomial Df Model: 1 
Link Function: logit Scale: 1.0 
Method: IRLS Log-Likelihood: -1.3863 
Date: Mon, 28 Mar 2016 Deviance: 2.7726 
Time: 15:34:32 Pearson chi2: 2.00 
No. Iterations: 22  
coef std err z P>|z| [95.0% Conf. Int.] 
Intercept 22.1423 3.9e+04 0.001 1.000 -7.64e+04 7.64e+04 
x -22.1423 3.9e+04 -0.001 1.000 -7.64e+04 7.64e+04 

Ich hoffe, es hilft.

+0

beste Antwort aller Zeiten –

Verwandte Themen