命名约定¶
文件和目录名称¶
我们的目录树简化后看起来像
statsmodels/
__init__.py
api.py
discrete/
__init__.py
discrete_model.py
tests/
results/
tsa/
__init__.py
api.py
tsatools.py
stattools.py
arima_process.py
vector_ar/
__init__.py
var_model.py
tests/
results/
tests/
results/
stats/
__init__.py
api.py
stattools.py
tests/
tools/
__init__.py
tools.py
decorators.py
tests/
子模块按主题排列,discrete 表示离散选择模型,或 tsa 表示时间序列分析。可以大量导入的子模块包含一个空的 __init__.py,除了用于运行子模块测试的一些测试代码。要导入的命名空间在 api.py 中。这样,我们可以有选择地导入,并且不必导入很多不需要的代码。辅助函数通常放在名为 tools.py 的文件中,统计函数(例如统计检验)放在 stattools.py 中。所有内容都有用于 测试 的目录。
endog & exog¶
我们对统计模型的工作定义是一个对象,该对象既有定义为内生变量和外生变量的数据,也有统计关系。代替内生变量和外生变量,人们通常可以代之以左手侧 (LHS) 和右手侧 (RHS)、因变量和自变量、被解释变量和解释变量、结果和设计、响应变量和解释变量。用法通常特定于领域;然而,我们选择几乎完全使用 endog 和 exog,因为 statsmodels 的主要开发者拥有计量经济学背景,这感觉最自然。这意味着所有模型都是定义了 endog 和 exog 的对象,尽管在某些情况下为了方便起见 exog 为 None(例如,使用自回归过程)。每个对象还定义了一个 fit(或类似)方法,该方法返回一个特定于模型的结果对象。此外,还有一些函数,例如用于统计检验或方便函数。
另请参见 endog、exog,这是什么? 中的相关解释。
变量名称¶
我们所有的模型都假设数据按列排列变量。因此,在内部,数据都是二维数组。按照惯例,我们将在表示跨越轴 1(列)的变量名称前面加上一个 k_,并在表示跨越轴 0(行)的变量名称前面加上一个 n_。下划线的唯一例外是 nobs 应该表示观测值的个数。例如,在时间序列 ARMA 模型中,我们有
`k_ar` - The number of AR lags included in the RHS variables
`k_ma` - The number of MA lags included in the RHS variables
`k_trend` - The number of trend variables included in the RHS variables
`k_exog` - The number of exogenous variables included in the RHS variables excluding the trend terms
`n_totobs` - The total number of observations for the LHS variables including the pre-sample values
选项¶
我们在许多类、方法和函数中使用类似的选项。如果它们经常出现,则应该遵循标准化模式。
`missing` ['none', 'drop', 'raise'] define whether inputs are checked for
nans, and how they are treated
`alpha` (float in (0, 1)) significance level for hypothesis tests and
confidence intervals, e.g. `alpha=0.05`
模式
`return_xxx` : boolean to indicate optional or different returns
(not `ret_xxx`)