R 中的线性回归,具有不良残差

linear regression in R with bad residuals

提问人:Arianna 提问时间:11/4/2023 更新时间:11/4/2023 访问量:54

问:

此问题是从 Stack Overflow 迁移而来的,因为它可以在交叉验证中回答。18 天前迁移

我需要在 R 中做一个回归,我想从 TETA 预测 CHI,首先我绘制了我的数据图,我得到了

plot

我的数据是

CHI<- c(19.2430 ,  14.4949,   11.6516,  9.7592,   8.4091,    7.3973,    6.6104,    5.9807,    5.4650,   5.0345,    4.6695,   4.3558,  4.0830,    3.8434,    3.6310,  3.4414,    3.2708,    3.1163,   2.9757,    2.8471,   2.7287,  2.6194,   2.5181,    2.4237,    2.3356,   2.2530,    2.1754,   2.1022,    2.0331,   1.9675,  1.9053,   1.8461,    1.7895,    1.7355,   1.6837 ,   1.6341,   1.5863 ,   1.5404,   1.4960,  1.4532,   1.4117,    1.3716,    1.3326,   1.2947 ,   1.2579,   1.2220,    1.1869,   1.1527,  1.1193,   1.0865,    1.0544,    1.0228,  0.9919,    0.9614,   0.9314,   0.9018,    0.8726,   0.8438,  0.8152,   0.7870,    0.7590,   0.7312,   0.7036,   0.6762,  0.6489,   0.6217,    0.5946,   0.5676,  0.5405,   0.5135,   0.4864,    0.4592,   0.4320,    0.4046,    0.3772,   0.3495,    0.3217,   0.2936,  0.2653,   0.2368,   0.2080,   0.1790,  0.1497,    0.1201, 0.0903,   0.0603,    0.0302)
TETA<- c(0.0524,    0.0698,    0.0873,  0.1047,   0.1222,  0.1396,   0.1571,  0.1745,   0.1920,    0.2094,   0.2269,   0.2443,   0.2618,   0.2793,   0.2967,  0.3142,   0.3316,  0.3491,   0.3665,   0.3840,   0.4014,   0.4189,   0.4363,   0.4538,   0.4712,  0.4887,   0.5061,  0.5236,   0.5411,   0.5585,   0.5760,   0.5934,   0.6109,   0.6283,   0.6458,  0.6632,   0.6807,  0.6981,   0.7156,   0.7330,   0.7505,   0.7679,   0.7854,   0.8029,   0.8203,  0.8378,   0.8552,  0.8727,   0.8901,   0.9076,   0.9250,   0.9425,   0.9599,   0.9774,   0.9948,  1.0123,   1.0297,  1.0472,   1.0647,   1.0821,   1.0996,   1.1170,   1.1345,   1.1519,   1.1694,  1.1868,   1.2043,  1.2217,   1.2392,   1.2566,   1.2741,   1.2915,   1.3090,   1.3265,   1.3439,  1.3614,   1.3788,  1.3963,   1.4137,   1.4312,   1.4486,   1.4661,   1.4835,    1.5010,  1.5184,  1.5359,   1.5533)

(我知道他们很少)

为了进行线性回归,我尝试转换我的变量,特别是经过一些尝试后,我尝试了以下代码:

chi<-log(chi+3)
teta<-log(teta)

因为这样我就有了这个情节

plot

然后

df<- data.frame(chi,teta)
model<- lm(chi ~ teta, data=df)

我得到

regression

我的残差是

residuals

如何改进此模型?我应该尝试使用非线性回归吗?

R 回归

评论

1赞 whuber 11/4/2023
按照 stats.stackexchange.com/questions/35711 中描述的步骤进行操作。

答:

0赞 Frank Harrell 11/4/2023 #1

由于您似乎没有基于主题的理论来决定选择某种数学形式,因此您可以凭经验思考并使用灵活的平滑非线性曲线拟合过程,例如回归样条、平滑样条或黄土。

评论

0赞 Arianna 11/16/2023
谢谢!我尝试了回归样条,我对结果很满意。现在我的问题是我需要一个明确的公式,即我需要将这个样条拟合转换为分段多项式表示。我还尝试使用 ss 和 smooth.spline 函数平滑样条,结果都非常好,但我的问题是一样的,因为我需要编写多项式 rapresentation
0赞 Frank Harrell 11/16/2023
样条曲线有显式的公式,尤其是在使用简单的截断幂基时。在 R 包中,有一种方法可以为你提供整个模型的数学形式,如果使用 R markdown 或在块标头中,则会自动呈现该形式。例如。rmslatexquartoresults='asis'require(rms); f <- ols(y ~ age + rcs(height, 4)); latex(f)