关于在R.中使用optim的困惑。简单的例子

时间:2016-03-01 21:17:57

标签: r

我正在尝试使用简单的最小平方方法将一些数据拟合到自定义函数。我已经定义了自定义函数和错误函数,而且我无法找出“optim”的正确语法。

以下是一个例子:

#Create some data based on the function f(x) = x^4

Range = c(0:10)
Output = Range^4
ActualData = data.frame(Range,Output)

#Define custom function 

MyFun = function(x,a) 
{
 x^a
}


#Define error function, which calculates the residual sum of squares 

ErrFun = function(Data,x,a)
{
sum((MyFun(x,a)-Data)^2)
}

#My failed attempt at using "optim", using exponent of 3 as a starting point

optim(par = c(Output,Range,3), ErrFun, data = ActualData)

我收到以下错误:

Error in fn(par, ...) :
 unused argument (data = list(Range = 0:10, Output = c(0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000)))

我觉得这与我定义par的方式有关。我认为par应该包含优化函数将尝试搜索的参数,以便最小化ErrFun的值。但是除了“a”之外,ErrFun函数本身还传递了两个其他参数,这些参数不是要优化的(Data和x)。我不知道该怎么做,真的很感激一些帮助!

0 个答案:

没有答案