Main Content

ノミナル配列と順序配列の作成

メモ

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 という名前のノミナル配列に smallmediumlarge というレベルがあっても、実際のデータの観測値は mediumlarge だけの場合があります。ノミナル配列のどのレベルが実際のデータに存在しているか確認するには、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'}

カテゴリを追加します。

序数配列 xsmallxlarge に、元のデータでは発生していない、レベルを追加する場合を考えてみましょう。追加レベルを指定するには、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 を順序配列に変換します。各カテゴリの順序は smallmediumlarge の順です。一般的に、順序配列のレベルには自然な順序が存在するという点で、ノミナル配列と異なります。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 は不等式が成立していることを表します。

参考

| | |

関連する例

詳細