es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear una matriz de proporciones para datos categóricos multivariados.

Supongamos que tengo estos datos simulados a partir del siguiente código R:

library(RNGforGPD)
set.seed(1)
sample.size = 10; no.gpois = 3
lambda.vec = c(-0.2, 0.2, -0.3); theta.vec = c(1, 3, 4)
M = c(0.352, 0.265, 0.342); N = diag(3); N[lower.tri(N)] = M
TV = N + t(N); diag(TV) = 1
cstar = CmatStarGpois(TV, theta.vec, lambda.vec, verbose = TRUE)
data = GenMVGpois(sample.size, no.gpois, cstar, theta.vec, lambda.vec, details = FALSE)
> prop.table(table(data[,1]))
0   1   2 
0.3 0.4 0.3 
> prop.table(table(data[,2]))
2   3   6   8  10 
0.2 0.4 0.1 0.2 0.1 
> prop.table(table(data[,3]))
2   3   4   5   6 
0.2 0.3 0.1 0.3 0.1 
> table(data)
data
 0  1  2  3  4  5  6  8 10 
 3  4  7  7  1  3  2  2  1 

Me gustaría crear una matriz de proporciones para cada una de las tres variables categóricas. Si falta una categoría en una columna específica, se identificará como 0.

Cat X1 X2 X3
0 0.3 0.0 0.0
1 0.4 0.0 0.0
2 0.3 0.2 0.2
3 0.0 0.4 0.3
4 0.0 0.0 0.1
5 0.0 0.0 0.3
6 0.0 0.1 0.1
8 0.0 0.2 0.0
10 0.0 0.1 0.0

Este es el objeto data:

structure(c(1, 0, 2, 1, 0, 0, 1, 2, 2, 1, 3, 8, 3, 3, 2, 2, 6, 
3, 10, 8, 2, 5, 2, 6, 3, 3, 4, 3, 5, 5), .Dim = c(10L, 3L), .Dimnames = list(
    NULL, NULL))
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear una matriz de proporciones para cada una de las tres variables categóricas, podemos usar la función prop.table() a lo largo de las columnas del objeto data, y luego convertir la tabla resultante en una matriz utilizando la función as.matrix(). Aquí está el código:

    prop_mat_X1 <- as.matrix(prop.table(table(data[,1])))
    prop_mat_X2 <- as.matrix(prop.table(table(data[,2])))
    prop_mat_X3 <- as.matrix(prop.table(table(data[,3])))
    

    Las matrices de proporciones resultantes son:

    # prop_mat_X1
         0   1   2
    [1,] 0.3 0.4 0.3
    
    # prop_mat_X2
         2   3   6   8  10
    [1,] 0.2 0.4 0.1 0.2 0.1
    
    # prop_mat_X3
         2   3   4   5   6
    [1,] 0.2 0.3 0.1 0.3 0.1
    

    Para combinar estas matrices de proporciones en una sola tabla, podemos usar la función cbind():

    prop_mat <- cbind(prop_mat_X1, prop_mat_X2, prop_mat_X3)
    rownames(prop_mat) <- c(0,1,2,3,4,5,6,8,10)
    

    La tabla de proporciones resultante es:

    # prop_mat
         0   1   2   2   3   4   5   6   8   2   3   4   5   6
    0  0.3 0.4 0.3 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
    1  0.0 0.0 0.0 0.4 0.0 0.0 0.0 0.1 0.2 0.0 0.0 0.0 0.0 0.0
    2  0.0 0.0 0.0 0.0 0.2 0.2 0.0 0.1 0.0 0.2 0.3 0.1 0.3 0.1
    3  0.0 0.0 0.0 0.0 0.4 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
    4  0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0
    5  0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.1 0.0 0.0 0.0 0.0 0.3 0.0
    6  0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.0 0.0 0.0 0.0 0.1 0.1
    8  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
    10 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
    

Comments are closed.