MATLAB は GNU Octave と部分的な互換性があるようだ。
そこで,MATLAB プログラムを動かすときには GNU Octave をインストールして使えばよいようだ。
https://octave.org/download.html
Windows では 7.1.0 がダウンロードできるようだ。
https://octave.org/download.html#ms-windows
macOS ではちょっと面倒なようだ。
https://github.com/octave-app/octave-app/releases
6.2.0 で我慢する。
====
GNU Octave の実行は他のアプリケーションと同じように,アイコンをクリックするだけ。
IDE 環境ウインドウが開く。コマンドウインドウになにか入力すれば,それが実行され,結果が表示される。
必要なパッケージの準備
例えば,以下のプログラムでは 「chi2cdf は statistics パッケージにあるよ!」 と言われる。
コマンドラインで statistics パッケージの最新バージョンを調べて(たとえば statistics-1.4.3.tar.gz のとき) wget でダウンロードする。
% wget http://downloads.sourceforge.net/project/octave/Octave%20Forge%20Packages/Individual%20Package%20Releases/statistics-1.4.3.tar.gz
パッケージを octave コマンドウインドウでインストールする(1回だけ)
>> pkg install -global statistics-1.4.3.tar.gz
パッケージを使用するとき(セッションごと)
>> pkg load statistics
使用するプログラム。
>> function [chisq, df, p] = ChiSquareTest(x)
[nrow , ncol] = size(x);
df = (nrow - 1) * (ncol - 1);
colsums = sum(x, 1);
rowsums = sum(x, 2);
n = sum(rowsums);
expectations = (rowsums * colsums) / n;
Zscores = (x .- expectations) .^ 2 ./ expectations;
chisq = sum(sum(Zscores));
p = 1 - chi2cdf(chisq, df);
end
>> x = [55 22 16 7; 40 32 24 4];
[chisq, df, p] = ChiSquareTest(x)
chisq = 6.6385
df = 3
p = 0.084359
>> [chisq, df, p] = ChiSquareTest([10 5; 6 11])
chisq = 3.1373
df = 1
p = 0.076523
* プログラム中に日本語があると変なことが起きることがあるようだ(プログラムをコピペできない)。
* MATLAB のすべてが octave で利用できるというものではない。例えば,icdf('chi2', x, df) はないので,1 - chi2cdf(x, df) とするなど,エラー回避が必要になることもある。