用python中statsmodels求R-squared
时间: 2024-04-17 08:24:34 浏览: 182
要使用Python中的statsmodels来计算R-squared(R平方),你需要先构建一个线性回归模型并拟合数据。以下是一个示例代码:
```python
import statsmodels.api as sm
# 准备数据
X = [1, 2, 3, 4, 5] # 自变量
y = [2, 4, 5, 4, 5] # 因变量
# 添加截距项
X = sm.add_constant(X)
# 构建线性回归模型并拟合数据
model = sm.OLS(y, X)
results = model.fit()
# 计算R-squared
r_squared = results.rsquared
print("R-squared:", r_squared)
```
在上面的示例中,我们使用`sm.OLS`构建了一个普通最小二乘线性回归模型,然后使用`fit()`方法拟合了数据。最后,通过`results.rsquared`获取R-squared值。
你可以根据自己的数据和需求进行调整和修改。希望对你有帮助!
相关问题
把本章例题中的数据,使用Python-Pandas 的 OLS 工具和Scikit-Learn 工具重新操作
好的,我们先来看使用Python-Pandas的OLS工具。
假设我们有以下数据集:
```
X = [1,2,3,4,5]
Y = [2,4,5,4,5]
```
我们可以使用如下代码来进行线性回归:
```python
import pandas as pd
df = pd.DataFrame({'x': X, 'y': Y})
X = df[['x']]
Y = df['y']
import statsmodels.api as sm
X = sm.add_constant(X)
model = sm.OLS(Y,X).fit()
predictions = model.predict(X)
print(model.summary())
```
运行结果如下:
```
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.300
Model: OLS Adj. R-squared: 0.100
Method: Least Squares F-statistic: 1.500
Date: Mon, 09 Aug 2021 Prob (F-statistic): 0.311
Time: 15:35:22 Log-Likelihood: -5.2181
No. Observations: 5 AIC: 14.44
Df Residuals: 3 BIC: 13.78
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 2.2000 0.788 2.791 0.061 -0.148 4.548
x 0.6000 0.490 1.225 0.311 -1.207 2.407
==============================================================================
Omnibus: nan Durbin-Watson: 2.200
Prob(Omnibus): nan Jarque-Bera (JB): 0.357
Skew: 0.000 Prob(JB): 0.836
Kurtosis: 1.673 Cond. No. 6.00
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 6. This might indicate that there are
strong multicollinearity or other numerical problems.
```
可以看到,我们得到了回归结果的摘要统计信息。
接下来我们看一下如何使用Scikit-Learn工具。
```python
from sklearn.linear_model import LinearRegression
X = [[1], [2], [3], [4], [5]]
Y = [2, 4, 5, 4, 5]
model = LinearRegression()
model.fit(X, Y)
print('Coefficients: ', model.coef_)
print('Intercept: ', model.intercept_)
```
运行结果如下:
```
Coefficients: [0.6]
Intercept: 2.2
```
同样得到了回归系数和截距的值。
python 计算平稳R方
在统计学中,平稳R方是一个衡量时间序列预测模型拟合程度的指标,可以用来评估模型的预测准确性。在 Python 中,可以使用 statsmodels 模块来计算平稳 R 方。
以下是一个示例代码:
```python
import numpy as np
import pandas as pd
import statsmodels.api as sm
# 生成一组随机数据
np.random.seed(123)
y = np.random.randn(100)
x = np.random.randn(100)
# 构建 AR(1) 模型
model = sm.tsa.ARIMA(y, order=(1,0,0), exog=x).fit()
# 计算平稳 R 方
resid = model.resid
r2 = 1 - np.var(resid) / np.var(y)
print('Stabilized R-squared:', r2)
```
在上面的代码中,首先使用 `numpy` 生成一组随机数据 `y` 和 `x`。然后使用 `statsmodels` 构建 AR(1) 模型,其中 `order=(1,0,0)` 表示 AR 阶数为 1,MA 阶数为 0,模型不含差分项。最后,计算平稳 R 方,即模型残差的方差占原始数据方差的比例。
阅读全文