如何在R中创建带参数和循环的函数?

时间:2015-01-19 21:56:47

标签: r

我想创建等于

的365个元素的向量
fCAT[i]<-seasonality[i]+beta0+beta1*exp(-gamma*day[i])+beta2*gamma*exp(-gamma*day[i]) 

其中beta0,beta1,beta2和gamma是未知参数。接下来,我必须通过最小化(sum(fCAT)-1000)^2来优化参数。我正在考虑在函数中使用循环,但我不知道如何定义它以便正确解释参数而不是字符串。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以将功能设置为:

f <- function(beta) {

    gamma <- beta[4]
    fCAT <- seasonality + beta[1] + 
        beta[2]*exp(-gamma*day) + 
        beta[3]*gamma*exp(-gamma*day)

    (sum(fCAT) - 1000)^2
}

您应该能够使用以下优化:

optim(rep(0, 4), f)

答案 1 :(得分:1)

如果观察到fCAT和day,那么这只是一个非线性最小二乘问题,您可以使用nls函数来解决。