ジュリアでl1トレンドフィルタリングを使用する方法
概要
L1TrendFiltering.jl
は元々マトラボで実装されたトレンドフィルタリングコードをジュリアに翻訳したパッケージだ1。 は与えられた時系列データ と に対して次のような最適化問題の解である を見つける2。
ここで行列 は次のように2次差分を反映するためのトゥープリッツ行列だ。
コード
SNP 500データを時系列として読み込み、トレンドフィルタリングを適用した結果は上の通りだ。
using L1TrendFiltering
using Plots, CSV, DataFrames
y = snp500
result = l1tf(y, 50, verbose = true)
x = result.x
plot(ylabel = "log(price)")
plot!(y, label = "S&P500")
plot!(x, label = "l1tf")
環境
- OS: Windows
- julia: v1.11.1
Kim, S. J., Koh, K., Boyd, S., & Gorinevsky, D. (2009). \ell_1 trend filtering. SIAM review, 51(2), 339-360. https://stanford.edu/~boyd/l1_tf/ ↩︎