【发布时间】:2016-08-11 18:40:05
【问题描述】:
我正在研究一个非常简单的优化(线性)问题,这在 excel 上非常容易,但是当我使用 R 的 optim() 或 optimize() 尝试它时会给出不同的值。函数是获取风险厌恶系数。 wc 是受访者的回答,虽然我自己给出了价值。
p <- 0.3
w1 <- 2.0
w2 <- 0.0
mean <- p*w1+(1-p)*w2
variance <- p*w1^2+(1-p)*w2^2-mean^2
wc <- 0.4
f<- function(x){(abs(mean-wc+0.5*x*variance))}
initial_x <- c(0.1)
x_optimal <- optim(initial_x, f, method="CG")
x_min <- x_optimal$par
x_min
[1] -0.4761905
目标函数只是一个变量的线性方程,所有其他变量都已确定。 当我使用 Excel 求解器计算时,x 的最佳值为 0.4761905(是的,完全相同的数字,只是没有减号)。
我还尝试了其他方法,例如“Brent”、“SANN”,但它们给了我完全不同的值。 我听说 optimize() 函数是用于线性优化的,所以我也尝试过,但又给了我错误的值。你能告诉我原因吗?
谢谢!
【问题讨论】:
-
嗨,欢迎来到堆栈溢出。下次您发布时,请尝试发布reproducible example。我们没有任何excel代码,所以我不能告诉你为什么你的答案是不同的符号。您的 R 代码返回正确的解决方案。 Excel中答案相反的原因可能是由于绝对值。此外,您不应使用基于通用梯度的优化例程来回答线性问题。只是
solve(.5*variance, mean-wc),它返回值0.4761905。
标签: r excel optimization