- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
~20?)的情况下,这-6ren">
我已经在我的编码中多次看到这个问题,其中 statsmodels 计算的“Df 模型”小于模型拟合的参数数量。
据我所知,无论我适合哪种模型,并且(我相信)仅在参数数量不少(> ~20?)的情况下,这种情况都会发生。这可能与参数之间的高度多重共线性有关吗?
由于此问题似乎是由大量参数(带有“真实”数据)引起的,因此我不确定是否可以重新创建一些虚拟数据来展示该问题。我只是希望有人以前见过它并知道为什么会发生。
无论如何,我的代码示例(以及作为注释输出)如下所示。
print type(base_features) #<type 'list'>
print len(base_features) #70
model = sm.GLM(train1['target'], train1[base_features], family=Poisson())
#^ produces the same results for other glm family models as well as standard OLS
poi_base = model.fit()
print len(poi_base.params) #70
print poi_base.df_model #63
请注意,“base_features”中有一个用户构造的截距/常量,但即使 statsmodels 能够识别这一点,df_model 至少仍应为 69。
最佳答案
一般来说,df_model 取决于设计矩阵的秩,并且不考虑常数。排名由 numpy 中使用的阈值定义,该阈值取决于条件数。
线性模型会显式或隐式地考虑是否在 exog
中检测到常量。其他模型(例如离散模型和 GLM 模型)假设始终存在一个常数。 (在线性模型中,rsquared
的定义取决于常量的存在,在其他模型中,llnull
是仅具有常量的模型的对数似然性,而不检查原始模型是否存在是否包含常量。)
在线性模型中,OLS、WLS 和类似模型
self._df_model = float(self.rank - self.k_constant)
在 GLM 中
self.df_model = np_matrix_rank(self.exog) - 1
在离散模型中,Logit、Probit、Poisson 和类似模型
self.df_model = float(np_matrix_rank(self.exog) - 1)
(github上有一些关于各种df_model
和df_resid
的定义的开放问题,主要是针对常量的处理。对于惩罚估计器,df_model和df_resid应该基于有效的自由度,但这可能尚未得到一致实现。)
旁白:基于线性模型的估计器(包括通过迭代重新加权最小二乘法估计的估计器)默认基于广义逆,即使设计矩阵是秩亏的,它也会产生估计。所有其他模型都会中断优化并引发奇异设计矩阵的异常。
关于python - 为什么 statsmodels "Df Model"小于包含的模型参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646595/
是否有 statsmodels API 可以从 statsmodels 时间序列模型中检索预测区间? 目前,我正在使用以下方法手动计算预测区间: 这是我的代码。首先,获取一些示例数据... ! pyt
我有:statsmodels 0.5.0(正式名称为 scikits.statsmodels) Pandas 0.12.0。(全部从源安装) 我收到这个错误: File "/home/userna
所有内容的格式都与 Statsmodels 网站上的一样,但是 Spyder 以某种方式返回了这个: TypeError: ztest_ind() got multiple values for ar
所有内容的格式都与 Statsmodels 网站上的一样,但是 Spyder 以某种方式返回了这个: TypeError: ztest_ind() got multiple values for ar
谁能给我解释一下 statsmodel.formula.api 中的 ols 和 statsmodel.api 中的 ols 之间的区别? 使用 ISLR 文本中的广告数据,我使用两者运行了一个 ol
我用python处理一个线性回归模型,json数据如下: {"Y":[1,2,3,4,5],"X":[[1,43,23],[2,3,43],[3,23,334],[4,43,23],[232,234,
我正在使用 Python 中的 statsmodels MixedLM 包估计一个混合线性模型。拟合模型后,我现在想进行预测,但很难理解“预测”方法。 statsmodels 文档 (http://w
使用状态模型的逻辑回归模型: log_reg = st.logit(formula = 'label ~ pregnant + glucose + bp + insulin + bmi + pedig
我有一个包含 3 列的数据框 ['X', 'Y', 'Z'] 我想研究一下 X 和 Y影响Z的分布。为此,我想使用 nadaraya watson 的非参数回归器。在 statsmodels 中有一个
我正在尝试使用 statsmodel 中的 statsmodels.discrete.conditional_models.ConditionalLogit 类。 在jupyter笔记本中导入模块时,
我安装 statsmodels: apt-get install python python-dev python-setuptools python-numpy python-scipy curl
import statsmodels.formula.api as sm import numpy as np import pandas url = "http://vincentarelbundo
我正在尝试在 x-y 数据的简单测试集上使用 statsmodels 中的稳健线性模型。然而,作为 model.params 的返回值,我只得到一个值。如何获得拟合的斜率和截距?最小示例(其中我试图从
我正在使用库statsmodels.tsa.stattools.grangercausalitytests来测试两个时间序列之间的相似性。我知道列表 a 和 b 都是合法列表,没有任何 None 或
以下代码使用 statsmodels 拟合了一个过度简化的广义线性模型 model = smf.glm('Y ~ 1', family=sm.families.NegativeBinomial(),
在Python库Statsmodels中,可以用print(results.summary())打印出回归结果,如何打印出超过的摘要一张表中的一个回归,以便更好地比较? 线性回归,代码取自 stats
我有一个 pandas DataFrame,其行包含多种类型的数据。我想使用 statsmodels.formula.api 根据这些数据拟合一个模型,然后做出一些预测。对于我的应用程序,我想一次预测
我正在尝试使用 statsmodels 中的 logit 模块对包含 bool 值(“默认”)目标变量和两个特征(“fico_interp”、“home_ownership_int”)的数据集执行逻辑
这个问题类似于confidence and prediction intervals with StatsModels但有一个额外的细微差别: 我的数据是异方差的,我想使用 statsmodels 提
我正在使用 Pandas 的混合物和 StatsModels绘制时间序列分解图。我关注了this answer但是当我调用 plot() 时,它似乎在绘制一个副本。 我的 DataFrame 看起来像
我是一名优秀的程序员,十分优秀!