Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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,我很难想出如何解决融资中的最大化问题 我想最大:(t(x)%*%(r)-rf)/(t(x)%*%A%*%x) 其中,x是3x1矢量,a是3x3,rf是值(0.02),r也是3x1矢量。 从这个方程中,我想知道使其最大化的x的值 额外好处:若你们能插入约束,使x中的所有单个值都在0到1之间,并且求和为1,那个就更棒了 sigma1=0.1 sigma2=0.2 sigma3=0.15 korrelationen12=0.25 korrelation23=0.20 korrelation13=0.1

我很难想出如何解决融资中的最大化问题

我想最大:
(t(x)%*%(r)-rf)/(t(x)%*%A%*%x)
其中,
x
是3x1矢量,
a
是3x3,
rf
是值(0.02),
r
也是3x1矢量。 从这个方程中,我想知道使其最大化的
x
的值

额外好处:若你们能插入约束,使x中的所有单个值都在0到1之间,并且求和为1,那个就更棒了

sigma1=0.1
sigma2=0.2
sigma3=0.15
korrelationen12=0.25
korrelation23=0.20
korrelation13=0.1
cov12=korrelationen12*sigma1*sigma2
cov13=korrelation13*sigma1*sigma3
cov23=korrelation23*sigma2*sigma3
afkast1=0.04
afkast2=0.12
afkast3=0.08
r=c(afkast1,afkast2,afkast3)
rf=0.02
data=c(sigma1^2,cov12,cov13,cov12,sigma2^2,cov23,cov13,cov23,sigma3^2)
A=matrix(data=data,3,3)
et=c(1,1,1)

max((t(x)% * %(r)-rf)/(t(x)% * %A% * %x),x)????
在本例中,结果必须与我使用以下方法得到的结果相同:

tangent=(solve(A)%*%(r-(rf)*et))/as.numeric((t(et)%*%solve(A)%*%(r-rf*et)))
tangent
         [,1]
[1,] 0.1320973
[2,] 0.4391657
[3,] 0.4287370

试试optim:

proj <- function(x) x / sum(x) # projection satisfies sum(x) == 1
obj <- function(x) {
 x <- proj(x)
 (t(x)%*%(r)-rf)/(t(x)%*%A%*%x)
}
fit <- optim(proj(1:3), obj, lower = c(0, 0, 0), upper = c(1, 1, 1),
  method = "L-BFGS-B", control = list(fnscale = -1))

proj(fit$par) # parameter values at maximum
## [1] 0.4483085 0.2171453 0.3345461

fit$value # maximum value of objective
## [1] 5.827519

建议您调查这种不一致性——要么所提出的问题是正确的,其中
tangent
不是解决方案,要么
tangent
是解决方案,但问题中存在错误。

没有解决问题。我忘了写,当原始x向量中没有负值时,这些值必须与我从solve函数得到的值相同。计算x的原始方法是:切线=(解(A)%*%(r-(rf)*et))/as.numeric((t(et)%*%solve(A)%*%(r-rf*et)))Hi G.Grothendieck,我不太清楚你指的是什么。我没有说任何值都是负值。我只是说,只要在计算x值的原始方法中没有产生负值,x值就不会改变。此外,我通过从“切线”插入x值得到0.5895,通过将“proj(fit$par)”中的值插入(t(x)%*%(r)-rf)/(t(x)%*%A%*%x)得到0.5438。是的,我得到的和你一样,使用我的值时得到的是4.807799。但我不知道目标数字告诉我什么,但我可以看到它只使用向量的信息?我想最大化的不是x,而是整个表达式。你怎么能说你解决了我要解决的问题?我没有要求你最大化向量的目标值?我要求公式最大化。我很怀疑我的金融和投资教授在这方面是错的,想要的x值是我给你的,而不是你发现的。对不起,如果我的英语不符合你的标准。我已经删除了我的评论,并将其移至答案。
tangent=(solve(A)%*%(r-(rf)*et))/as.numeric((t(et)%*%solve(A)%*%(r-rf*et)))
obj(tangent)
##          [,1]
## [1,] 4.807799