Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R如何构造形式为c0+的多项式;c1*x++;cn*x^n来自正交lm(带多边形(原始=F))_R_Lm_Poly - Fatal编程技术网

R如何构造形式为c0+的多项式;c1*x++;cn*x^n来自正交lm(带多边形(原始=F))

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

如何提取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()
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))
这只会找到一个根,正如您所知,通常有两个根。调整间隔以找到两者。对此,绘图很有用。