3

Excelが「指数トレンド/回帰」と呼ぶものを株価チャートにプロットしたいと思います。以下のコードをIPythonノートブックで実行すると、「カーネルが停止しました。再起動しますか?」と表示されます。それを修正する方法について何かアイデアはありますか?また、これは線形回帰を実行しようとしているだけであり、指数データで回帰を実行する方法がよくわかりません。

import datetime
import matplotlib.pyplot as plt
import statsmodels.api as sm
from pandas.io.data import DataReader

sp500 = DataReader("AGG", "yahoo", start=datetime.datetime(2000, 1, 1)) # returns a DataFrame
sp500["regression"] = sm.OLS(sp500["Adj Close"], sp500.index).fit().fittedvalues()
top = plt.subplot2grid((3,1), (0, 0), rowspan=2)
top.plot(sp500.index, sp500["Adj Close"], 'b-', sp500.index, sp500["regression"], 'r-')
bottom = plt.subplot2grid((3,1), (2,0))
bottom.bar(sp500.index, sp500.Volume)
plt.gcf().set_size_inches(18,8)
4

2 に答える 2

9

これをもう一度見てみると、切片が含まれていなかったため、以前の回答がうまく適合していないことがわかりました。回答を更新しました。

セグメンテーション違反は、Datetimeインデックスを外因性変数として使用しようとすることから発生します。代わりに試してください:

import datetime
import matplotlib.pyplot as plt
import statsmodels.api as sm
import pandas
from pandas.io.data import DataReader

sp500 = DataReader("AGG", "yahoo", start=datetime.datetime(2000, 1, 1)) # returns a DataFrame
sp500["regression"] = sm.OLS(sp500["Adj Close"],
    sm.add_constant(range(len(sp500.index)),
    prepend=True)).fit().fittedvalues

statsmodelsのfittedvaluesを関数として呼び出す必要がないことに注意してください。データポイントがすべて等間隔である場合、このモデルは実際のインデックスを使用した場合と同じ結果になります。

2番目の質問として、パンダは指数関数的に重み付けされた移動平均として組み込まれているため、調べてみるとよいでしょう:pandas.ewma ここ

于 2012-12-09T12:49:00.953 に答える
1

バージョン番号やパンダの作成方法など、より多くの情報を投稿する必要があります。トレースバックも問題の絞り込みに役立つ可能性があります。pylabの有無にかかわらず、IPythonの64ビットLinuxでpandas0.9.1を使用してセグメンテーション違反を複製できません。スタックオーバーフローではなく、githubの問題に関するバグを報告することもできます。そこで開発者の注意を引くのが簡単です。

于 2012-12-10T14:54:44.667 に答える