Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Datos faltantes en MATLAB

Trabajar con datos faltantes es una tarea común en el preprocesamiento de datos. Aunque a veces los valores faltantes significan un evento significativo en los datos, a menudo representan puntos de datos no confiables o inutilizables. En cualquier caso, MATLAB® tiene muchas opciones para gestionar los datos que faltan.

Crear y organizar datos faltantes

El formulario que los valores faltantes toman en MATLAB depende del tipo de datos. Por ejemplo, los tipos de datos numéricos como el uso (no un número) para representar los valores faltantes.doubleNaN

x = [NaN 1 2 3 4];

También puede utilizar el valor para representar datos numéricos faltantes o datos de otros tipos, como, y.missingdatetimestringcategorical MATLAB convierte automáticamente el valor al tipo nativo de los datos.missing

xDouble = [missing 1 2 3 4]
xDouble = 1×5

   NaN     1     2     3     4

xDatetime = [missing datetime(2014,1:4,1)]
xDatetime = 1x5 datetime array
Columns 1 through 3

   NaT                    01-Jan-2014 00:00:00   01-Feb-2014 00:00:00

Columns 4 through 5

   01-Mar-2014 00:00:00   01-Apr-2014 00:00:00

xString = [missing "a" "b" "c" "d"]
xString = 1x5 string array
    <missing>    "a"    "b"    "c"    "d"

xCategorical = [missing categorical({'cat1' 'cat2' 'cat3' 'cat4'})]
xCategorical = 1x5 categorical array
     <undefined>      cat1      cat2      cat3      cat4 

Un conjunto de datos puede contener valores que desea tratar como datos faltantes, pero no son valores faltantes estándar de MATLAB en MATLAB como.NaN Puede utilizar la función para convertir esos valores al valor estándar que falta para ese tipo de datos.standardizeMissing Por ejemplo, trate 4 como un valor que falta además de.doubleNaN

xStandard = standardizeMissing(xDouble,[4 NaN])
xStandard = 1×5

   NaN     1     2     3   NaN

Supongamos que desea mantener los valores faltantes como parte del conjunto de datos, pero segregarlos del resto de los datos. Varias funciones de MATLAB permiten controlar la colocación de los valores faltantes antes de procesarlos. Por ejemplo, utilice la opción con la función para mover s al final de los datos.'MissingPlacement'sortNaN

xSort = sort(xStandard,'MissingPlacement','last')
xSort = 1×5

     1     2     3   NaN   NaN

Buscar, reemplazar e ignorar datos faltantes

Incluso si no crea explícitamente valores faltantes en MATLAB, pueden aparecer al importar datos existentes o computación con los datos. Si no está al tanto de los valores faltantes en sus datos, el cálculo o análisis posterior puede ser engañoso.

Por ejemplo, si traza un vector que contiene un valor sin saberlo, no aparece porque la función lo ignora y traza los puntos restantes normalmente.NaNNaNplot

nanData = [1:9 NaN]; plot(1:10,nanData)

Sin embargo, si calcula el promedio de los datos, el resultado es.NaN En este caso, es más útil saber de antemano que los datos contienen a, y luego elegir ignorarlos o eliminarlos antes de calcular el promedio.NaN

meanData = mean(nanData)
meanData = NaN 

Una forma de encontrar s en los datos es mediante el uso de la función, que devuelve una matriz lógica que indica la ubicación de cualquier valor.NaNisnanNaN

TF = isnan(nanData)
TF = 1x10 logical array

   0   0   0   0   0   0   0   0   0   1

De forma similar, la función devuelve la ubicación de los valores faltantes en los datos de varios tipos de datos.ismissing

TFdouble = ismissing(xDouble)
TFdouble = 1x5 logical array

   1   0   0   0   0

TFdatetime = ismissing(xDatetime)
TFdatetime = 1x5 logical array

   1   0   0   0   0

Supongamos que está trabajando con una tabla o un cronograma formado por variables con varios tipos de datos. Puede encontrar todos los valores faltantes con una llamada a, independientemente de su tipo.ismissing

xTable = table(xDouble',xDatetime',xString',xCategorical')
xTable=5×4 table
    Var1            Var2              Var3          Var4    
    ____    ____________________    _________    ___________

    NaN                      NaT    <missing>    <undefined>
      1     01-Jan-2014 00:00:00    "a"          cat1       
      2     01-Feb-2014 00:00:00    "b"          cat2       
      3     01-Mar-2014 00:00:00    "c"          cat3       
      4     01-Apr-2014 00:00:00    "d"          cat4       

TF = ismissing(xTable)
TF = 5x4 logical array

   1   1   1   1
   0   0   0   0
   0   0   0   0
   0   0   0   0
   0   0   0   0

Los valores faltantes pueden representar datos inutilizables para su procesamiento o análisis. Utilícelo para reemplazar los valores faltantes por otro valor, o Utilícelo para eliminar por completo los valores faltantes.fillmissingrmmissing

xFill = fillmissing(xStandard,'constant',0)
xFill = 1×5

     0     1     2     3     0

xRemove = rmmissing(xStandard)
xRemove = 1×3

     1     2     3

Muchas funciones de MATLAB le permiten ignorar los valores que faltan, sin tener que localizarlos, completarlos o eliminarlos de forma explícita primero. Por ejemplo, si calcula la suma de un vector que contiene valores, el resultado es.NaNNaN Sin embargo, puede ignorar directamente s en la suma utilizando la opción con la función.NaN'omitnan'sum

sumNan = sum(xDouble)
sumNan = NaN 
sumOmitnan = sum(xDouble,'omitnan')
sumOmitnan = 10 

Consulte también

| | |

Temas relacionados