r语言多元线性回归绘制残差图代码
时间: 2023-08-05 14:31:23 浏览: 211
以下是用R语言绘制多元线性回归残差图的示例代码:
```R
# 读入数据
data <- read.csv("data.csv")
# 拟合多元线性回归模型
model <- lm(Y ~ X1 + X2 + X3, data = data)
# 得到残差
residuals <- resid(model)
# 对预测值排序
sorted_pred <- sort(predict(model))
# 绘制散点图
plot(sorted_pred, residuals, xlab = "Predicted values", ylab = "Residuals")
# 添加水平参考线
abline(h = 0, lty = 2)
```
其中,`data.csv`是包含数据的CSV格式文件,`Y`是因变量,`X1`、`X2`、`X3`是自变量。在代码中,首先读入数据,然后使用`lm()`函数来拟合多元线性回归模型,得到残差。接着,对预测值排序,并绘制散点图,最后添加水平参考线。
相关问题
多元线性回归模型残差分析
### 多元线性回归模型的残差分析方法及其实现
#### 残差分析的重要性
在多元线性回归中,残差是指观测值与预测值之间的差异。通过残差分析可以评估模型拟合的质量以及假设条件是否满足。如果残差不符合某些统计特性,则可能表明模型存在缺陷或数据不适合使用该模型。
---
#### 基本理论基础
多元线性回归的基本原理和计算过程与一元线性回归相似[^1],但在实际操作中通常依赖于统计软件完成复杂运算。为了验证模型的有效性和适用性,需要对残差进行深入分析。
---
#### 使用 SPSS 实现残差分析的具体流程
以下是基于 SPSS 的多元线性回归残差分析的操作步骤:
1. **打开回归对话框**
在菜单栏依次点击 `分析 -> 回归 -> 线性` 打开线性回归窗口。
2. **设置变量**
将因变量放入“因变量”框中,将自变量放入“自变量”框中。注意,这里至少应有两个自变量以构成多元线性回归模型。
3. **配置统计量选项**
- 点击“统计量”按钮,在弹出的子对话框中选择以下内容:
- Durbin-Watson 统计量用于检测序列相关性。
- 完成后点击“继续”。
4. **绘制残差图表**
- 点击“绘制”按钮进入绘图设置界面。
- 设置 Y 轴为 DEPENDENT(即因变量),X 轴为 *ZRESID(标准化残差)。
- 同时勾选“直方图”和“正态概率图”,以便直观观察残差分布情况。
- 点击“继续”返回主窗口并执行分析。
5. **解读结果**
输出的结果包括但不限于以下几个方面:
- **Durbin-Watson 值**:判断是否存在序列相关性。理想范围接近 2 表明无显著序列相关性[^3]。
- **残差直方图**:检验其形状是否近似服从正态分布。
- **P-P 图/Q-Q 图**:进一步确认残差是否符合正态分布假设。
---
#### Python 中实现多元线性回归及其残差分析的方法
除了传统的 SPSS 工具外,还可以利用编程语言如 Python 来构建和诊断多元线性回归模型。下面是一个完整的代码示例:
```python
import statsmodels.api as sm
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
# 构造样本数据集
data = {
'y': [1, 2, 3, 4, 5],
'x1': [0.1, 0.2, 0.3, 0.4, 0.5],
'x2': [10, 9, 8, 7, 6]
}
df = pd.DataFrame(data)
# 添加常数项
X = df[['x1', 'x2']]
X = sm.add_constant(X)
y = df['y']
# 训练模型
model = sm.OLS(y, X).fit()
# 查看摘要信息
print(model.summary())
# 提取残差
residuals = model.resid
# 可视化残差分布
plt.figure(figsize=(10, 6))
plt.subplot(1, 2, 1)
plt.hist(residuals, bins=10, edgecolor='black')
plt.title('Residual Histogram')
plt.subplot(1, 2, 2)
stats.probplot(residuals, dist="norm", plot=plt)
plt.title('Q-Q Plot of Residuals')
plt.tight_layout()
plt.show()
# 测试 Durbin-Watson 统计值
dw_statistic = sm.stats.durbin_watson(residuals)
print(f"Durbin-Watson Statistic: {dw_statistic}")
```
上述代码实现了如下功能:
- 利用 StatsModels 库训练了一个包含两个自变量的多元线性回归模型[^2];
- 对残差进行了可视化处理并通过 Q-Q 图检查正态性;
- 计算了 Durbin-Watson 值来测试时间序列独立性的假设。
---
#### 结论
无论是采用图形化的 SPSS 平台还是灵活强大的 Python 编程环境,都可以有效地开展多元线性回归后的残差分析工作。这些技术手段能够帮助研究者更好地理解模型性能,并据此调整策略优化最终成果。
---
多元线性回归残差Python代码
以下是使用Python进行多元线性回归残差计算的代码示例:
```python
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
# 构造数据
x = np.array([[1, 2, 3], [1, 3, 4], [1, 4, 5], [1, 5, 6], [1, 6, 7], [1, 7, 8], [1, 8, 9], [1, 9, 10], [1, 10, 11], [1, 11, 12]])
y = np.array([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
# 计算多元线性回归模型
model = sm.OLS(y, x).fit()
# 计算残差
residuals = model.resid
# 绘制残差图
plt.scatter(model.fittedvalues, residuals)
plt.xlabel('Fitted values')
plt.ylabel('Residuals')
plt.title('Residual plot')
plt.show()
```
在这个例子中,我们使用了numpy和statsmodels库来构造多元线性回归模型,并使用matplotlib库绘制了残差图。其中,x是自变量矩阵,y是因变量向量,model是多元线性回归模型,residuals是残差向量。
阅读全文
相关推荐













