【问题标题】:R programming (function and time series index) [closed]R编程(函数和时间序列索引)[关闭]
【发布时间】:2017-08-22 08:24:13
【问题描述】:

我正在使用 R 编程。

我必须创建函数和 for 循环。

值:t=0.001,n=4 和下面附加的函数。

我想使用 for 循环计算 y2(0.001)、y3(0.001) 和 y4(0.001)。

另外,我做了一个R代码,但是有一个我不知道的错误。

如何使 for 循环计算 y2(0.001)、y3(0.001) 和 y4(0.001)?

下面的代码是我的 R 代码。谢谢。

###########################
#   value                 #
###########################    
n<-4
t<-0.001
sigma<-numeric(4)
y<-numeric(4)
sigma[1]<-0.1
y[1]<-0

###########################
#   Brownian-Motion       #
###########################
nor1<-rnorm(n,0,1)
nor1<-cumsum(nor1)

###########################
#   function              #
###########################
delta<-function(t){
  0.01
}
alpha<-function(t){
  2*t*(1-t)
}
beta<-function(t){
  2*t*(1-t)
}
epsilon<-function(t){
  (2^(200*t))*(nor1)*(1/sqrt(log10(2)))
}

###########################
#   for-loop              #
###########################
sigma[i]<-delta(t)+(alpha(t)*y[i-1]*y[i-1])+(beta(t)*sigma[i-1]sigma[i-1]);
y[i]<-sigma[i]*epsilon(t);
print(y[i])
}

【问题讨论】:

  • 嗨,欢迎来到 SO!他们应该怎么做?您需要再详细说明问题,对我们来说也无法理解错误消息。你有一些函数,你想运行所有的函数吗?
  • @JanSila 哦,对不起!我将我的函数附加到链接和我的 R 代码!
  • 您的代码中没有 for 关键字。您可能需要在“for”循环的开头添加for (i in 2:n){。在sigma[i] 公式中也缺少*。希望这能解决您的错误。
  • 好点@Prem,但问题还在于,epsion 返回一个长度为n 的向量,并且OP 希望将标量保存到向量中。 @Hyun 你能弄清楚那个吗?

标签: r function for-loop time-series


【解决方案1】:

有几件事我会完善(如果您想了解更多详细信息,请发表评论),但除了@Prem 提出的观点之外,您错误地指定了 for 循环(可能通过 R 中的循环教程运行)和西格玛乘法。

但大多数情况下,epsilon 函数返回一个向量 - 每个观测值的值 - 而不是单个值。因此,我将其修复为依赖于 i,就像 2) 中一样。

epsilon<-function(t,i){
  (2^(200*t))*(nor1[i])*(1/sqrt(log10(2)))
}

那么 for 循环就是这样工作的:

for (i in 2:n){
sigma[i]<-delta(t)+(alpha(t)*y[i-1]*y[i-1])+(beta(t)*sigma[i-1]*sigma[i-1]);
y[i]<-sigma[i]*epsilon(t,i);
print(y[i])
}

【讨论】:

  • 非常感谢!困难的部分解决了:)
猜你喜欢
  • 2014-07-06
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 2021-04-20
  • 2015-06-14
  • 1970-01-01
相关资源
最近更新 更多