Main Content

mode

説明

M = mode(A) は、A のサンプルの最頻値 (すなわち、A の中で最も多く存在する値) を返します。同じ頻度の値が複数ある場合は、mode はそれらの値から最小値を返します。入力が複素数の場合、最小値は並べ替えられたリスト内の最初の値です。

  • A がベクトルの場合、mode(A)A の最頻値を返します。

  • A が空でない行列の場合、mode(A)A の各列の最頻値をもつ行ベクトルを返します。

  • A が空の 0 行 0 列の場合、mode(A)NaN を返します。

  • A が多次元配列の場合、mode(A) は、サイズが 1 ではない最初の配列次元に沿った値をベクトルとして取り扱い、最頻値の配列を返します。この次元のサイズは 1 になりますが、他のすべての次元のサイズは変化しません。

  • A が table または timetable の場合、mode(A) は、各変数の最頻値を含む 1 行の table を返します。 (R2023a 以降)

M = mode(A,'all') は、A のすべての要素の最頻値を計算します。この構文は、MATLAB® R2018b 以降で有効です。

M = mode(A,dim) は、次元 dim に沿って要素の最頻値を返します。たとえば、A が行列の場合、mode(A,2) は各行の最頻値をもつ列ベクトルになります。

M = mode(A,vecdim) は、ベクトル vecdim で指定された次元に基づいて最頻値を計算します。たとえば、A が行列の場合、mode(A,[1 2]) は、A 内のすべての要素の最頻値になります。これは、行列のすべての要素が次元 1 と 2 で定義された配列スライスに含まれるためです。

[M,F] = mode(___) は前述の構文のいずれかの入力引数を使用し、頻度配列 F も返します。F のサイズは M と同じで、F の各要素は対応する M の要素の出現数を表します。

[M,F,C] = mode(___)M および F と同じサイズの cell 配列 C も返します。C の各要素は、対応する M の要素と同じ頻度をもつすべての値を並べ替えたベクトルです。

すべて折りたたむ

3 行 4 列の行列を定義します。

A = [3 3 1 4; 0 0 1 1; 0 1 2 4]
A = 3×4

     3     3     1     4
     0     0     1     1
     0     1     2     4

各列の最頻値を求めます。

M = mode(A)
M = 1×4

     0     0     1     4

3 行 4 列の行列を定義します。

A = [3 3 1 4; 0 0 1 1; 0 1 2 4]
A = 3×4

     3     3     1     4
     0     0     1     1
     0     1     2     4

各行の最頻値を求めます。

M = mode(A,2)
M = 3×1

     3
     0
     0

110 の間の整数の 1×3×4 の配列を作成します。

rng('default')
A = randi(10,[1,3,4])
A = 
A(:,:,1) =

     9    10     2


A(:,:,2) =

    10     7     1


A(:,:,3) =

     3     6    10


A(:,:,4) =

    10     2    10

2 番目の次元に沿って 3 次元配列の最頻値を求めます。

M = mode(A)
M = 
M(:,:,1) =

     2


M(:,:,2) =

     1


M(:,:,3) =

     3


M(:,:,4) =

    10

この操作は、2 番目の次元に沿って最頻値を求めることによって 1×1×4 配列を生成します。2 番目の次元のサイズは 1 に縮小します。

A の最初の次元に沿って最頻値を計算します。

M = mode(A,1);
isequal(A,M)
ans = logical
   1

最初の次元のサイズは 1 なので、この計算は A と同じ配列を返します。

3 次元配列を作成し、データの各ページ (行と列) の最頻値を計算します。

A(:,:,1) = [2 4; 2 1];
A(:,:,2) = [6 2; 3 3];
A(:,:,3) = [4 4; 7 4];
M1 = mode(A,[1 2])
M1 = 
M1(:,:,1) =

     2


M1(:,:,2) =

     3


M1(:,:,3) =

     4

R2018b 以降、配列のすべての次元の最頻値を計算するには、ベクトルの次元引数で各次元を指定するか、'all' オプションを使用します。

M2 = mode(A,[1 2 3])
M2 = 4
Mall = mode(A,'all')
Mall = 4

3 行 4 列の行列を定義します。

A = [3 3 1 4; 0 0 1 1; 0 1 2 4]
A = 3×4

     3     3     1     4
     0     0     1     1
     0     1     2     4

各列の最頻値とその出現回数を求めます。

[M,F] = mode(A)
M = 1×4

     0     0     1     4

F = 1×4

     2     1     2     2

M(1) は最初の列に 2 回出現するため、F(1)2 です。

3 行 4 列の行列を定義します。

A = [3 3 1 4; 0 0 1 1; 0 1 2 4]
A = 3×4

     3     3     1     4
     0     0     1     1
     0     1     2     4

各行の最頻値、その出現回数および同じ頻度で出現する行内の値を求めます。

[M,F,C] = mode(A,2)
M = 3×1

     3
     0
     0

F = 3×1

     2
     2
     1

C=3×1 cell array
    {[       3]}
    {2x1 double}
    {4x1 double}

2 行目では値 01F(2) 回の頻度で出現するため、C{2} は 2 行 1 列のベクトル [0;1] になります。

3 行目ではすべての値が F(3) 回の頻度で出現するため、C{3} は 4 行 1 列のベクトル [0;1;2;4] になります。

16 ビット符号なしの整数の 1 行 4 列のベクトルを定義します。

rng('default')
A = randi(10,[1,4],'uint16')
A = 1x4 uint16 row vector

    9   10    2   10

最頻値とその出現回数を求めます。

[M,F] = mode(A)
M = uint16
    10
F = 2
class(M)
ans = 
'uint16'

M は入力 A と同じクラスです。

入力引数

すべて折りたたむ

入力配列。ベクトル、行列、多次元配列、table、または timetable として指定します。A は数値配列、categorical 配列、datetime 配列、duration 配列、またはそれらのデータ型のいずれかが含まれた変数をもつ table または timetable にすることができます。

入力配列 ANaN 値または NaT (Not a Time) 値は無視されます。categorical 配列内の未定義の値は、数値配列の NaN と同様です。

演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 より大きい最初の配列次元です。

次元 dim は、長さが 1 に縮小した次元を示します。size(M,dim)1 ですが、他のすべての次元のサイズは変化しません。

mn 列の入力行列 A を考えます。

  • mode(A,1) は、A の各列における要素の最頻値を計算し、1n 列の行ベクトルを返します。

    mode(A,1) column-wise operation

  • mode(A,2) は、A の各行における要素の最頻値を計算し、m1 列の列ベクトルを返します。

    mode(A,2) row-wise operation

dimndims(A) より大きい場合、modeA を返します。

次元のベクトル。正の整数のベクトルとして指定します。各要素は入力配列の次元を表します。指定された操作次元の出力の長さは 1 で、その他は同じままです。

2×3×3 の入力配列 A を考えます。この場合、mode(A,[1 2]) は 1×1×3 の配列を返します。この配列の要素は、A の各ページの最頻値です。

Mapping of a 2-by-3-by-3 input array to a 1-by-1-by-3 output array

出力引数

すべて折りたたむ

最頻値。スカラー、ベクトル、行列、多次元配列、または table として返されます。同じ頻度の値が複数ある場合は、mode はそれらの値から最小値を返します。複素数の入力の場合は、値のリストに蓄積された最初の値をとります。

入力 A が配列の場合、出力 M は同じクラスの配列になります。

A が table または timetable の場合、M は 1 行の table です。A の変数に単位が含まれている場合、M の変数には同じ単位が含まれます。

頻度配列。スカラー、ベクトル、行列、多次元配列、または table として返されます。F のサイズは M のサイズと同じで、F の各要素は対応する M の要素の出現数を表します。

入力 A が配列の場合、出力 Fdouble 配列になります。

A が table または timetable の場合、F は 1 行の table です。A の変数に単位が含まれている場合、F の変数にはその単位は含まれません。

cell 配列または table として返される重複する最頻値。C のサイズは M および F のサイズと同じで、C の各要素は、対応する M の要素と同じ頻度をもつすべての値を並べ替えた列ベクトルです。

入力 A が table または timetable の場合、出力 C は 1 行の table です。C の各変数には、対応する M の要素と同じ頻度をもつすべての値を並べ替えた列ベクトルを含む cell 配列が含まれます。A の変数に単位が含まれている場合、C の変数には同じ単位が含まれます。

ヒント

  • 関数 mode は、離散データや粗く丸められたデータを扱う場合に、最も役立ちます。連続確率分布の最頻値は、密度関数のピークとして定義されます。関数 mode をそのような分布のサンプルに適用するために、ピークを調べることが良いとは言えません。ヒストグラムを作成するかまたは密度推定を計算し、その推定のピークを計算する方が良いでしょう。また、関数 mode は、複数の最頻値をもつ分布のピークを検出するのに適切ではありません。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する