主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLAB内の欠損データ

欠損データの処理は,データ前処理で一般的に行われるタスクです。欠損値はデータ内の意味のあるイベントを表していることもありますが,多くの場合,信頼できないか,使用できないデータ点を表しています。いずれにしても,MATLAB®には欠損データを処理するための多くのオプションがあります。

欠損データの作成と整理

MATLABでの欠損値の形式は,データ型によって異なります。たとえば,などの数値データ型では(非数)を使用して欠損値を表します。

x = [n1 2 3 4];

失踪値を使用して,欠損している数値データや他の型(datetime字符串分类など)のデータを表すこともできます。MATLABは,失踪値をそのデータのネイティブな型に自動的に変換します。

xDouble =[缺少1 2 3 4]
xDouble =1×5南1 2 3 4
xDatetime = [missing datetime(2014,1:4,1)]
xDatetime =1 x5 datetime日期:2014年1月1日-2014年2月1日-2014年3月1日-2014年4月
xString =[失踪“一个”“b”“c”“d”
xString =1 x5字符串 "a" "b" "c" "d"
xCategorical =[缺少categorical({)]“cat1”“cat2”“cat3”“cat4”}))
xCategorical =1 x5分类 cat1 cat2 cat3 cat4

欠損データとして扱うのが望ましいものの,MATLABにおいてのような標準のMATLAB欠損値ではない値がデータセットに含まれている場合があります。関数standardizeMissingを使用すると,それらの値をそのデータ型の標準欠損値に変換できます。たとえば,の他に4をの欠損値として扱います。

xStandard = standarzemissing (xDouble,[4 NaN])
xStandard =1×5南1 2 3南

欠損値をデータセットの一部として維持するが,残りのデータからそれらを分離するとします。いくつかのMATLAB関数を使用して,その後の処理を行う前に欠損値の配置を制御できます。たとえば,関数排序“MissingPlacement”オプションを使用して,をデータの末尾に移動します。

xSort =排序(xStandard,“MissingPlacement”“最后一次”
xSort =1×51 2 3南南

欠損データの検索,置換,および無視

MATLABで欠損値が明示的に作成されていなくても,既存のデータのインポート,またはデータの計算によって発生することがあります。データ内の欠損値を認識していないと,後続の計算または解析で誤りを招く可能性があります。

たとえば,値を含むベクトルを知らずにプロットすると,関数情节はその値を無視して残りの点を通常どおりにプロットするため,は表示されません。

nanData = [1:9 NaN];nanData情节(1:10)

しかし,そのデータの平均を計算すると,結果はになります。この場合,データにが含まれていることを事前に認識し,平均を計算する前にそれを無視または削除するよう選択するほうが有益です。

meanData =意味着(nanData)
meanData =南

データ内のを見つける1つの方法は,関数isnanを使用することです。この関数は,すべての値の場所を示す逻辑配列を返します。

TF = isnan (nanData)
TF =1 x10逻辑阵列0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

同様に,関数ismissingは複数のデータ型について,データの欠損値の場所を返します。

TFdouble = ismissing (xDouble)
TFdouble =1 x5逻辑阵列1 0 0 0
TFdatetime = ismissing (xDatetime)
TFdatetime =1 x5逻辑阵列1 0 0 0

複数のデータ型の変数で構成された表または时间表を処理するとします。データ型に関係なく,ismissingを1回呼び出すことによって,すべての欠損値を見つけることができます。

xTable =表(xDouble”、xDatetime”xString ', xCategorical ')
xTable =5×4表Var1 Var2 Var3 Var4  ____ ___________ _________ ___________ 南NaT失踪> < <定义> 1 01 - 1月- 2014”“cat1 2 01 - 2014年2月,“b”cat2 3 01 - 3月- 2014“c”cat3 4 01 - 4月- 2014 cat4“d”
TF = ismissing (xTable)
TF =5 x4逻辑阵列1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

欠損値は,処理または解析に使用できないデータを表していることがあります。fillmissingを使用して欠損値を別の値に置き換えるか,rmmissingを使用して欠損値をすべて削除します。

xFill = fillmissing (xStandard,“不变”, 0)
xFill =1×50 1 2 3 0
xRemove = rmmissing (xStandard)
xRemove =1×31 2 3

多くのMATLAB関数では,あらかじめ明示的に特定,埋め込み,または削除することなく,欠損値を無視できます。たとえば,値を含むベクトルの総和を計算した場合,結果はになります。しかし,関数总和“omitnan”オプションを使用すると,総和においてを直接無視できます。

sumNan =总和(xDouble)
sumNan =南
sumOmitnan =总和(xDouble,“omitnan”
sumOmitnan = 10

参考

|||

関連するトピック