2017-08-22 11 views
0

私はRを使用してプログラミングしていますRプログラミング(関数と時系列インデックス)

関数とforループを作成する必要があります。

値:t = 0.001、n = 4、以下の関数が添付されています。

Iは、Y (0.001)を算出する

Click the function image file link

、Y (0.001)とY (0.001)forループを使用することによって。

また、私はRコードを作成しましたが、わかりませんがエラーがあります。 Iは、Y (0.001)とY (0.001)、Y (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]) 
} 
+2

こんにちは、SOへようこそ!彼らは何をすべきか?もう少し質問を指定する必要があります。私たちにとっては、エラーメッセージを理解することも不可能です。あなたはいくつかの機能を持っていますか?それらのすべてを実行しますか? –

+0

@JanSilaああ、申し訳ありません!私は自分の関数をリンクして、私のRコードを付けます! –

+0

コードに 'for'キーワードがありません。 'for'ループの先頭に 'for(i in 2:n){'を追加する必要があるかもしれません。また、 '*'は 'sigma [i]'の式にはありません。これがあなたのエラーを修正するはずです。 – Prem

答えて

0

(多分ループ上のチュートリアルを実行してあり、私は磨くでしょう物事のカップルは、(あなたがより多くの詳細が必要な場合はコメント)ですが、あなたの@Premによって作られたポイントのほかに、次のようなループのために誤って指定していましたRにおける)およびシグマ乗算。

ほとんどの場合、イプシロン関数は単一の値ではなく、各観測値のベクトルであるベクトルを返しました。だから私はそれを2)のようにiに依存するように修正した。

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]) 
} 
+1

非常にありがとう!難しい部分が解決されました:) –