記述統計による計算
さらに高度な統計機能が必要な場合は、Statistics and Machine Learning Toolbox™ ソフトウェアを使用できます。
記述統計用の関数
データに対して記述統計計算を行うには、次の MATLAB® 関数を使用します。
メモ
行列データでは、列ごとに記述統計が別々に演算されます。
次の例では、MATLAB 関数を適用して、記述統計をとる方法を示します。
例 1 — 最大、平均、標準偏差の計算
次の例では、count
という 24 行 3 列の行列に MATLAB 関数を適用して最大、平均、標準偏差の値を求める方法を示します。MATLAB では、行列の列ごとに別々に統計をとります。
% Load the sample data load count.dat % Find the maximum value in each column mx = max(count) % Calculate the mean of each column mu = mean(count) % Calculate the standard deviation of each column sigma = std(count)
結果は、次のようになります。
mx = 114 145 257 mu = 32.0000 46.5417 65.5833 sigma = 25.3703 41.4057 68.0281
各データ列における最大データ値の行番号を知るには、行のインデックスを出力する第 2 の出力パラメーター indx
を指定します。以下に例を示します。
[mx,indx] = max(count)
は、次の結果を生成します。
mx = 114 145 257 indx = 20 20 20
ここで、出力変数 mx
は、3 つのデータ列それぞれの最大値を含む行ベクトルです。変数 indx
は、最大値に相当する各列の行インデックスを含みます。
行列 count
全体での最小値を見つけるには、構文 count(:)
を使用して、この 24 行 3 列の行列を 72 行 1 列のベクトルに変換します。次に、データセット全体での count の最小値を見つけるために、次の構文を使用します。
min(count(:)) ans = 7
例 2 — 平均を差し引く
次の構文を用いて、行列の各列から平均値を差し引きます。
% Get the size of the count matrix [n,p] = size(count) % Compute the mean of each column mu = mean(count) % Create a matrix of mean values by % replicating the mu vector for n rows MeanMat = repmat(mu,n,1) % Subtract the column mean from each element % in that column x = count - MeanMat
メモ
データから平均を差し引くことは、"トレンド除去" とも呼ばれます。データから平均または最適な近似線を取り除く方法の詳細については、timetable データからの線形トレンドの除去を参照してください。
例: MATLAB データの統計量の利用
データの統計量
[データの統計量] ダイアログ ボックスを使用して、データの記述統計演算やプロットを行うことができます。この例は、count
という 24 行 3 列の行列のデータの統計量を MATLAB でとり、プロットする方法を示します。このデータは、3 本の道路に設置された交通量調査ステーションを通過する車両の数を表します。
本節は、以下のトピックスを含みます。
メモ
MATLAB データの統計量は 2 次元プロットに対してのみ利用できます。
記述統計とプロット
データの読み込みとプロット
load count.dat [n,p] = size(count); % Define the x-values t = 1:n; % Plot the data and annotate the graph plot(t,count) legend('Station 1','Station 2','Station 3','Location','northwest') xlabel('Time') ylabel('Vehicle Count')
メモ
凡例には、関数
legend
で指定された各データ セットの名前Station 1
、Station 2
、Station 3
が含まれます。"データ セット" は、プロットした配列内のデータの各列を参照します。データ セットの名前を指定しないと、data1
、data2
という要領で既定の名前が付けられます。Figure ウィンドウで、[ツール]、[データの統計量] を選択します。
[データの統計量] ダイアログ ボックスが開き、
Station 1
データ セットのX
データとY
データの記述統計が表示されます。メモ
[データの統計量] ダイアログ ボックスに表示される "範囲" とは、選択されたデータ セットの最小値と最大値の差です。このダイアログ ボックスではプロットの範囲は表示されません。
[データの統計量の対象] リストで異なるデータ セット
Station 2
を選択します。これによって、
Station 2
データ セットのX
データとY
データに対する統計量が表示されます。プロット上に表示したい統計量のチェック ボックスを選択し、[ワークスペースに保存] をクリックします。
たとえば、
Station 2
の平均をプロットするためには、[Y] 列の [平均値] チェック ボックスをオンにします。これにより、
Station 2
の平均を表す水平線がプロットされ、凡例がこの統計情報を含むように更新されます。
プロット上のデータの統計量の書式設定
[データの統計量] ダイアログ ボックスは、プロット上のデータからの統計情報の識別に、色とライン スタイルを使用します。ここでは、色、線の太さ、ライン スタイル、マーカーなど、プロット上の記述統計量の表示をカスタマイズする方法を示します。
メモ
データに関する統計量をグラフに付加し終えるまで、データ統計量のプロットのプロパティを編集してはいけません。プロットのプロパティを編集後、統計量を追加または削除すると、変更が失われます。
プロットのデータの統計量の表示を変更するには
MATLAB の Figure ウィンドウで、ツール バーの ([プロット編集]) ボタンをクリックします。
この手順により、プロットを編集できます。
表示プロパティを編集したい統計量について、プロット上で統計量をダブルクリックします。たとえば、
Station 2
の平均を表す水平ラインをダブルクリックします。この手順により、[プロパティ インスペクター] が開きます。ここで、この統計量の表示に使用するラインの外見を変更できます。
[プロパティ インスペクター] ウィンドウで、ラインとマーカーのスタイル、サイズ、色を指定します。
ヒント
または、プロット上で統計量を右クリックし、ショートカット メニューからオプションを選択します。
MATLAB ワークスペースへの統計量の保存
以下の手順により統計量を MATLAB ワークスペースに保存します。
メモ
プロットが複数のデータ セットを含む場合、各データ セットの統計量を個々に保存します。別のデータ セットに対して統計量を表示するためには、[データの統計量] ダイアログ ボックスの [データの統計量の対象] リストからその統計量を選択します。
[データの統計量] ダイアログ ボックスで、[ワークスペースに保存] ボタンをクリックします。
[近似をワークスペースへ保存] ダイアログ ボックスで、
X
データ、Y
データ、またはその両方の、どの統計量を保存するか、オプションを選択します。次に、対応する変数名を入力します。この例では、
Y
データのみ保存します。変数名をLoc2countstats
と入力します。[OK] をクリックします。
この手順によって、構造体に記述統計量が保存されます。新しい変数が MATLAB ワークスペースに追加されます。
新しい構造体変数を表示するには、MATLAB プロンプトで変数名を入力します。
Loc2countstats
Loc2countstats = struct with fields: min: 9 max: 145 mean: 46.5417 median: 36 mode: 9 std: 41.4057 range: 136
コード ファイルの生成
この例では、新しいデータを用いてプロットの形式とプロットする統計量を作成し直すための MATLAB コードを含むファイルを生成する方法を示します。コード ファイルの生成は MATLAB Online™ では利用できません。
Figure ウィンドウで、[ファイル]、[コードの生成] を選択します。
この手順により、関数コード ファイルが作成され、MATLAB エディターに表示されます。
ファイルの最初の行の関数名を
createfigure
から、countplot
のように、わかりやすい名前に変更します。このファイルを現在のフォルダーにcountplot.m
という名前で保存します。ランダムな新しい count データを生成します。
rng('default') randcount = 300*rand(24,3);
新しいデータと再計算した統計量を用いてプロットを作成し直します。
countplot(t,randcount)