统计模型中预测值与拟合值之间的差异

时间:2020-07-07 13:55:06

标签: python statsmodels

我有一个非常基本的问题,我无法以某种方式找到真正的答案。

假设我有一个模型:

import statsmodels.formula.api as smf
model = smf.ols(....).fit()

model.fittedvaluesmodel.predict有什么区别?

2 个答案:

答案 0 :(得分:2)

model.predict是一种预测值的方法,因此您可以为它提供一个看不见的数据集:

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(100,2),columns=['X','Y'])

model = smf.ols('Y ~ X',data=df).fit()

model.predict(exog=pd.DataFrame({'X':[1,2,3]}))

如果不提供exog参数,它将通过调用存储在对象下的数据返回预测,您可以在source code下看到它:

def predict(self, params, exog=None):
        """
        Return linear predicted values from a design matrix.

        Parameters
        ----------
        params : array_like
            Parameters of a linear model.
        exog : array_like, optional
            Design / exogenous data. Model exog is used if None.

        Returns
        -------
        array_like
            An array of fitted values.

        Notes
        -----
        If the model has not yet been fit, params is not optional.
        """
        # JP: this does not look correct for GLMAR
        # SS: it needs its own predict method

        if exog is None:
            exog = self.exog

        return np.dot(exog, params)

另一方面,model.fittedvalues是一个属性,它是存储的拟合值。出于上述原因,它将与model.predict()完全相同。

您也可以查看此类型的methods

答案 1 :(得分:1)

调用smf.ols(....).fit()时,可以使模型适合数据。即对于数据集中的每个数据点,模型都会尝试对其进行解释并为其计算一个值。在这一点上,该模型仅试图解释您的历史数据,而尚未进行任何预测。另外请注意,fittedvalues是模型的属性(或属性)。

model.predict()是模型实际预测看不见的值的一种方法。