第2回 MATLAB seminar 2021年06月08日

教科書

MATLAB/Scilabで理解する数値計算 の50ページくらいまでの基礎文法を軽く流した. 行列の扱い方を強調した.

t 検定

色々な便利な函数が用意されていて, MATLABのウェブサイトを参照することで計算することを確認した. 例として, t検定を使ってみた. 2 標本 t 検定 (MATLAB)

MATLAB
% データをみてみる
swarmchart([ones(300, 1) 2*ones(300, 1)], [classA classB])

% 検定を行う
ttest(classA, classB)

正規方程式

最小自乗法の基礎となる正規方程式を紹介し, MATLABでは簡単に計算できることを確認した. $$ \boldsymbol{p} = (\boldsymbol{X}^{\mathrm{T}}\boldsymbol{X})^{-1}\boldsymbol{X}^{\mathrm{T}}\boldsymbol{y}, $$ $$ \large{ \boldsymbol{X} = \begin{pmatrix} 1 & x_{1}^{\,} & x_{1}^{2} & \ldots & x_{1}^{d} \\ 1 & x_{2}^{\,} & x_{2}^{2} & \ldots & x_{2}^{d} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n}^{\,} & x_{n}^{2} & \ldots & x_{n}^{d} \end{pmatrix}. } $$ ここで,

  • $\boldsymbol{x}$:説明変数 ( データ )
  • $\boldsymbol{y}$:目的変数 ( データ )
  • $n$:データの次元 ( 個数, 今回は50個 )
  • $d$:フィッティングしたい多項式の次数, $d$ 次多項式
  • $p$:$d$ 次多項式の係数. 切片含めると, $p+1$ ベクトルとなる.

MATLAB
% データをみてみる. 
scatter(x, y) 

% y = p(1) + p(2)*x ( 一次多項式 ) のフィッティング
X = [ones(50, 1) x];
p = inv(X'*X)*X'*y;
y_fit = p(1) + p(2)*x_fit;
scatter(x, y); hold on
plot(x_fit, y_fit)

% y = p(1) + p(2)*x + p(3)*x^2 ( 二次多項式 ) のフィッティング
X = [ones(50, 1) x x.^2];
p = inv(X'*X)*X'*y;
x_fit = -5:0.1:5;
y_fit = p(1) + p(2)*x_fit + p(3)*x_fit.^2;
scatter(x, y); hold on
plot(x_fit, y_fit)

データ

セミナーで使ったデータはここをクリック.

この記事のTOP    BACK    TOP