欢迎访问宙启技术站
智能推送

使用statsmodels.formula.apiols()函数研究变量间的线性关系及其显著性

发布时间:2023-12-28 01:08:17

statsmodels是一个Python库,用于拟合各种统计模型,并进行统计测试和统计数据探索。其中的formula.apiols()函数是用来拟合线性回归模型的。在这个函数中,我们可以通过指定一个公式来定义我们感兴趣的因变量和自变量之间的关系。

使用statsmodels.formula.apiols()函数进行线性回归,需要先引入statsmodels.api中的公式类模型,然后调用ols()函数来进行建模。接下来,我们可以通过fit()函数对模型进行拟合,并输出回归结果。

下面我们以一个例子来演示如何使用statsmodels来进行线性回归分析。

假设我们有一个数据集,其中包含了一个因变量y和两个自变量x1与x2。我们想要探索这三个变量之间的线性关系,并检验它们的显著性。

首先,我们需要导入需要的库和函数:

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf

然后,我们生成一个随机数据集:

np.random.seed(0)
n = 100
x1 = np.random.randn(n)
x2 = np.random.randn(n)
y = 1 + 2*x1 + 3*x2 + np.random.randn(n)
df = pd.DataFrame({"y": y, "x1": x1, "x2": x2})

接下来,我们可以使用formula.apiols()函数进行线性回归拟合:

model = smf.ols("y ~ x1 + x2", data=df)
results = model.fit()

在这里,我们使用公式"y ~ x1 + x2"来定义线性回归模型。其中,"~"符号表示因变量y与自变量x1和x2之间的关系,"+"符号表示自变量之间的相加关系。

fit()函数将对模型进行拟合,并返回一个结果对象。我们可以使用该结果对象来获取回归系数、显著性检验和其他拟合结果。

接下来,我们可以通过调用results.summary()来输出回归结果的摘要:

print(results.summary())

这个函数会输出类似下面的回归结果摘要:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.647
Model:                            OLS   Adj. R-squared:                  0.640
Method:                 Least Squares   F-statistic:                     97.76
Date:                Fri, 01 Oct 2021   Prob (F-statistic):           1.40e-24
Time:                        12:34:56   Log-Likelihood:                -144.43
No. Observations:                 100   AIC:                             294.9
Df Residuals:                      97   BIC:                             302.2
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
================================================================================
                   coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------
Intercept        1.0660      0.256      4.169      0.000       0.559       1.573
x1               1.9881      0.218      9.139      0.000       1.557       2.419
x2               3.0188      0.256     11.777      0.000       2.510       3.527
==============================================================================
Omnibus:                        1.160   Durbin-Watson:                   2.061
Prob(Omnibus):                  0.560   Jarque-Bera (JB):                1.068
Skew:                           0.255   Prob(JB):                        0.586
Kurtosis:                       2.901   Cond. No.                         1.37
==============================================================================

从上述回归结果摘要中,我们可以得到以下信息:

- R-squared: 决定系数,表示自变量对因变量的解释程度。

- coef: 回归系数,表示自变量对因变量y的影响程度。

- std err: 回归系数的标准误差,表示回归系数的不确定程度。

- t: t值,表示回归系数是否显著。

- P>|t|: t值对应的p值,表示回归系数的显著性。

- [0.025 0.075]: 95%置信区间,表示回归系数的可信范围。

通过这些结果,我们可以判断哪些自变量对因变量有显著影响,并得到回归方程和预测结果。

以上是使用statsmodels.formula.apiols()函数研究变量间线性关系及其显著性的例子。通过该函数,我们可以方便地进行线性回归分析,并探索变量间的关系。