【发布时间】:2014-07-21 09:51:49
【问题描述】:
我的数据(包含多个矩阵对象的列表)如下所示:
$matrix_1
26/03/2012 02/04/2012 09/04/2012 16/04/2012 23/04/2012 30/04/2012 07/05/2012 14/05/2012 21/05/2012 28/05/2012
26/03/2012 500 40 30 20 21 18 8 7 8 5
02/04/2012 NA 100 25 19 16 15 10 6 7 8
09/04/2012 NA NA 200 55 50 45 38 35 34 32
16/04/2012 NA NA NA 400 50 30 20 10 12 7
$matrix_b
26/03/2012 02/04/2012 09/04/2012 16/04/2012 23/04/2012 30/04/2012 07/05/2012 14/05/2012 21/05/2012 28/05/2012
26/03/2012 500 40 30 20 21 18 8 7 8 5
02/04/2012 NA 100 25 19 16 15 10 6 7 8
09/04/2012 NA NA 200 55 50 45 38 35 34 32
16/04/2012 NA NA NA 400 50 30 20 10 12 7
现在我已经编写了一个循环,使用 NLS 和我自己指定的曲线函数将曲线拟合到我的每一行数据。 即对于 matrix_a 行 26/03/2012,我正在根据这些数据点拟合曲线:
500 40 30 20 21 18 8 7 8 5
在我的循环中,我提取曲线系数以供以后使用
有没有办法可以矢量化这个方法?这样我就不必使用循环了吗?
我以这种方式对每一行使用 NLS:
fit.function <- function(a,x,b)
{return(a*x^b)}
mod <- nls(values ~ fit.function(a,index_of_values,b))
其中 index_of_values 为 1、2、3 等。(即列号)
【问题讨论】:
-
您能提供一些适合您曲线的代码 sn-ps 吗?
-
嗨,shecode。看看
sapply函数,大概就是你想要的吧。 -
我添加了一些sn-ps
标签: r matrix vectorization curve-fitting nls