【问题标题】:How to create a formula that depends on the value of another formula - R如何创建一个取决于另一个公式的值的公式 - R
【发布时间】:2022-11-01 21:50:08
【问题描述】:

H2 = 0

H3 - H999 = =SQRT(EXP(0,05)*ABS($I2-50))*NORMINV(RAND();0;1)

I2 - I999 = =$E$2+$D$2*EXP($A$2*($G2-$B$2)+$C$2)/(1+EXP($A$2*($G2-$B$2)+$C$2))+H2

嗨,大家好,

我在excel中创建了上面的公式。 我想将这个实现到 R。任何人都可以帮我解决这个问题吗?

我已经尝试使用公式和 data.frame 来实现。

问题是 sigma 取决于 y 和 X(t)-1。

有人可以帮我吗?

谢谢, 最大限度

【问题讨论】:

  • 欢迎使用 Stackoverflow 请不要(仅)发布代码/数据/错误的图像:它会破坏屏幕阅读器并且无法复制或搜索(参考:meta.stackoverflow.com/a/285557 和 xkcd.com/2116) .请直接包含代码、控制台输出或数据(例如,data.frame(...) 或 dput(head(x)) 的输出)。
  • 如果你想模拟一个随机动力系统,你应该尝试使用为此目的开发的工具。如果您将 SDE 编写为公式而不是电子表格代码,它也可能有助于任务的呈现。

标签: r formula differential-equations


【解决方案1】:

这应该让你开始:

A <- 2
B <- 5
C <- 3
D <- 30
E <- 100
delta <- 0.05
t <- seq(0.05, by = 0.05, length.out = 998)
sigma <- c(0, sqrt(exp(0.05)*abs(t[-998] - 50))*rnorm(997))
Xt <- E + D*exp(A*(t - B) + C)/(1 + exp(A*(t - B) + C)) + sigma

要获得Xt 进行多次复制,它会是这样的

sigma <- c(0, sqrt(exp(0.05)*abs(t[-998] - 50)))
Xt <- E + D*exp(A*(t - B) + C)/(1 + exp(A*(t - B) + C))
Simulation <- replicate(100, Xt + sigma*rnorm(998))

或者像这样矢量化它(这将比使用replicate 更快)

Simulation <- E + D*exp(A*(t - B) + C)/(1 + exp(A*(t - B) + C)) + c(0, sqrt(exp(0.05)*abs(t[-998] - 50)))*matrix(rnorm(998*100), 998, 100)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 2020-09-15
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多