在 lm() 中强制给定系数
force given coefficients in lm()
我目前正在尝试使用 lm()
将多项式模型拟合到测量数据。
fit_poly4 <- lm(y ~ poly(x, degree = 4, raw = T), weights = w)
x
作为独立变量,y
作为因变量,w
= 1/测量方差。
我想尝试使用给定系数的多项式而不是 R 确定的系数。具体来说,我希望我的多项式是
y = -3,3583*x^4 + 43*x^3 - 191,14*x^2 + 328,2*x - 137,7
我试着输入为
fit_poly4 <- lm(y ~ 328.2*x-191.14*I(x^2)+43*I(x^3)-3.3583*I(x^4)-137.3,
weights = w)
但这只是 returns 一个错误:
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
有没有一种方法可以确定 lm()
中的系数,如何做到这一点?
我不确定你为什么要这样做,但你可以使用偏移项:
set.seed(101)
dd <- data.frame(x=rnorm(1000),y=rnorm(1000), w = rlnorm(1000))
fit_poly4 <- lm(y ~
-1 + offset(328.2*x-191.14*I(x^2)+43*I(x^3)-3.3583*I(x^4)-137.3),
data=dd,
weights = w)
-1
抑制了通常的截距项。
我目前正在尝试使用 lm()
将多项式模型拟合到测量数据。
fit_poly4 <- lm(y ~ poly(x, degree = 4, raw = T), weights = w)
x
作为独立变量,y
作为因变量,w
= 1/测量方差。
我想尝试使用给定系数的多项式而不是 R 确定的系数。具体来说,我希望我的多项式是
y = -3,3583*x^4 + 43*x^3 - 191,14*x^2 + 328,2*x - 137,7
我试着输入为
fit_poly4 <- lm(y ~ 328.2*x-191.14*I(x^2)+43*I(x^3)-3.3583*I(x^4)-137.3,
weights = w)
但这只是 returns 一个错误:
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
有没有一种方法可以确定 lm()
中的系数,如何做到这一点?
我不确定你为什么要这样做,但你可以使用偏移项:
set.seed(101)
dd <- data.frame(x=rnorm(1000),y=rnorm(1000), w = rlnorm(1000))
fit_poly4 <- lm(y ~
-1 + offset(328.2*x-191.14*I(x^2)+43*I(x^3)-3.3583*I(x^4)-137.3),
data=dd,
weights = w)
-1
抑制了通常的截距项。