HOME > Octave

Octave

よく使う関数

※Octave起動後,help 関数名で詳細を知ることができます.
※基本的にはMATLABの関数と互換性があります.

行列関係

diag 対角行列の作成.
eye(n) n×nの単位行列の作成.
size 行列のサイズ.

入力・出力

csvread csvファイルを読み込む.
csvwrite csvファイルに書き込む.
xlsread タブ区切りのファイルを読み込む.※Excelファイルは読込不可.
dlmread 任意の文字で区切られたファイルを読み込む.
dlmwrite 任意の区切り文字でファイルに書き込む.

繰り返し文

for 指定回数のループ.
while 条件を満たす間はループ.

(Uploaded: 2011年02月22日, Last Updated: 2011年02月22日)  ページ上部へ移動

非線形最小二乗法

Octaveで非線形最小二乗法により推定を行うことができます.

Octaveにはleasqrという関数が用意されています.leasqrは回帰分析用に作成されていますので,比較的簡単に非線形最小二乗法を用いて推定を行うことができます.ここではOx - 非線形最小二乗法 (Levenberg-Marquardt Methods)で用いたデータを利用します.

%データを読み込む
data = csvread('data.csv');
vy = data(2:end,1);
mx = data(2:end:,2:3);
clear data;

%関数の記述
function vY = myfun( mX, vP )
  vY = vP(1) + (1/vP(2))*log( vP(3)*(mX(:,1).^vP(2)) + (1-vP(3))*(mX(:,2).^vP(2)) );
endfunction

%初期値の設定
vp0 = [1; 0.1; 0.1];

%非線形最小二乗法による推定
[vyhat vp] = leasqr( mx, vy, vp0, @myfun );

%結果表示
disp('===== Results =====');
vp

【実行結果】

vp = 4.8881007
vp = 0.6609284
vp = 0.5110930
SSR = 981.2392940

Oxとほぼ同じ結果です.真の値は(5; 0.8; 0.4)です.なお,初期値を変えると違う点に収束します.それは,ヘシアンが厳密に正値定符号行列ではないので最小化を達成する解を一意に見つけることができないからです.

作成したプログラム,使用したデータは下記にあります.Octaveで保存先のディレクトリに移動し,"nls"とタイプすればプログラムを実行できます.

【作成したOctaveのプログラム】: nls.m
【使用したデータ】: data.csv
【プログラムの実行結果】: output_nls.txt

(Uploaded: 2011年02月22日, Last Updated: 2011年10月04日)  ページ上部へ移動

いろいろなTips

結果をウィンドウにすべて表示

ウィンドウに結果を表示しきれない場合は一部のみを表示しさらに表示する・しないの選択をします.この設定をすべて表示する状態に変更します.Stataではset moreに対応します.

以下のコマンドですべてを表示します.

more off

もとに戻したい場合は,more onにします.

(Uploaded: 2011年06月22日, Last Updated: 2011年06月22日)  ページ上部へ移動

plotの問題

インストール後のplot関数には問題があります.それを修正するための方法です.

oct2matというパッケージによってplot関数がうまく機能しないようです.対処方法は以下のWebページの10/04/03の記事に解説があります.
Octave for windows メモ

(Uploaded: 2011年02月22日, Last Updated: 2011年06月25日)  ページ上部へ移動

(Uploaded: 2011年02月22日, Last Updated: 2011年02月22日)  ページ上部へ移動