pythonを用いてポアソン回帰をしております。問題はポアソン回帰ではなく、その結果を用いてグラフを描く時点で、単純にfor文を用いて配列に値を入れる際に、意図しない動作になってしまっており困っております。
python3
1import numpy as np 2import seaborn as sns 3import pandas as pd 4import matplotlib.pyplot as plt 5import statsmodels.api as sm 6import scipy as sp 7 8d = pd.read_csv('Beer.csv',encoding='SHIFT-JIS') 9d.head() 10 11X = d[['temperature']] 12y = d[['beer_number']] 13model = sm.GLM(y, sm.add_constant(X), family=sm.families.Poisson()) 14res=model.fit() 15 16# 予測値の作成 17x_axis = np.arange(0, 45) 18y_seq = x_axis 19 20for i in range(len(x_axis)): 21 print("i") 22 print(i) 23 XX=sp.array([1,x_axis[i]]) 24 print(XX) 25 zz=XX.dot(res.params) 26 print(zz) 27 28 kk=np.exp(zz) 29 print("kk") 30 print(kk) 31 32 y_seq[i] = kk 33 print("yy") 34 print(y_seq[i]) 35
【結果】
i
0
[1 0]
0.4476074167974242
kk
1.5645643533866962
yy
1
i
1
[1 1]
0.5236838580746012
kk
1.6882354281048548
yy
1
i
2
[1 2]
0.5997602993517781
kk
1.82168208967493
yy
1
【質問したいこと】
上記で変数y_seqという配列に、ポアソン回帰の結果のyの予測値を入れたいのですが、なぜか
意図しない整数値ばかりが入ってしまいます。不思議なことに、zzという値をネイピア数のべきにした値、kkというところまではprintすると想定通りの値が入っているのですが、それを単純にそのままy_seq[i]に入れた後に出力すると、そちらの結果は切り下げ?た様な整数値が入ってしまいます。何等かのバグでしょうか、、。ご教示のほど、宜しくお願い申し上げます。
なお、同じことをRで実装すると全く問題なく意図する結果となります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。