我正在尝试进行线性回归,以根据另一个数据帧的计数来预测数据帧的计数。我正在使用统计模型。我尝试了以下方法:
X = df1.count()
Y = df2.count()
from statsmodels.formula.api import ols
fit = ols(Y ~ X, data=kak).fit()
fit.summary()
不允许在 OLS 公式中使用 X 和 Y 变量,我不知道在data=
关键字参数中填写什么。我将如何做到这一点?
假设您必须将 1D 数组X
并Y
:
import numpy as np
X = np.arange(100)
Y = 2*X + 5
然后,您可以使用以下行运行线性回归。有两件重要的事情:
- 要
ols
的第一个参数是包含公式的str
。"Y ~ X"
而不是Y ~ X
(请注意双引号)。 - 第二个参数
data
可以是任何 Python 对象,只要它有键data["X"]
和data["Y"]
。我在这里写了一个dict
,但它也可以与DataFrame
一起使用.它基本上可以让statsmodels
了解谁X
,谁Y
你给它的公式。
ols("Y ~ X", {"X": X, "Y": Y}).fit().summary()
输出:
OLS Regression Results
==============================================================================
Dep. Variable: Y R-squared: 1.000
Model: OLS Adj. R-squared: 1.000
Method: Least Squares F-statistic: 1.916e+33
Date: Fri, 21 May 2021 Prob (F-statistic): 0.00
Time: 14:01:48 Log-Likelihood: 3055.1
No. Observations: 100 AIC: -6106.
Df Residuals: 98 BIC: -6101.
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 5.0000 2.62e-15 1.91e+15 0.000 5.000 5.000
X 2.0000 4.57e-17 4.38e+16 0.000 2.000 2.000
==============================================================================
Omnibus: 220.067 Durbin-Watson: 0.015
Prob(Omnibus): 0.000 Jarque-Bera (JB): 9.816
Skew: 0.159 Prob(JB): 0.00739
Kurtosis: 1.498 Cond. No. 114.
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.