0

我不明白是什么让不同的案例起作用或不起作用。我本来希望他们都能明显地工作。

  • 由于某种原因,funs2 和 funs4 仅接近 n 的最后一个值:它们的行为就好像 n 始终为 5。
  • funs3 捕获序列的每个元素:它的行为就像 n 从 1 到 5 枚举,并将每个 n 映射到不同的函数,这将以不同的方式近似数据集(随着自由度的增加)

该脚本应该可以直接在 R 中运行,除了 plyr 之外没有依赖关系。

有什么线索吗?

library(plyr)
f      <- function (x) { sin(2*pi*x) }
fnoisy <- function (x) {f(x) + 0.3*rnorm(1)}

x10 <- runif(10)
y10 <- aaply(x10,1,fnoisy)

curve(f,0,1,col="blue", ylim=c(-1.5,1.5))
points(x10, y10, col="red")

vdm <- function(x,n) outer( x, seq(0,n-1), "^" )

fitted <- function (n) { function(xtrain,ytrain) { w <- qr.solve(vdm(xtrain,n), ytrain) 
                                                   function (x) {  vdm(x,n) %*% w} } }


funs2 <- lapply(seq_len(5), function(n) {fitted(n)})          #does not work
funs3 <- lapply(seq_len(5), function(n) {print(n);fitted(n)}) #works
funs4 <- lapply(seq_len(5), fitted )                          #does not work

lapply(funs3, function(f) {ffitted <- f(x10,y10)
                           curve(ffitted,0,1,col="black", add=TRUE)})
4

0 回答 0