【发布时间】:2013-09-12 09:00:19
【问题描述】:
我正在尝试使用 R 中的 optim() 函数来解决一个简单的问题,但我在如何实现它时遇到了一些问题:
e=tot_obs/(sum(Var1)+sum(Var2)+sum(Var3)+sum(Var4))
output=(Var1+Var2+Var3+Var4)*e
我知道观察结果和所有变量的总数。
# Fake datasets
# Considering that this are the observations c(1000,250,78,0,0,90)
#Known data
total_observations=1418
var1=c(1,0.3,0.5,0.01,0.05,0.6)
var2=c(500,40,40,0,0,100)
var3=c(1,0.1,0.2,0,0.1,0)
var4=c(2,0.04,0.003,0.003,0,0.05)
#Function
e=total_observations/(sum(var1)+sum(var2)+sum(var3)+sum(var4))
output=(var1+var2+var3+var4)*e
我可以在观察结果和输出之间做一个简单的关联,结果很好 (~0.90)。这个给我 0.97。
但现在我想测试为每个变量分配不同权重的效果。
e=tot_obs/(sum(w1*Var1)+sum(w2*Var2)+sum(w3*Var3)+sum(w4*Var4))
output=(w1*Var1+w2*Var2+w3*Var3+w4*Var4)*e
where w1+w2+w3+w4=1
and cor(observations,output)~1
我试图使用 optim() 函数,但是我完全迷路了。如果有人可以帮助我或为我提供一些关于如何执行此操作的好的参考资料,我将不胜感激。
【问题讨论】:
-
如果您可以举一个
Var1到Var4和observations的示例,它会更容易为您提供帮助,因为他们的类型可能会引导您继续前进。 -
等等
ouput=(Var1+Var2+Var3+Var4) * (observations/(Var1+Var2+Var3+Var4))意思是output=observations? -
正是@plannapus。尽管输出永远不会等于观测值,因为总会有一些错误或另一个变量丢失。
-
那
e计算中的Var1到Var4和output计算中的不一样呢? -
@plannapus 我没有正确解释我的问题,我添加了假数据并更正了问题的描述。实际上,对于观察结果,我只知道总数,而不是每个值,并且使用变量(对于它们,我知道每个值),我想得出接近观察值的值。
标签: r optimization