第2回 MATLAB seminar 2021年06月08日
最終更新:2020/06/24
教科書
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)
データ
セミナーで使ったデータはここをクリック.