これが私がやりたいことです:
私は、データフレームの1列にそれぞれ長さ600の100個の時系列がある時系列データフレームを持っています。
4 つの時系列をランダムに選択し、合計が 1 になるランダムな重み (つまり、0.1、0.5、0.3、0.1) を割り当てたいと考えています。それらを使用して、4 つの加重時系列変数 (凸結合など) の合計の平均を計算したいと考えています。
これを10万回言って、各結果をフォームに保存したい
ts1.name, ts2.name, ts3.name, ts4.name, weight1, weight2, weight3, weight4, mean
私は9 * 100k dfを取得します。
私はすでにいくつかのことを試しましたが、R はループが非常に苦手であり、R の設計により、ベクトル指向のソリューションの方が優れていることを知っています。
これが私がやったことです、そして私はそれが恐ろしいことを知っています
df の形式は次のとおりです。
v1,v2,v2.....v100
1,5,6,.......9
2,4,6,.......10
3,5,8,.......6
2,2,8,.......2
etc
e=NULL
for (x in 1:100000)
{
s=sample(1:100,4)#pick 4 variables randomly
a=sample(seq(0,1,0.01),1)
b=sample(seq(0,1-a,0.01),1)
c=sample(seq(0,(1-a-b),0.01),1)
d=1-a-b-c
e=c(a,b,c,d)#4 random weights
average=mean(timeseries.df[,s]%*%t(e))
e=rbind(e,s,average)#in the end i get the 9*100k df
}
手順は遅くなります。
編集:
私が持っていた助けに感謝します.私はRを考えることに慣れておらず、すべての問題をRで必要とする行列代数方程式に変換することにあまり慣れていません.次に、計算したい場合、問題は少し複雑になります.標準偏差。共分散行列が必要ですが、元の timeseries.df 共分散行列から各サンプルのランダム要素を選択できるかどうか、またはどのように選択できるかわかりません。次に、サンプル分散を計算します
t(sampleweights)%*%sample_cov.mat%*%sampleweights
最後に ts.weighted_standard_dev マトリックスを取得するには
最後の質問は、元の df x 回をブートストラップし、同じ計算を適用してデータの堅牢性をテストする場合、どのように進めるのが最善の方法ですか?
ありがとう