gpt4 book ai didi

r - 使用 bs() 函数进行样条时如何解释 lm() 系数估计

转载 作者:行者123 更新时间:2023-12-01 19:36:03 25 4
gpt4 key购买 nike

我正在使用一组从 (-5,5)(0,0)(5,5) 呈“对称 V 形”。我正在使用 lm()bs() 函数拟合模型以拟合“V 形”样条线:

lm(formula = y ~ bs(x, degree = 1, knots = c(0)))

当我通过 predict() 预测结果并绘制预测线时,我得到“V 形”。但是当我查看模型估计值 coef() 时,我看到了我不期望的估计值。

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.93821 0.16117 30.639 1.40e-09 ***
bs(x, degree = 1, knots = c(0))1 -5.12079 0.24026 -21.313 2.47e-08 ***
bs(x, degree = 1, knots = c(0))2 -0.05545 0.21701 -0.256 0.805

我期望第一部分的系数为 -1 ,第二部分的系数为 +1 。我必须以不同的方式解释估算吗?

如果我手动填充 lm() 函数中的结,我会得到这些系数:

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.18258 0.13558 -1.347 0.215
x -1.02416 0.04805 -21.313 2.47e-08 ***
z 2.03723 0.08575 23.759 1.05e-08 ***

这更像是这样。 Z(结点)相对于 x 的变化为 ~ +1

我想了解如何解释 bs() 结果。我已经检查过,手动和 bs 模型预测值完全相同。

最佳答案

I would expect a -1 coefficient for the first part and a +1 coefficient for the second part.

我认为您的问题实际上是关于什么是 B 样条函数。如果您想了解系数的含义,您需要知道样条线的基函数是什么。请参阅以下内容:

library(splines)
x <- seq(-5, 5, length = 100)
b <- bs(x, degree = 1, knots = 0) ## returns a basis matrix
str(b) ## check structure
b1 <- b[, 1] ## basis 1
b2 <- b[, 2] ## basis 2
par(mfrow = c(1, 2))
plot(x, b1, type = "l", main = "basis 1: b1")
plot(x, b2, type = "l", main = "basis 2: b2")

basis

注意:

  1. 1 阶 B 样条是帐篷函数,如 b1 所示;
  2. 1 阶 B 样条已缩放,因此它们的函数值介于 (0, 1) 之间;
  3. 1 度 B 样条线的弯曲的地方
  4. 1 阶 B 样条线是紧凑的,并且仅在(不超过)三个相邻结上非零。

您可以从 Definition of B-spline 获取 B 样条曲线的(递归)表达式。 0 次 B 样条是最基础的类,而

  • 1 次 B 样条是 0 次 B 样条的线性组合
  • 2 次 B 样条是 1 次 B 样条的线性组合
  • 3 次 B 样条是 2 次 B 样条的线性组合

(抱歉,我跑题了...)

使用 B 样条线的线性回归:

y ~ bs(x, degree = 1, knots = 0)

只是在做:

y ~ b1 + b2

现在,您应该能够理解您得到的系数是什么意思,它意味着样条函数是:

-5.12079 * b1 - 0.05545 * b2

在汇总表中:

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.93821 0.16117 30.639 1.40e-09 ***
bs(x, degree = 1, knots = c(0))1 -5.12079 0.24026 -21.313 2.47e-08 ***
bs(x, degree = 1, knots = c(0))2 -0.05545 0.21701 -0.256 0.805

您可能想知道为什么 b2 的系数不显着。好吧,比较您的 yb1:您的 y对称 V 形,而 b1反向对称V 形。如果您首先将 -1 乘以 b1,然后乘以 5 来重新调整它,(这解释了 b1< 的系数 -5/),你得到什么?很好的搭配,对吧?所以不需要b2

但是,如果您的 y 是不对称的,则从 (-5,5) 运行到 (0,0),然后运行到 (5,10),那么您会注意到 b1b2 的系数都很重要。我认为其他答案已经给了你这样的例子。

<小时/>

此处演示了将拟合 B 样条重新参数化为分段多项式:Reparametrize fitted regression spline as piece-wise polynomials and export polynomial coefficients .

关于r - 使用 bs() 函数进行样条时如何解释 lm() 系数估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com