我正在做一些基本的数据拟合并探索不同的拟合。我知道残差是样本与估计函数值之间的差异。残差的范数是相关性和数据之间偏差的度量。较低的规范表示更好的拟合。
假设三次拟合的残差范数为 0.85655,线性拟合的残差范数为 0.89182。如果规范是 0.17113 和 0.24916 怎么办?这两者之间的区别是否显着?残差小于 1 的规范是否被认为是好的?如果不是通常被视为“可接受”的剩余规范。
我正在做一些基本的数据拟合并探索不同的拟合。我知道残差是样本与估计函数值之间的差异。残差的范数是相关性和数据之间偏差的度量。较低的规范表示更好的拟合。
假设三次拟合的残差范数为 0.85655,线性拟合的残差范数为 0.89182。如果规范是 0.17113 和 0.24916 怎么办?这两者之间的区别是否显着?残差小于 1 的规范是否被认为是好的?如果不是通常被视为“可接受”的剩余规范。
因此,我建议使用标准方法来比较嵌套模型。在您的情况下,您考虑两种替代模型,三次拟合是更“复杂”的一种。F 或检验告诉您在添加更多项时,残差平方和或偏差是否显着降低。这很像比较一个仅包含截距的模型(在这种情况下,您只有残差方差)与另一个包含一个有意义的预测变量的模型:这个添加的预测变量是否占响应方差的足够部分?在您的情况下,这相当于说:对 X 和 Y 之间的三次关系进行建模会减少无法解释的方差(等效地,会增加),因此与线性拟合相比,可以更好地拟合数据。
它通常被用作响应变量和预测变量之间线性关系的检验,这就是为什么 Frank Harrell 提倡使用受限三次样条而不是假设 Y 和连续 Xs(例如年龄)之间的严格线性关系的原因。
以下示例来自几个月前我正在阅读的一本书(癌症研究中的高维数据分析,第 3 章,第 45 页),但它可以很好地用作说明。这个想法只是将不同类型的模型拟合到模拟数据集,这清楚地突出了响应变量和预测变量之间的非线性关系。真正的生成模型以黑色显示。其他颜色用于不同的模型(受限三次样条、靠近您的 B 样条和 CV 平滑样条)。
library(rms)
library(splines)
set.seed(101)
f <- function(x) sin(sqrt(2*pi*x))
n <- 1000
x <- runif(n, 0, 2*pi)
sigma <- rnorm(n, 0, 0.25)
y <- f(x) + sigma
plot(x, y, cex=.4)
curve(f, 0, 6, lty=2, add=TRUE)
# linear fit
lm00 <- lm(y~x)
# restricted cubic spline, 3 knots (2 Df)
lm0 <- lm(y~rcs(x,3))
lines(seq(0,6,length=1000),
predict(lm0,data.frame(x=seq(0,6,length=1000))),
col="red")
# use B-spline and a single knot at x=1.13 (4 Df)
lm1 <- lm(y~bs(x, knots=1.13))
lines(seq(0,6,length=1000),
predict(lm1,data.frame(x=seq(0,6,length=1000))),
col="green")
# cross-validated smoothed spline (approx. 20 Df)
xy.spl <- smooth.spline(x, y, cv=TRUE)
lines(xy.spl, col="blue")
legend("bottomleft", c("f(x)","RCS {rms}","BS {splines}","SS {stats}"),
col=1:4, lty=c(2,rep(1,3)),bty="n", cex=.6)

现在,假设您想比较线性拟合lm00(lm1
> anova(lm00, lm1)
Analysis of Variance Table
Model 1: y ~ x
Model 2: y ~ bs(x, knots = 1.13)
Res.Df RSS Df Sum of Sq F Pr(>F)
1 998 309.248
2 995 63.926 3 245.32 1272.8 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1