发布 0.7.0¶
发布摘要¶
注意:此版本从未正式发布。在0.8版本中,多个模型已经过重构、改进或修复了错误。
以下是此版本中的主要新功能。
主成分分析¶
作者: Kevin Sheppard
新增了一个基于类的主成分分析(Principal Component Analysis)。这个类取代了之前存在于沙盒中的基于函数的PCA。这一变化带来了许多新功能,包括:
控制标准化(去均值/学生化)的选项
碎石图绘制
选择因子数量的信息准则
R平方图用于评估组件拟合度
当只需要少量成分且数据集较大时,NIPALS的实现
使用EM算法进行缺失值填充
import statsmodels.api as sm
from statsmodels.multivariate.pca import PCA
data = sm.datasets.fertility.load_pandas().data
columns = map(str, range(1960, 2012))
data.set_index('Country Name', inplace=True)
dta = data[columns]
dta = dta.dropna()
pca_model = PCA(dta.T, standardize=False, demean=True)
pca_model.plot_scree()
注意:还有一个函数版本,它与沙盒中的调用兼容。函数版本只是基于类的PCA实现的一个薄包装器。
GLM/GEE的回归图形¶
作者: Kerby Shedden
添加了变量图、偏残差图和CERES残差图,可以通过调用结果类中的方法plot_added_variable、plot_partial_residuals和plot_ceres_residuals来获取GLM和GEE模型。
状态空间模型¶
作者: Chad Fulton
状态空间方法为估计和分析广泛的时序模型提供了一个灵活的结构。statsmodels 实现允许指定状态模型、快速卡尔曼滤波以及内置方法来促进任意模型的最大似然估计。该模块的主要目标之一是允许终端用户创建和估计他们自己的模型。下面是一个简短的示例,展示了指定和估计局部水平模型的简便性:
import numpy as np
import statsmodels.api as sm
import pandas as pd
data = sm.datasets.nile.load_pandas().data
data.index = pd.DatetimeIndex(data.year.astype(int).astype(str), freq='AS')
# Setup the state space representation
class LocalLevel(sm.tsa.statespace.MLEModel):
def __init__(self, endog):
# Initialize the state space model
super(LocalLevel, self).__init__(
endog, k_states=1, initialization='approximate_diffuse')
# Setup known components of state space representation matrices
self.ssm['design', :] = 1.
self.ssm['transition', :] = 1.
self.ssm['selection', :] = 1.
# Describe how parameters enter the model
def update(self, params, transformed=True):
params = super(LocalLevel, self).update(params, transformed)
self.ssm['obs_cov', 0, 0] = params[0]
self.ssm['state_cov', 0, 0] = params[1]
def transform_params(self, params):
return params**2 # force variance parameters to be positive
# Specify start parameters and parameter names
@property
def start_params(self):
return [np.std(self.endog)]*2
@property
def param_names(self):
return ['sigma2.measurement', 'sigma2.level']
# Fit the model with maximum likelihood estimation
mod = LocalLevel(data['volume'])
res = mod.fit()
print res.summary()
文档和示例笔记本提供了更多关于如何构建状态空间模型的示例。此版本中包含一个使用状态空间基础设施来估计SARIMAX模型的完整模型。详情请见下文。
带有季节效应的时间序列模型 (ARIMA)¶
作者: Chad Fulton
一个用于估计带有外生回归变量的季节性自回归积分滑动平均模型(SARIMAX)的模型已经通过利用新的状态空间功能被添加。它可以非常类似于现有的ARIMA模型使用,但适用于更广泛的范围,包括:
加法和乘法季节效应
灵活的趋势规范
具有SARIMA误差的回归
具有时变系数的回归
内生变量的测量误差
下面是一个使用多个组件拟合模型的简短示例,包括外生数据、线性趋势和年度乘法季节性效应。
import statsmodels.api as sm
import pandas as pd
data = sm.datasets.macrodata.load_pandas().data
data.index = pd.DatetimeIndex(start='1959-01-01', end='2009-09-01',
freq='QS')
endog = data['realcons']
exog = data['m1']
mod = sm.tsa.SARIMAX(endog, exog=exog, order=(1,1,1),
trend='t', seasonal_order=(0,0,1,4))
res = mod.fit()
print res.summary()
广义估计方程 GEE¶
作者: Kerby Shedden
GEE 的增强功能和性能改进:
EquivalenceClass协方差结构允许通过任意集合的等式约束来指定协方差 #2188
添加权重 #2090
重构的边距 #2158
混合线性模型¶
作者: Kerby Shedden 与 Saket Choudhary
对MixedLM的增强(#2363):增加了对MixedLM的方差分量支持,允许指定更广泛的随机效应结构;还通过在内部对随机效应设计矩阵使用稀疏矩阵来提高性能。
其他重要的新功能¶
GLM: 添加基于scipy的梯度优化以拟合 #1961 (Kerby Shedden)
wald_test_terms: LikelihoodModels 的新方法,用于计算 Wald 检验(F 或卡方) 对于项或系数集 #2132 (Josef Perktold)
在WLS中添加cov_type并使用固定比例以允许chi2拟合 #2137 #2143 (Josef Perktold, Christoph Deil)
VAR: 允许广义IRF和FEVD计算 #2067 (Josef Perktold)
get_prediction 新方法用于获取完整的预测结果(新的API约定)
主要修复的Bug¶
查看 GitHub 问题以获取完整列表
ARMA/ARIMA predict 中带有 exog 的 bug #2470
VAR中的错误
x13: 兼容 Python 3
向后不兼容的更改和弃用¶
列出向后不兼容的更改
开发总结与致谢¶
注意
感谢所有为0.7版本做出贡献的贡献者:
注意
亚历克斯·格里芬
安东尼·李
查德·富尔顿
克里斯托夫·戴尔
丹尼尔·沙利文
汉斯-马丁·冯·高德克
扬·舒尔茨
乔伊·斯托克曼斯
约瑟夫·珀克托德
克比·谢登
凯文·谢帕德
田村清人
路易-菲利普·勒米厄·佩罗
帕达恩·威尔逊
拉尔夫·戈默斯
萨克特·乔杜里
斯金纳·西博尔德
汤姆·奥格斯珀格
特伦特·豪克
文森特·阿雷-邦多克
chebee7i
唐贝奥
gliptak
hlin117
杰瑞·杜姆布拉斯卡斯
乔纳威廉姆斯
清人
尼尔·萨默斯
韦恩尼尔斯
这些名单是根据git日志自动生成的,可能并不完整。