R方和线性回归拟合优度

简介: R方和线性回归拟合优度

R方由协变量X解释的结果Y的变化比例通常被描述为拟合优度的度量。这当然看起来非常合理,因为R平方测量观察到的Y值与模型的预测(拟合)值的接近程度。


然而,要记住的重要一点是,R平方不会向我们提供有关我们的模型是否正确指定的信息。也就是说,它没有告诉我们我们是否正确地指定了结果Y的期望如何取决于协变量。特别是,R平方的高值并不一定意味着我们的模型被正确指定。用一个简单的例子说明这是最简单的。

首先,我们将使用R模拟一些数据。为此,我们从标准正态分布(均值为零,方差一)中随机生成X值。然后,我们生成结果Y等于X加上随机误差,再次使用标准正态分布:

n < -  1000
set.seed(512312)
x < -  rnorm(n)
y < -  x + rnorm(n)

然后我们可以拟合Y的(正确的)线性回归模型,其中X作为协变量:

summary(mod1)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max
-2.8571 -0.6387 -0.0022  0.6050  3.0716

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.02193    0.03099   0.708    0.479
x            0.93946    0.03127  30.040   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.98 on 998 degrees of freedom
Multiple R-squared:  0.4748,    Adjusted R-squared:  0.4743
F-statistic: 902.4 on 1 and 998 DF,  p-value: < 2.2e-16

我们还可以绘制数据,用模型中的拟合线覆盖:


观察到(Y,X)数据并重叠拟合线。

现在让我们重新生成数据,但是生成Y使得它的期望值是X的指数函数:


x < -  rnorm(n)
y < -  exp(x)+ rnorm(n)

当然,在实践中,我们不模拟我们的数据 - 我们观察或收集数据,然后尝试将合理的模型拟合到它。因此,和以前一样,我们可以从拟合简单的线性回归模型开始,该模型假设Y的期望是X的线性函数:

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max
-3.5022 -0.9963 -0.1706  0.6980 21.7411

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  1.65123    0.05220   31.63   <2e-16 ***
x            1.53517    0.05267   29.15   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.651 on 998 degrees of freedom
Multiple R-squared:  0.4598,    Adjusted R-squared:  0.4593
F-statistic: 849.5 on 1 and 998 DF,  p-value: < 2.2e-16

与第一种情况不同,我们获得的参数估计(1.65,1.54)不是“真实”数据生成机制中参数的无偏估计,其中Y的期望是exp(X)的线性函数。此外,我们看到我们得到的R平方值为0.46,再次表明X(包括线性)解释了Y中相当大的变化。我们可能认为这意味着我们使用的模型,即期望Y在X中是线性的,是合理的。但是,如果我们再次绘制观察到的数据,并用拟合线覆盖它:


将拟合线叠加到观察到的数据上清楚地表明我们使用的模型未正确指定,尽管R平方值非常大。特别地,我们看到对于X的低值和高值,拟合值太小。这显然是Y的期望取决于exp(X)这一事实的结果,而我们使用的模型假设它是X的线性函数。

这个简单的例子说明,尽管R平方是一个重要的度量,但高值并不意味着我们的模型被正确指定。可以说,描述R平方的更好方法是“解释变异”的度量。为了评估我们的模型是否正确指定,我们应该使用模型诊断技术,例如针对协变量的残差图或线性预测器。

相关文章
|
Ubuntu Linux
Linux(21) Linux自定义开机启动脚本或命令
Linux(21) Linux自定义开机启动脚本或命令
725 3
|
数据采集 自然语言处理 文字识别
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(下)
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(下)
1043 0
|
2月前
|
弹性计算 运维 安全
区别及选择指南:阿里云轻量应用服务器与ECS云服务器有什么区别?
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境,易用且性价比高;ECS功能更强大,适合企业级应用如大数据、高流量网站。根据需求选择:轻量入门首选,ECS专业之选。
225 2
|
JavaScript
Vue3-修改端口号
Vue3-修改端口号
1747 0
Vue3-修改端口号
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
600 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
12月前
|
消息中间件 存储 监控
高弹性、低成本的云消息队列RabbitMQ 版
本次课程由阿里云消息队列产品专家杨文婷分享,主题为高弹性、低成本的云消息队列RabbitMQ。内容涵盖四个方面:1) 产品优势,包括兼容开源客户端、解决稳定性痛点和高弹性低成本;2) 架构实现原理,如分布式架构和弹性调度系统;3) Serverless系列带来的按量付费模式和资源池优势;4) Serverless适用场景,如开发测试环境、峰谷流量业务等。最后解答了关于顺序消费、与普通MQ对比、自动扩容及API支持等常见问题。
416 46
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
865 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
网络协议 Java 程序员
SpringCloud 远程调用为啥要采用HTTP,而不是RPC?
关于SpringCloud远程调用采用HTTP而非RPC。
298 0
|
存储 区块链 Python
怎么把Python脚本打包成可执行程序?
最近根据用户提的需求用python做了一个小工具,但是在给客户使用的时候不能直接发送python文件,毕竟让客户去安装python环境,那就离了大谱了。所以这时候就需要把多个py文件带着运行环境打包成EXE可执行文件。
怎么把Python脚本打包成可执行程序?
|
缓存 安全 应用服务中间件
Nginx:关于实现跨域代理
Nginx:关于实现跨域代理
1940 1