R中的自动曲线拟合

Tom*_*ski 4 r curve-fitting

是否有任何包使用许多简单模型自动拟合曲线?
简单的模型我的意思是:

  • AX + B
  • 斧^ 2 + BX + C
  • a*log(x)+ b
  • 一个*X ^ N + B
  • AX /(1 + BX)
  • 斧^ N /(1 + BX ^ n)的
  • ...

最好的方法是使用一个带有两个向量参数X和Y的函数,并返回一个带有SSE的拟合简单模型列表.

G. *_*eck 10

试试这个. rhs是右侧的字符向量和xy是数据.它fo为每个构造公式,然后提取参数并将每个参数设置为1作为起始值.最后它运行nls并返回已排序的SSE,以便结果是通过右侧命名的SSE的向量.如果verbose=TRUE(默认情况下),则它还显示每个拟合的输出.

sse <- function(rhs, x, y) sort(sapply(rhs, function(rhs, x, y, verbose = TRUE) {
    fo <- as.formula(paste("y", rhs, sep = "~"))
    nms <- setdiff(all.vars(fo), c("x", "y"))
    start <- as.list(setNames(rep(1, length(nms)), nms))
    fm <- nls(fo, data.frame(x, y), start = start)
    if (verbose) { print(fm); cat("---\n") }
    deviance(fm)
}, x = x, y = y))

## test

set.seed(123)
x <- 1:10
y <- rnorm(10, x)

# modify to suit
rhs <- c("a*x+b", "a*x*x+b*x+c")

sse(rhs, x, y)
Run Code Online (Sandbox Code Playgroud)