R 使用函数列表的线性回归

R 使用函数列表的线性回归,r,regression,R,Regression,我有一个数据集,它的X和Y值是通过校准得到的,我必须用一个预定义的多项式函数列表对它们进行插值,然后选择一个R2最好的。 最愚蠢的功能应该是 try<-function(X,Y){ f1<- x + I(x^2.0) - I(x^3.0) f2<- x + I(x^1.5) - I(x^3.0) ... f20<- I(x^2.0) - I(x^2.5) + I(x^0.5) r1<- lm(y~f1) r2<- lm(y

我有一个数据集,它的X和Y值是通过校准得到的,我必须用一个预定义的多项式函数列表对它们进行插值,然后选择一个R2最好的。 最愚蠢的功能应该是

try<-function(X,Y){
   f1<- x + I(x^2.0) - I(x^3.0)
   f2<- x + I(x^1.5) - I(x^3.0)
   ...
   f20<- I(x^2.0) - I(x^2.5) + I(x^0.5)

   r1<- lm(y~f1)
   r2<- lm(y~f2)
   ...
   r20<-lm(y~f20)

   v1<-summary(r1)$r.squared
   v2<-summary(r2)$r.squared
   ...
   v20<-summary(r20)$r.squared

   v<-c(v1,v2,...,v20)
   return(v)
  }

尝试创建F作为列表并继续:

F = list(f1, f2, ...., f20)
r = sapply(F, function(x) lm(y~x))
v = sapply(r, function(x) summary(x)$r.squared)
return v

Sappy将取F的每个元素,用y执行lm,并将结果放入向量r中。在下一行中,Sappy将获取r的每个元素并得到摘要,并将结果放入向量v中。希望它能起作用。你也可以尝试Lappy(而不是sapply),它非常相似。

生活中有比最好的R^2更多的东西,所以要小心接受这是最好的方法。是的,我知道,而且我认为在比较不同阶次的多项式函数时,这一点更为正确,就像在本例中一样。不幸的是,让我写剧本的人不同意。。。