R如何构造形式为c0+的多项式;c1*x++;cn*x^n来自正交lm(带多边形(原始=F))
如何提取R中正交多项式回归的系数 它就像一个带有原始回归的符咒:R如何构造形式为c0+的多项式;c1*x++;cn*x^n来自正交lm(带多边形(原始=F)),r,lm,poly,R,Lm,Poly,如何提取R中正交多项式回归的系数 它就像一个带有原始回归的符咒: #create datas set.seed(120) x= 1:20 y=x^2 + rnorm(length(x),0,10) datas = data.frame(x,y) #compute raw model with function poly mod= lm(data=datas, y~poly(x,2,raw=T)) #get coefficients with function coef() coefficie
#create datas
set.seed(120)
x= 1:20
y=x^2 + rnorm(length(x),0,10)
datas = data.frame(x,y)
#compute raw model with function poly
mod= lm(data=datas, y~poly(x,2,raw=T))
#get coefficients with function coef()
coefficients = coef(mod)
#construct polynom and check fitted values
fitted_values = mod$fitted.values
x0 = datas$x[1]
solution = coefficients[1]+ coefficients[2]*x0^1 + coefficients[3]*x0^2
print(solution)
# 1.001596
print(fitted_values[1])
# 1.001596
# 1.001596 == 1.001596
但在正交lm上使用函数coef
获得的系数不起作用:
#create datas
set.seed(120)
x= 1:20
y=x^2 + rnorm(length(x),0,10)
datas = data.frame(x,y)
#compute raw model with function poly
mod = lm(data=datas, y~poly(x,2,raw=F))
#get coefficients with function coef()
coefficients = coef(mod)
fitted_values = mod$fitted.values
#construct polynom and check fitted values
x0 = datas$x[1]
solution = coefficients[1]+ coefficients[2]*x0^1 + coefficients[3]*x0^2
print(solution)
# 805.8476
print(fitted_values[1])
# 1.001596
# 1.001596 != 805.8476
有没有其他方法可以获得正确的参数来构造形式为c0+c1*x+..+的多项式cn*x^n并用它来解决或预测
我需要解这个方程,这意味着用函数base::solve
得到给定的x和y
谢谢问题在于,您不仅需要系数,还需要正交多项式(而不是您试图使用的原始多项式)。后者由
模型构建。矩阵:
newdata <- model.matrix(~ poly(x, 2), data = datas)
solution <- newdata %*% coefficients
print(solution[1])
# [1] 1.001596
print(fitted_values[1])
#1.001596
newdata我需要解f(x)=1.001596,并用我的示例模型找到x=1。有时,当正交回归工作时,原始回归给出x^2系数的NA。但是我不能用base::solve()函数来解正交回归。为什么要用solve
来解这个问题?我使用了solve
,因为它适用于非正交多项式系数列表,但不适用于正交多项式。我要么需要找到一个正交多项式对应的原始多项式,要么找到一种用正交多项式求解f(x)=y的方法。也许我只是缺少数学方法。我要检查一下你的链接,用数值方法够吗uniroot(函数(x)predict(mod,newdata=list(x=x))-y,c(01100))
这只会找到一个根,正如您所知,通常有两个根。调整间隔以找到两者。对此,绘图很有用。