ノミナル配列と順序配列の作成
メモ
nominal
配列データ型および ordinal
配列データ型は推奨されません。順序付きおよび順序付けのない離散非数値データを表すには、代わりにcategorical 配列データ型を使用します。
ノミナル配列の作成
この例では、nominal
を使用してノミナル配列を作成する方法を示します。
標本データを読み込みます。
変数 species
は 150 行 1 列の cell 配列であり、各観測値の種の名前を示す文字ベクトルが含まれています。一意の種は setosa、versicolor、virginica です。
load fisheriris
unique(species)
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
ノミナル配列を作成します。
データで発生しているカテゴリを使用して species
をノミナル配列に変換します。
speciesNom = nominal(species); class(speciesNom)
ans = 'nominal'
カテゴリ レベルを調査します。
ノミナル配列 speciesNom
には、一意の 3 つの種に対応する 3 つのレベルがあります。ノミナル配列のレベルは、配列の要素が取ることができる値のセットです。
getlevels(speciesNom)
ans = 1x3 nominal
setosa versicolor virginica
ノミナル配列には、データに存在する実際のレベルより多くのレベルを含めることができます。たとえば、AllSizes
という名前のノミナル配列に small
、medium
、large
というレベルがあっても、実際のデータの観測値は medium
と large
だけの場合があります。ノミナル配列のどのレベルが実際のデータに存在しているか確認するには、unique
を使用します。たとえば unique(AllSizes)
のように使用します。
カテゴリ ラベルを調査します。
各レベルにはラベルがあります。既定では、nominal
はデータで発生している値をカテゴリ レベルにラベルとして設定します。speciesNom
の場合、これらのラベルは種のタイプを表します。
getlabels(speciesNom)
ans = 1x3 cell
{'setosa'} {'versicolor'} {'virginica'}
独自のカテゴリ ラベルを指定します。
それぞれのカテゴリ レベルには、独自のラベルを指定できます。ラベルの指定は、ノミナル配列の作成時に行うことができます。
speciesNom2 = nominal(species,{'seto','vers','virg'}); getlabels(speciesNom2)
ans = 1x3 cell
{'seto'} {'vers'} {'virg'}
setlabels
を使用して既存のノミナル配列のカテゴリ ラベルを変更できます。
新しいカテゴリ ラベルを確認します。
新しいラベルが speciesNom
の元のラベルに一致しているか確認します。
isequal(speciesNom=='setosa',speciesNom2=='seto')
ans = logical
1
論理値 1
は 'setosa'
と 'seto'
の 2 つのラベルが同じ観測値と一致していることを示します。
順序配列の作成
この例では、ordinal
を使用して順序配列を作成する方法を示します。
標本データを読み込みます。
AllSizes = {'medium','large','small','small','medium',... 'large','medium','small'};
作成された変数 AllSizes
は、8 つのオブジェクトのサイズ測定値が含まれている文字ベクトルの cell 配列です。
順序配列を作成します。
cell 配列の値に対応するカテゴリ レベルおよびラベル (既定のレベルとラベル) を使用して順序配列を作成します。
sizeOrd = ordinal(AllSizes); getlevels(sizeOrd)
ans = 1x3 ordinal
large medium small
カテゴリ ラベルを調査します。
既定では、ordinal
は元の文字ベクトルをカテゴリ ラベルとして使用します。カテゴリの既定の順序はアルファベットの昇順です。
getlabels(sizeOrd)
ans = 1x3 cell
{'large'} {'medium'} {'small'}
カテゴリを追加します。
序数配列 xsmall
と xlarge
に、元のデータでは発生していない、レベルを追加する場合を考えてみましょう。追加レベルを指定するには、ordinal
に 3 番目の入力引数を使用します。
sizeOrd2 = ordinal(AllSizes,{},... {'xsmall','small','medium','large','xlarge'}); getlevels(sizeOrd2)
ans = 1x5 ordinal
xsmall small medium large xlarge
カテゴリ ラベルを調査します。
データで実際に使用されているレベルを確認するには、unique
を使用します。
unique(sizeOrd2)
ans = 1x3 ordinal
small medium large
カテゴリの順序を指定します。
AllSizes
を順序配列に変換します。各カテゴリの順序は small
、medium
、large
の順です。一般的に、順序配列のレベルには自然な順序が存在するという点で、ノミナル配列と異なります。ordinal
の 3 番目の入力引数を使用すると、レベルの昇順になるよう指定できます。ここでは、レベルの順序は小さい順になっています。
sizeOrd = ordinal(AllSizes,{},{'small','medium','large'}); getlevels(sizeOrd)
ans = 1x3 ordinal
small medium large
ordinal
の 2 番目の引数は、カテゴリ レベルのラベルのリストです。中かっこ {}
をレベルのラベルに使用すると、ordinal
は3 番目の入力引数で指定されるラベルを使用します (入力引数が 1 つしか使用されていない場合は、データ内のレベルからラベルが生成されます)。
要素を比較します。
最初のオブジェクト (サイズは medium
) が 2 番目のオブジェクト (サイズは large
) より小さいことを確認します。
sizeOrd(1) < sizeOrd(2)
ans = logical
1
論理値 1
は不等式が成立していることを表します。
参考
nominal
| ordinal
| getlabels
| getlevels