使用python statsmodels回归趋势+季节性

时间:2015-02-06 16:56:08

标签: python r regression statsmodels patsy

我有一个关于python回归的问题。总而言之,我需要找到一个形式为yt = mt + st的模型,其中mt和st分别是趋势和季节性成分。在我之前的分析中,我发现mt的一个好模型是mt = a0 + a1 * t + a2 * t ^ 2类型的二次趋势 通过我的回归分析。现在,当我想添加季节性组件时,这就是我最困难的时刻。现在,我接近了这两种方式......一种是通过R编程,我将R对象调用到python中,另一种是通过python调用。现在,按照我的书中的例子,我使用R:

进行了以下操作
%load_ext rmagic
import rpy2.robjects as R
import pandas.rpy.common as com
from rpy2.robjects.packages import importr

stats = importr('stats')
r_df = com.convert_to_r_dataframe(pd.DataFrame(data.logTotal))
%Rpush r_df
%R ss = as.factor(rep(1:12,length(r_df$logTotal)/12))
%R tt = 1:length(r_df$logTotal)
%R tt2 = cbind(tt,tt^2)
%R ts_model = lm(r_df$logTotal ~ tt2+ss-1)
%R print(summary(ts_model))

我得到正确的回归系数。但是,如果我在python中做同样的事情,这就是我遇到问题复制它的地方。

import statsmodels.formula.api as smf
ss_temp=     pd.Categorical.from_array(np.repeat(np.arange(1,13),len(data.logTotal)/12))
dtemp = np.column_stack((t,t**2,data.logTotal))
dtemp = pd.DataFrame(dtemp,columns=['t','tsqr','logTotal'])
dtemp['ss'] = sstemp
res_result = smf.ols(formula='logTotal ~ t+tsqr + C(ss) -1',data=dtemp).fit()
res_result.params

我在这里做错了什么?我首先得到一个错误,说'找不到数据类型'指向res_result公式。那么,我尝试将ss_temp更改为Series。然后,上述陈述奏效了。但是,与R输出相比,我的参数完全关闭。我已经花了一天时间没有用。有人可以帮助我或指导我做或是否有一个等同于R中as.factor的python?我认为这是大熊猫的绝对。

由于

如果以上太难了,那就好了。我仍然有我在R中回归的剩余模型。但是,任何想法如何将其转换为等同于statsmodels将其解释为回归的res的python?再次感谢

0 个答案:

没有答案