2016-03-28 10 views
0

私はPythonのxとy変数としてのデータをリストとして格納しています。これをPythonにインポートしてstatsmodelsを実行するにはどうすればいいですか?統計モデルのデータを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:deviance関数の最初の推測では、nanが返されました。これは境界問題であり、報告する必要があります。

答えて

5

あなたにはいくつかの小さな問題がありました。まず、あなたがあなたのデータを構築した方法は、yは、実際にデータフレームの指標として解釈されました:

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 

は代わりに、あなたは列の両方に合格し、彼らは列の名前を取得することを確認する必要があります。簡単に辞書で、おそらくです:

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 

は第二に、あなたの式が間違っていた(私はあなたがxのデータからyを分類しようとしていると思うので)、それがあるべき、

formula = 'y ~ x' 

場合そのようにコードの残りの部分に合わせると、より良い結果が得られます。

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 

希望します。

+0

ベストアンサー –

関連する問題