使用pandas和matplotlib回归股票数据

Ben*_*ann 3 python matplotlib pandas statsmodels

我想在股票图表上绘制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)
Run Code Online (Sandbox Code Playgroud)

Tom*_*ger 9

我再次看了一遍,发现我以前的答案很不合适,因为它没有包括拦截.我已经更新了我的答案.

segfault来自于尝试将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
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要将statsmodels的fittingvalues作为函数调用.如果您的数据点均为空间,则此模型将提供与使用实际索引相同的结果.

对于你的第二个问题,大熊猫是你想要查看的内置指数加权移动平均线:pandas.ewma 这里.