【发布时间】:2018-10-20 00:12:20
【问题描述】:
我编写了一个包含两个变量的函数,我想在其中优化 Z:
fr<-function(Z) {
delta<-pnorm((Matrix81fulld$CumZavg-sqrt(rho)*Z)/sqrt(1-rho)) - pnorm((Matrix81fulld$CumZavgLow-sqrt(rho)*Z)/sqrt(1-rho))
sum((Matrix81fulld$n*(Matrix81fulld$Prob1981 - delta)^2)/((delta*(1-delta))))
}
上述功能有效。我传递一个 rho 值,然后求解 Z。我编写了一个循环,将多个 rho 值传递给 fr 函数,以优化不同 rho 值的 Z:
for (rho in c(0.01, 0.025, 0.05, 0.1, 0.15, 0.2, 0.3)){
o=optimize(fr,interval=c(-2,2))
n=nlm(fr,p=0)
}
当然,当我打印 'o' 时,只返回 rho=0.3 的优化值,因为所有其他值都被覆盖了。我想将 o 和 n 都存储在 2 个单独的向量中,这些向量包含跨 rho 值的结果。我知道有人问过类似的问题,但它们似乎都容易得多,因为循环通常在 1:10 为 i 运行,例如。在这种情况下,我有 7 个特定的 rho 值,我在每种情况下交换然后优化 fr..不确定我是在假装这更复杂还是真的更复杂,但我似乎无法让它工作。
【问题讨论】:
-
这不是
res <- lapply(c(0.01, 0.025, 0.05, 0.1, 0.15, 0.2, 0.3), function(rho){ c(o=optimize(fr,interval=c(-2,2)), n=nlm(fr,p=0)) })那么简单吗? -
不幸的是,我的问题本可以措辞更好。 Rho 不是数据集中的变量;它仅被定义为函数 'fr' 下的数学表达式中的一个术语。因此,当您创建函数(rho)时,它没有值,并且 r 返回错误'找不到对象“rho”'.....当我手动解决这个问题时,我必须定义 rho = 0.01; rho=0.025,每次优化。这就是我尝试循环方法的原因——主要是为了整合我的代码并消除潜在的错误。我可以打印函数中的值以确认它正在工作......我只是还没弄清楚如何存储它们。
标签: r