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.

Cálculos de estadísticas agrupadas con matrices altas

Este ejemplo muestra cómo utilizar las funciones y para calcular estadísticas agrupadas de un horario alto que contiene datos de corte de energía. y permitirle dividir las variables altas en grupos, utilice esos grupos para separar los datos y, a continuación, aplique una función a cada grupo de datos.findgroupssplitapplyfindgroupssplitapply Como alternativa, si tiene™ de herramientas estadísticas y aprendizaje automático, también puede usar la función para calcular estadísticas agrupadas.grpstats

En este ejemplo se crea un cronograma alto para los datos de corte de energía, aunque los datos sin procesar solo tengan unas 1500 filas. Sin embargo, puede utilizar las técnicas presentadas aquí en conjuntos de datos mucho más grandes porque no se hacen suposiciones sobre el tamaño de los datos.

Crear almacén de datos y horario alto

El archivo de ejemplo, contiene datos que representan interrupciones de la utilidad eléctrica en los Estados Unidos.outages.csv El archivo contiene seis columnas:,,,, y.RegionOutageTimeLossCustomersRestorationTimeCause

Cree un almacén de datos para el archivo.outages.csv Utilice la opción para especificar el tipo de datos que contiene cada columna: categórico (), de punto flotante numérico () o DateTime ().'TextScanFormats''%C''%f''%D'

data_formats = {'%C','%D','%f','%f','%D','%C'}; ds = datastore('outages.csv','TextscanFormats',data_formats);

Cree una tabla alta en la parte superior del almacén de datos y convierta la tabla alta en un horario alto. La variable se utiliza para los tiempos de fila, ya que es la primera variable DateTime o Duration de la tabla.OutageTime

T = tall(ds); T = table2timetable(T)
T =    Mx5 tall timetable      OutageTime    Region    Loss    Customers    RestorationTime    Cause     __________    ______    ____    _________    _______________    _____          ?           ?        ?          ?               ?             ?           ?           ?        ?          ?               ?             ?           ?           ?        ?          ?               ?             ?           :           :        :          :               :             :         :           :        :          :               :             : 

Limpiar datos faltantes

A algunas de las filas de la tabla alta les faltan datos representados por y valores.NaNNaT Quite todas las filas que faltan al menos un fragmento de datos.

idx = ~any(ismissing(T),2); T = T(idx,:)
T =    Mx5 tall timetable      OutageTime    Region    Loss    Customers    RestorationTime    Cause     __________    ______    ____    _________    _______________    _____          ?           ?        ?          ?               ?             ?           ?           ?        ?          ?               ?             ?           ?           ?        ?          ?               ?             ?           :           :        :          :               :             :         :           :        :          :               :             : 

Duración media del corte de energía por región

Determine la duración media del corte de energía en cada región. La función agrupa los datos por los valores categóricos en.findgroupsRegion La función aplica la función especificada a cada grupo de datos y conmemora los resultados juntos.splitapply

[G,regions] = findgroups(T.Region); times = splitapply(@mean,T.RestorationTime-T.OutageTime,G)
times =    Mx1 tall duration array      ?     ?     ?     :     : 

Cambie el formato de visualización de los resultados de duración en días y coloque los resultados en una tabla en memoria con las regiones asociadas.

times.Format = 'd'; varnames = {'Regions','MeanOutageDuration'}; maxOutageDurations = gather(table(regions,times,'VariableNames',varnames))
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 3: Completed in 0.23 sec - Pass 2 of 3: Completed in 0.79 sec - Pass 3 of 3: Completed in 0.62 sec Evaluation completed in 2.6 sec 
maxOutageDurations=5×2 table
     Regions     MeanOutageDuration
    _________    __________________

    MidWest          52.258 days   
    NorthEast        1.8538 days   
    SouthEast         1.835 days   
    SouthWest        2.0212 days   
    West            0.99895 days   

La mayoría de cortes de energía comunes causas por región

Determine con qué frecuencia se produce cada causa de interrupción de energía en cada región. En primer lugar, agrupe los datos por causa y región. Especifique tres salidas para devolver información sobre la causa y la región para cada fragmento de datos.findgroups A continuación, utilice para contar el número de apariciones de cada causa en cada región.splitapply

[G2,causes,regions] = findgroups(T.Cause,T.Region); C = splitapply(@(x) numel(x),T.Cause,G2)
C =    Mx1 tall double column vector      ?     ?     ?     :     : 

Convierta los resultados en una tabla en memoria y desapila y las variables.'Count''Region' Utilícelo en la tabla en memoria para reemplazar valores con ceros.fillmissingNaN

RegionCauses = gather(table(causes,regions,C,'VariableNames',{'Cause','Region','Count'}))
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.45 sec - Pass 2 of 2: Completed in 0.23 sec Evaluation completed in 1 sec 
RegionCauses=43×3 table
         Cause           Region      Count
    ________________    _________    _____

    attack              MidWest        4  
    attack              NorthEast     75  
    attack              SouthEast      6  
    attack              West          44  
    earthquake          NorthEast      1  
    earthquake          West           1  
    energy emergency    MidWest       11  
    energy emergency    NorthEast     11  
    energy emergency    SouthEast     39  
    energy emergency    SouthWest      5  
    energy emergency    West          19  
    equipment fault     MidWest        6  
    equipment fault     NorthEast     13  
    equipment fault     SouthEast     28  
    equipment fault     SouthWest      1  
    equipment fault     West          50  
      ⋮

RegionCauses = unstack(RegionCauses,'Count','Region'); RegionCauses = fillmissing(RegionCauses,'constant',{'',0,0,0,0,0})
RegionCauses=10×6 table
         Cause          MidWest    NorthEast    SouthEast    SouthWest    West
    ________________    _______    _________    _________    _________    ____

    attack                 4          75            6            0         44 
    earthquake             0           1            0            0          1 
    energy emergency      11          11           39            5         19 
    equipment fault        6          13           28            1         50 
    fire                   0           4            2            0         10 
    severe storm          17          54           86            4         13 
    thunder storm         22          37           39            6          4 
    unknown                4           4            2            0          1 
    wind                  12          19           11            3         15 
    winter storm           9          30           23            1         17 

Consulte también

| |

Temas relacionados