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.

Error en t.default(x): el argumento no es una matriz.

Estoy intentando ver cuál es la disposición a pagar de las personas por energía nuclear o eólica (lejos o local) a través de una preferencia de elección declarada. Utilicé el modelo logit multinomial, sin embargo, al estimar la elección discreta para los diferentes escenarios, sigo obteniendo un error:

Error en t.default (x): el argumento no es una matriz

Mientras que gmnl presenta este error, mixl parece estar funcionando correctamente.
Código:

install.packages(“gmnl”)
install.packages(“mlogit”)
library(“gmnl”) # Cargar paquete gmnl
library(“mlogit”) # Cargar paquete mlogit
biblioteca(readxl)
Datos_de_ejemplo <- read_excel(“Datos de ejemplo.xlsx”)
Ver(Datos_de_ejemplo)
datos <- como.data.frame(Datos_de_ejemplo)
df01 <- datos de registro (datos,
id.var = “id”,
elección = “elección”,
variable = 3:17,
forma = “amplia”,
sep = “”)

lc <- gmnl(Elección ~ MODO + VIVIENDA + TAMAÑO + COSTO + DISTANCIA | 0 | 0 | 0 | 1 ,
datos = df01,
modelo = ‘lc’,
Q = 3,
panel = TRUE,
método = “bhhh”)
Podría ser que haya algo mal con mis datos. Sin embargo, al comparar trabajos anteriores de otras personas, mis datos están configurados de manera similar y no puedo ejecutar sus cálculos tampoco.
De lo que he visto en publicaciones anteriores, también podría ser un problema de paquete. Pero, ¿qué puedo hacer para solucionarlo o continuar si ese es el caso?

La imagen a continuación muestra un ejemplo de datos para 2 individuos, que consta de 15 escenarios con 3 opciones para elegir.
Datos_de_ejemplo

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el paquete gmnl y en cómo maneja los datos. El mensaje de error sugiere que los datos de entrada no están en el formato correcto, específicamente que no son una matriz.

    Una solución podría ser intentar convertir los datos en una matriz antes de ejecutar la función gmnl. Otra solución podría ser usar un paquete o función diferente para el modelo logit multinomial, como mixl, el cual parece estar funcionando bien en este caso.

    Para convertir los datos en una matriz, puede intentar con el siguiente código:

    df_matrix <- as.matrix(df01)
    lc <- gmnl(Choice ~ MODE + DWELLING + SIZE + COST + DISTANCE | 0 | 0 | 0 | 1 , 
           data = df_matrix,
           model = 'lc', 
           Q = 3, 
           panel = TRUE,
           method = "bhhh")
    

    Si esto aún no funciona, puede intentar usar mixl en su lugar:

    library(mixl)
    model_mixl <- mixl(Choice ~ MODE + DWELLING + SIZE + COST + DISTANCE | 0 | 0 | 0 | id, 
                       data = df01, 
                       mixl_method = 'BFGS',
                       iterate = 50,
                       by = 'individual')
    summary(model_mixl)
    

    ¡Espero que esto ayude!

Comments are closed.