Bence oldukça doğru buldunuz, ancak bir VAR modeli oluştururken genellikle şu adımları izlediğimden emin olurum:
1. Değişkenleri seçin
Bu, modelinizi oluşturmanın en önemli parçasıdır. Bir varlığın fiyatını tahmin etmek istiyorsanız, fiyat oluşum mekanizması ile ilgili değişkenleri dahil etmeniz gerekir. Bunu yapmanın en iyi yolu teorik bir modeldir. Varlığın ne olduğunu ve modelinize dahil ettiğiniz diğer değişkenlerin neler olduğunu söylemediğiniz için bu öğe hakkında çok fazla şey söyleyemem, ancak burada varlık fiyatlandırma modellerinin bir özetini bulabilirsiniz .
2. Verileri kontrol edin ve gerekli ayarlamaları yapın
Değişkenleri seçtikten sonra, modelin tahminini ve yorumunu geliştirecek verilerde bazı ayarlamalar yapabilirsiniz. Özet istatistikleri kullanmak ve aykırı değerleri, eksik verileri ve diğer garip davranışları tespit etmek için serinin bir grafiğini görmek yararlıdır. Fiyat verileriyle çalışırken, insanlar genellikle varyans dengeleyici bir dönüşüm olan ve aynı zamanda iyi bir yorumu olan doğal günlükler alırlar (günlüklerdeki fiyat farkı sürekli bileşik getiriler haline gelir). Modeli tahmin etmeden önce günlükleri alıp almadığınızdan emin değilim, ancak varlık fiyatları ile çalışıyorsanız bunu yapmak iyi bir fikirdir.
3. Verilerin sabit olmayan bileşenler içerip içermediğini kontrol edin
Artık serinin sabit olup olmadığını kontrol etmek için birim kök testlerini kullanabilirsiniz. Yalnızca @JacobH tarafından belirtildiği gibi öngörme ile ilgileniyorsanız, diziniz sabit olmasa bile düzeylerde VAR çalıştırabilirsiniz, ancak standart hatalarınıza güvenilemez, yani değeri hakkında çıkarım yapamazsınız. katsayılar. Bu uygulamalarda çok yaygın olarak kullanılan ADF testini kullanarak sabit testi yaptınız, ancak testi i) sabit veya trend olmadan çalıştırmak isteyip istemediğinizi belirtmeniz gerektiğini unutmayın; ii) sabit ve eğilim yok; ve iii) bir sabit ve bir eğilim. Genellikle fiyat serileri stokastik eğilimlere sahiptir, bu nedenle doğrusal bir eğilim doğru olmayacaktır. Bu durumda spesifikasyonu seçebilirsiniz ii. Kodunuzdandiffs
tahmin paketinin işlevi. Farklılıkların sayısını hesaplamak için bu üç seçenekten hangisinin uyguladığından emin değilim (dokümantasyonda bulamadım). Sonucunuzu kontrol etmek için ur.df
"urca" paketindeki işlevi kullanmak isteyebilirsiniz :
adf <- ur.df(x[, "VAR1"], type = "drift", lags = 10, selectlags = "AIC")
Bu komutun ADF testini bir sabitle ve AIC komutu tarafından seçilen gecikmelerle, maksimum 10 gecikmeyle çalıştıracağını unutmayın. Sonuçları yorumlamakta sorun yaşıyorsanız bu soruya bakın . Seri I (1) ise, sürekli bileşik getirilere eşit olan farkı kullanın. Test, serinin I (2) olduğunu gösteriyorsa ve başka testler kullanabileceğinizden şüphe duyuyorsanız, örneğin Phillips-Perron testi (PP.test
işlevi R). Tüm testler dizinizin I (2) olduğunu onaylarsa (testleri çalıştırmadan önce dizinin günlüğünü kullanmayı unutmayın), sonra ikinci farkı alın, ancak sonuçları yorumlamanızın değişeceğine dikkat edin, çünkü şimdi sürekli bileşik getirilerin farkı. Varlıkların fiyatları genellikle I (1) 'dir, çünkü ilk farkı uygularken beyaz bir gürültü olan rastgele bir yürüyüşe yakındırlar.
4. Modelin sırasını seçin
Bu Akaike, Schwarz (BIC) ve Hannan-Quinn gibi yaygın olarak kullanılan kriterlerle yapılabilir. Bunu VARselect
işlevle yaptınız ve bu doğru, ancak kararınızı verirken kullandığınız kriterin ne olduğunu unutmayın. Genellikle farklı kriterler VAR için farklı siparişleri gösterir.
5. Eşbütünleşme ilişkileri olup olmadığını kontrol edin
Tüm dizileriniz I (1) veya I (2) ise, bir VAR modeli çalıştırmadan önce, özellikle seri ile dürtü tepki analizi yapmak istiyorsanız, seri arasında eşbütünleşme ilişkisi olup olmadığını kontrol etmek genellikle iyi bir fikirdir. kalıntılar. Bunu Johansenn testini veya Engle-Granger'ı kullanarak yapabilirsiniz (sadece iki değişkenli modeller için). R'de Johansen testini ca.jo
"urca" paketinin fonksiyonu ile çalıştırabilirsiniz . Bu testin ayrıca farklı özelliklere sahip olduğunu unutmayın. Fiyat serileri için genellikle aşağıdaki kodu kullanırım ( p
seri olarak seviyelerle gerçekleştirilen madde 4'ün gecikme uzunluğu nerede ):
jo_eigen <- ca.jo(x, type = "eigen", ecdet = "const", K = p)
jo_trace <- ca.jo(x, type = "trace", ecdet = "const", K = p)
6. Modeli tahmin edin
Serileriniz entegre edilmezse, VAR
kodunuzda olduğu gibi modeli komutla kolayca tahmin edebilirsiniz . Serinin birlikte entegre edilmesi durumunda, bir Vektör Hata Düzeltme modelini aşağıdaki kodla tahmin ederek uzun dönem ilişkisini göz önünde bulundurmanız gerekir k
(eşbütünleşme sırası nerede ):
vecm <- cajorls(joeigen, r = k)
7. Tanılama testlerini çalıştırın
Modelinizin iyi tanımlanıp tanımlanmadığını test etmek için artıklarda bir seri korelasyon testi çalıştırabilirsiniz. Kodunuzda bu serial.test
işleve sahip bir Portmanteau testi kullandınız . Bu işlevi hiç kullanmadım ama bence sorun yok. Ayrıca MTS paketinde, işlevle çalıştırabileceğiniz Ljung-Box testinin çok değişkenli bir sürümü de vardır mq
.
8. Tahminler yapın
Modelinizin iyi tanımlandığından emin olduktan sonra predict
kodu kodunuzda yaptığınız gibi kullanabilirsiniz . Fonksiyonu kullanarak değişkenlerin belirli bir şoka nasıl tepki verdiğini kontrol etmek için dürtü tepki fonksiyonlarını bile çizebilirsiniz irf
.
9. Tahminleri değerlendirin
Tahminlerinizi yaptıktan sonra bunları değerlendirmeli ve diğer modellerle karşılaştırmalısınız. Tahminlerin doğruluğunu değerlendirmek için bazı yöntemler burada bulunabilir , ancak bunu yapmak için, bağlantıda açıklandığı gibi serilerinizi bir eğitim ve test setine bölmeniz çok önemlidir.