2020/05/23

時系列分析 (4) - 多変量の時系列分析

複数の変量が相互作用を持って発展していく形の時系列は珍しくありません。こういったデータは、各変量を個別にモデル化しようとしてもうまくいきません。このような場合は、ベクトル自己回帰 (Vector Autoregressive / VAR) モデルが有効な場合があります。VAR モデルは、AR モデルを多変量に拡張したものです。今回は VAR モデルについて簡単に触れたいと思います。


2020/05/22

時系列分析 (3) - モデルの推定と診断

いよいよ、時系列データからモデルを作ることを考えます。モデルを推定し、そのモデルの善し悪しを診断する方法を紹介します。

2020/05/21

時系列分析 (2) - 自己相関のモデル

ある時系列データが、自己相関検定を経て自己相関があると分かったら、その自己相関のモデル化に取り組む価値があります。自己相関のモデル化にあたっては、移動平均過程 (MA過程) と自己回帰過程 (AR過程) という2つの過程が基本となります。この2つの過程とその組み合わせである自己回帰移動平均過程 (ARMA過程) について見ていきましょう。

2020/05/20

時系列分析 (1) - 時系列の性質の把握

為替レートなどの価格時系列データの分析をよく行うので、統計学的に分析する場合の一般論について書いてみました。
理系大学の学部生が使う教科書に書いてあるレベルより少し丁寧に説明しているつもりです。

2020/05/19

R - 研究編 5 メモリ管理に関する関数

R のメモリ管理に関する関数をまとめて紹介します。

R - 附録 1 pkginfo() - パッケージ内のオブジェクトの一覧を表示する

R のパッケージ内のオブジェクトの一覧を表示する関数です。オブジェクトの名前とクラスとサイズを表示します。

2020/05/16

R - 研究編 1 評価機構

R は、C や Java で育ったプログラマには直感的には馴染み辛い、ある種独特な評価機構を持っているので、その振舞いを他のプログラミング言語と比較する形でまとめてみました。

MetaTrader4 設定情報取得スクリプト

MetaTrader4 で、口座情報、証拠金状況情報、時刻情報、マーケット情報、商品情報を取得するスクリプトを作りました。

AccountXxx() や MarketInfo() を使って情報を取得するスクリプトはけっこうあちこちで見掛ける、珍しくもなんともないものなのですが、一応いくつか特徴があります。

  • コード値を返すものは、その意味が分かるようなメッセージにしている
  • 日付・時刻はフォーマットしている
  • サーバ時刻とローカル時刻の時差を計算している
  • 単位のある数値は、単位を表記するようにしている
    • point とか % とか
    • 例えば JPY 口座で USDCHF の情報を見ているときに、各種金額が JPY なのか USD なのか CHF なのかを明示している
  • おそらく MetaTrader5 由来だと思うのですが、AccountInfoXxx() や SymbolInfoXxx() でしか拾えない情報があるので、それらも表示するようにしている

2020/05/06

R Version 4.0 リリース

4/24、R Version 4.0 がリリースされました。主要な変更点を説明します。

2020/05/05

日付処理 - 月末日を計算する

月末日を求めたいときは、だいたい月で条件分岐しますよね。1, 3, 5, 7, 8, 10, 12月なら31日、4, 6, 9, 11月なら30日、2月なら閏年判定をやって28か29日。

でも今回は、計算式で月末日を算出してみたいと思います。

日付処理 - MetaTrader - ニューヨークサマータイム判定 (第n日曜日以降判定)

ニューヨークのサマータイム期間は、以下のようになっています。

  • 2006年以前
    • 4月第1日曜日~10月最終日曜日
  • 2007年以降
    • 3月第2日曜日~11月第1日曜日

ある日がサマータイム期間に入っているかどうかを判定するためには、第n日曜日以降なのかどうかを調べる必要があります。
Java ならこうするだけなのですが、今回は MetaTrader での実現を考えました。MetaTrader ではサマータイム情報を持っていないため、算出してみようという話です。

Blogger - 本ブログのテーマ等の変更


いくつか理由があって、本ブログのテーマや、記事の構造などを変更してみました。1つは、トップページに表示される記事が少ないと思ったこと。他に、Google のインデックス登録が進まないのが、レスポンスが悪いせいではないかと思ったことや、Blogger テーマの XML の構造が複雑で管理しにくいと思ったことなどです。
ざっと、どんなことをやったか書いておきたいと思います。


2020/05/02

日付処理 - Java - ニューヨークサマータイム判定

JRE がちゃんとアップデートされていて、2007年のサマータイム開始・終了日の変更に対応していれば、これでOK。

Java - Generics のワイルドカードについて

Java 総称型における、型パラメータのワイルドカードを正しく理解しましょう。上限境界、下限境界についても説明します。Capture helper idiom についても触れています。

Java - Proxy でプロパティアクセスログを取る

java.lang.reflect.Proxy は、動的プロキシを生成するためのクラスです。
ここで言うプロキシとは、オブジェクトを包み込むような形で、かつ元のオブジェクトの型を維持したオブジェクトです。プロキシはメソッド呼び出しを代理で一旦受け取り、何らかの処理を追加できます。型は維持されるので、呼び出し元からはプロキシを介していることをあまり意識する必要がありません。

動的プロキシのサンプルとして、getter/setter へのアクセスをロギングするようなプロキシを生成するユーティリティクラスを作ってみました。

Java - 赤ちゃんに動画を見せているときに PC/Mac を操作されるのを防止する

昔 (8年ほど前)、娘に PC で DVD を見せているときに、キーボードをいじってしまっていろんなことが起きるのを防ぐために作成した Babyproof という Java アプリケーションです。
当時は Java 6 の時代で、Windows での使用しか想定していませんでしたが、今回は Java 14 ベースの Mac 版にリライトしてみました。Windows でも動くんじゃないかと思いますが、未確認です。

Java - 割り込み可能な反復処理スレッドを作る

Java にはスレッドに対する割り込み機構があります。
スレッドからスレッドに interrupt シグナルを送って、割り込みたいという意思を伝える仕組みです。しかし、どんなスレッドでも interrupt を送れば割り込める、というような簡単なものではなく、割り込まれる側のスレッドが、interrupt シグナルを受け取ったときの処理を正しく実装していなければ、割り込むことはできません。
具体的には、InterruptedException や Thread.interrupted() のハンドリングを正しく行う必要があります。
今回はサンプルとして、繰り返し処理をし続けるスレッドを割り込み可能として作るためのちょっとした基底クラスを用意しましたので、見ていきたいと思います。

2020/05/01

Java の文字列連結の変遷とベンチマーク

Java で文字列を連結するときは、+ 演算子ではなく StringBuffer や StringBuilder を使え、ということがよく言われてきました。
しかし、そうしなければならない理由や、しなくてもいいケース、あるいは + 演算子の方が良いケースもあることが、正しく理解されていないように思います。ベンチマークも交えて詳しく説明します。

2020/04/30

Java のショートサーキット演算子の評価順序

ショートサーキット演算子 (&&, ||) の結合優先順位は && が先で || が後です。
でも、評価順序はどうなっているのでしょう? a || b && c という式で試してみました。

Java の演算子の処理時間

演算命令1回の処理時間は極めて短かく、タイマの精度よりも大幅に小さいです。1回の処理時間を直接測定することはできません。それを極力正確に測定することを試みました。