发布 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_variableplot_partial_residualsplot_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日志自动生成的,可能并不完整。


Last update: Oct 16, 2024