R中的最优函数用于D-最优

时间:2013-04-10 11:56:15

标签: r mathematical-optimization

我已经创建了一个返回(X'X)^ - 1的确定函数的函数。我需要在我创建的函数上使用optim函数来为我提供X矩阵的最佳值。我在使用优化工作方面遇到了问题,但我的功能正常。

fr <- function(x,nc,nr) {
Xd <- matrix(c(rep(1,nr),x),nrow=nr,ncol=nc) #### Design matrix
det(solve((t(Xd)%*%Xd))) #### det(FIM)
}

我已尝试将x作为矢量和矩阵;

x <-
matrix(c(0.1,0.2,0.3,0.2,0.1,0,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2),nro    w = 10, ncol = 2)
x <- c(0.1,0.2,0.3,0.2,0.1,0,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2,0.1,0.2)

这些是我用优化尝试过的一些变化,都没有成功;

optim((x, 3, 10), fr)
optim(fn = fr, par = c(x=x, nc=3, nr=10))
optim(c(x,3,10), fr)

我得到了不同的错误,有时候在优秀的x之后有一个逗号,有时在.Internal中有关于nrow缺失的错误。

1 个答案:

答案 0 :(得分:1)

您可以将fr的参数传递给optim

opt <- optim(fn=fr, x, nc=3, nr=10)

这给出了

> opt$par
         [,1]       [,2]
 [1,]  0.06933853 -1.0888672
 [2,]  0.07796119  1.8288789
 [3,]  2.09366322 -1.3050871
 [4,]  1.40676030  3.3006266
 [5,]  1.04102733 -1.1048119
 [6,] -5.84413537  1.6741804
 [7,] -4.75578972 -0.6484606
 [8,]  1.23037198  2.4842715
 [9,]  0.10477158  1.4135113
 [10,]  2.14145939 -1.4333241

比较优化前后fr的函数值:

> fr(x,3,10)
[1] 62.5
> fr(opt$par, 3, 10)
[1] 4.963814e-05

这有帮助吗?

如果您想设置上限和下限,可能需要检查?optim