Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中创建包含参数和循环的函数?_R - Fatal编程技术网

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

如何在R中创建包含参数和循环的函数?,r,R,我想创建365个元素的向量,等于 fCAT[i]<-seasonality[i]+beta0+beta1*exp(-gamma*day[i])+beta2*gamma*exp(-gamma*day[i]) fCAT[i]您可以将功能设置为: f <- function(beta) { gamma <- beta[4] fCAT <- seasonality + beta[1] + beta[2]*exp(-gamma*day) +

我想创建365个元素的向量,等于

fCAT[i]<-seasonality[i]+beta0+beta1*exp(-gamma*day[i])+beta2*gamma*exp(-gamma*day[i]) 

fCAT[i]您可以将功能设置为:

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
}

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

fCAT
未观察到,定义如上,只知道
day
季节性
。@Hanna,我认为您仍然可以使用
nls
,方法是将所有观察值的fCAT设置为1000,因为这是您优化的标准
nls
根据预测值(在您的情况下为fCAT)和观察值之间的平方差优化参数,因此使用1000作为观察值会产生与您在问题中所显示的相同的差异。
nls
可能是更好的选择,因为它还将为您提供参数不确定性的估计值。我不确定它是否会处理未识别的参数,但我怀疑这实际上不是您想要的。标准是
(总和(fCAT)-1000)^2
而不是
总和((fCAT-1000)^2)
,因此将fCAT设置为1000没有帮助。起初我没有注意到你代码中的错误,pete,但经过这一小小的修改后,我得到了令人满意的结果。@Hanna,你可能应该“接受”pete的答案,因为它对你有用,你可能应该小心结果-
beta1
beta2
不是由你的目标函数确定的。如果将其分解为
fCAT=季节性+beta0+(beta1+beta2*gamma)*exp(-gamma*day)
optim(rep(0, 4), f)