利用Python,根据相关系数矩阵,筛选出与“margin1”相关系数最 大的 3 个变量,在此基础上分别做线性回归,得到回归方程和决定系数。
时间: 2024-12-16 19:26:30 浏览: 10
在Python中,我们可以使用`pandas`库处理数据,`numpy`库计算相关系数,然后利用`sklearn`库中的`LinearRegression`来做线性回归。以下是一个简单的步骤:
1. **加载数据并计算相关系数矩阵**:
首先假设你有一个包含所有变量的数据框`df`,其中`margin1`是你关注的目标变量。你可以使用`corr()`函数计算相关系数矩阵:
```python
import pandas as pd
import numpy as np
df_corr = df.corr()
```
2. **筛选出与“margin1”相关性最大的3个变量**:
使用`corrwith()`函数找出与`margin1`的相关系数,并选择前3名:
```python
margin1_series = df['margin1']
top_variables = df_corr[margin1_series.name].sort_values(ascending=False)[:3].index.tolist()
```
3. **提取数据和做线性回归**:
创建新的数据框只包含选定的变量和目标变量,然后建立线性模型:
```python
selected_data = df[top_variables + ['margin1']]
from sklearn.linear_model import LinearRegression
model = LinearRegression()
X = selected_data[top_variables]
y = selected_data['margin1']
model.fit(X, y)
```
4. **获取回归方程和决定系数**:
回归方程可以通过`coef_`和`intercept_`属性获取,决定系数(`R^2`)可以通过`score()`方法得到:
```python
slope, intercept = model.coef_, model.intercept_
r_squared = model.score(X, y)
print(f"回归方程: {slope[0]} * {top_variables[0]} + ... + {slope[-1]} * {top_variables[-1]} + {intercept}")
print(f"决定系数 (R^2):", r_squared)
```
阅读全文