【发布时间】:2018-11-16 19:07:53
【问题描述】:
我在 R 中有一个数据框 df1,看起来像这样(所有值都是随机选择的,但近似值来自真实数据):
A B C D E F G H
a 0.04 0.01 50 70 0.01 ... 0.0002
b 0.03 0.1 49 69 0.01 ... 0.0003
c 0.03 0.02 51 71 0.005 ... 0.004
d 0.04 0.02 50 70 0.006 ... 0.0005
G是这样得到的:
# Equation 1:
G = (B - C)^2 - B*(1 - B)/(D- 1) - C*(1 - C)/(E - 1)
library(dplyr)
df2 = df1 %>% mutate(G = (B - C)^2 - B*(1 - B)/(D- 1) - C*(1 - C)/(E - 1))
我想创建一个新列 G1,在每一行中应用优化函数。
G1 使用公式 1 获得,但将 B 替换为 H。H 使用公式 2 获得:
# Equation 2:
H = (B - z*F)/(1 - z)
我想创建一个新列 Z,z 的值范围从 0 到 1(步长 = 0.01),它产生最低的 G1。
我希望得到这样的东西:
A B C D E F G H G1 Z
a 0.04 0.01 50 70 0.01 ... 0.0002 ... ...
b 0.03 0.1 49 69 0.01 ... 0.0003 ... ...
c 0.03 0.02 51 71 0.005 ... 0.004 ... ...
d 0.04 0.02 50 70 0.006 ... 0.0005 ... ...
编辑:(澄清)
我的问题是如何在给定 H(以及上述条件)的情况下找到产生最低 G1 的 z 并得到 G1。
【问题讨论】:
-
为什么不先创建H,然后创建G,然后创建G1?在 R 中,您可以跨列运行算术运算。不清楚您所说的 Z 是什么意思。
-
如果您的数据框名为
df,那么只需执行df$G = (df$B - df$C)^2 - df$B... -
你好@DanY,是的,我知道怎么做你提到的。我需要在给定 H 和最低 z 的情况下获得 G1。请参阅编辑
-
“最低的G1”是什么意思?每一行都不一样,对吧?有没有一个目标,你想最小化 G1 和其他东西之间的平方和误差?或者最小化 G1 的总和? G1的产品? G1^2的总和?此外,您多次提到“最低
z” - 您是指z的值对应于G1的最小化(未指定功能)吗?还是别的什么? -
我建议查看
optim而不是尝试编写自己的优化例程,但optim可以最大限度地减少 单个值,正如我的以前的评论我不明白你想最小化什么。
标签: r dataframe mathematical-optimization