Re: [R-es] error en matriz de correlación
Amigos gracias por sus respuestas. Disculpen mi ignorancia, pero no se supone que antes de que empezar a trabajar con el data frame, no se debe de declarar el tipo de variable que le corresponde a cada una y así el sistema reconozca si la variable es numérica, ordinal, dicotómoca o categorica? Por ejemplo en este caso, si le pongo numérica a todas las variables, el sistema como va saber que kendall es la prueba que le corresponde a mis datos dado que son ordinales, o este tema de numéricas es sólo una excepción para que corra el algoritmo? Siempre trabajo declarando previamente las variables y no he tenido inconvenientes para ejecutar por ejemplo kmedias, kmodas, kprototipe, PCA, FAMD, o lo estoy haciendo mal? Agradesco sus comentarios. Enviado desde mi Galaxy Mensaje original De: Marcelino de la Cruz Rot Fecha: 26/9/2022 1:06 a. m. (GMT-05:00) A: r-help-es@r-project.org Asunto: Re: [R-es] error en matriz de correlación Hola Ricardo: Por precisar lo que dice Emilio, la conversión debe hacerse por columnas, por ejemplo: a <- apply(a, 2, as.numeric) Un saludo, Marcelino El 26/09/2022 a las 7:54, Emilio L. Cano escribió: > Hola Ricardo, > > Tienes que convertir las variables a numéricas, como indica el error y la > ayuda de la función. Como tus valores están ordenados, simplemente convierte > con as.numeric() y ya te funcionará. > > Un saludo, > > Emilio L. Cano > http://emilio.lcano.com > > > > >> El 26 sept 2022, a las 3:48, Ricardo Alva escribió: >> >> Amigos buen día. >> Estoy intentando generar la matriz de correlaciones por cualquiera de los 3 >> métodos de la función cor, pero siempre me arroja el mismo error. >> >> cor(a,method = 'kendall') >> Error in cor(a, method = "kendall") : 'x' must be numeric >> >> a es un data frame con 61 filas, compuesto de 5 variables, todas ordinales y >> cargadas desde un archivo de excel que mantiene la siguiente forma: >> agencia|personeria|constitucion|producto|actividad >> 1 1 211 >> 2 1 511 >> 2 2 4 15 >> 2 2 2 41 >> >> He tratado consignado todas las variables como ordinales y luego también >> como factor, pero me sigue saliendo el mismo error, por mas que elijo >> cualquier método de correlación. >> >> #Convirtiendo todas las variables a factor: >> str(a) >> 'data.frame': 61 obs. of 5 variables: >> $ agencia : Factor w/ 3 levels "1","2","3": 1 2 2 2 2 2 1 2 2 2 ... >> $ personeria : Factor w/ 2 levels "1","2": 1 1 1 1 1 2 1 2 2 2 ... >> $ constitucion: Factor w/ 5 levels "1","2","3","4",..: 2 2 2 2 5 2 1 3 4 5 >> ... >> $ producto: Factor w/ 2 levels "1","4": 1 1 1 1 1 1 1 1 1 1 ... >> $ actividad : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 5 1 3 2 >> ... >> >> #Convirtiendo todas las variables a ordinales. >> str(a) >> 'data.frame': 61 obs. of 5 variables: >> $ agencia : Ord.factor w/ 3 levels "1"<"2"<"3": 1 2 2 2 2 2 1 2 2 2 ... >> $ personeria : Ord.factor w/ 2 levels "1"<"2": 1 1 1 1 1 2 1 2 2 2 ... >> $ constitucion: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 2 2 2 5 2 1 3 4 >> 5 ... >> $ producto: Ord.factor w/ 2 levels "1"<"4": 1 1 1 1 1 1 1 1 1 1 ... >> $ actividad : Ord.factor w/ 5 levels "1"<"2"<"3"<"4",..: 1 1 1 1 1 1 5 1 >> 3 2 ... >> >> Por favor alguien que me pueda decir que estoy haciendo mal, o es que las >> variables en el archivo de excel deben de estar en texto?, lo cual me >> parecería algo raro. >> >> >> [[alternative HTML version deleted]] >> >> ___ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es -- Marcelino de la Cruz Rot Depto. de Biología y Geología Física y Química Inorgánica Universidad Rey Juan Carlos Móstoles España ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] error en matriz de correlación
Hola Ricardo: Es correcto lo que dices de declarar las variables según su tipo. El "problema" con cor() es que explícitamente requiere que las variables sean numéricas. Sin embargo, cuando calcula el coeficiente de correlación de Kendall (o el de Spearman) lo hace en función del *orden* de los valores de esa variable numérica. Es decir, no es R el que sabe que Kendall es la prueba que corresponde a tus datos, sino tú como usuario, y por eso te pide que incluyas el argumento method = "kendall" cuando los datos son ordinales (o cuando son numéricos pero por su distribución no puedes confiar en la aproximación de Pearson). Un saludo, Marcelino El 26/09/2022 a las 9:00, Ricardo Alva escribió: Amigos gracias por sus respuestas. Disculpen mi ignorancia, pero no se supone que antes de que empezar a trabajar con el data frame, no se debe de declarar el tipo de variable que le corresponde a cada una y así el sistema reconozca si la variable es numérica, ordinal, dicotómoca o categorica? Por ejemplo en este caso, si le pongo numérica a todas las variables, el sistema como va saber que kendall es la prueba que le corresponde a mis datos dado que son ordinales, o este tema de numéricas es sólo una excepción para que corra el algoritmo? Siempre trabajo declarando previamente las variables y no he tenido inconvenientes para ejecutar por ejemplo kmedias, kmodas, kprototipe, PCA, FAMD, o lo estoy haciendo mal? Agradesco sus comentarios. Enviado desde mi Galaxy Mensaje original De: Marcelino de la Cruz Rot Fecha: 26/9/2022 1:06 a. m. (GMT-05:00) A: r-help-es@r-project.org Asunto: Re: [R-es] error en matriz de correlación Hola Ricardo: Por precisar lo que dice Emilio, la conversión debe hacerse por columnas, por ejemplo: a <- apply(a, 2, as.numeric) Un saludo, Marcelino El 26/09/2022 a las 7:54, Emilio L. Cano escribió: > Hola Ricardo, > > Tienes que convertir las variables a numéricas, como indica el error y la ayuda de la función. Como tus valores están ordenados, simplemente convierte con as.numeric() y ya te funcionará. > > Un saludo, > > Emilio L. Cano > http://emilio.lcano.com > > > > >> El 26 sept 2022, a las 3:48, Ricardo Alva escribió: >> >> Amigos buen día. >> Estoy intentando generar la matriz de correlaciones por cualquiera de los 3 métodos de la función cor, pero siempre me arroja el mismo error. >> >> cor(a,method = 'kendall') >> Error in cor(a, method = "kendall") : 'x' must be numeric >> >> a es un data frame con 61 filas, compuesto de 5 variables, todas ordinales y cargadas desde un archivo de excel que mantiene la siguiente forma: >> agencia|personeria|constitucion|producto|actividad >> 1 1 211 >> 2 1 511 >> 2 2 4 15 >> 2 2 2 41 >> >> He tratado consignado todas las variables como ordinales y luego también como factor, pero me sigue saliendo el mismo error, por mas que elijo cualquier método de correlación. >> >> #Convirtiendo todas las variables a factor: >> str(a) >> 'data.frame': 61 obs. of 5 variables: >> $ agencia : Factor w/ 3 levels "1","2","3": 1 2 2 2 2 2 1 2 2 2 ... >> $ personeria : Factor w/ 2 levels "1","2": 1 1 1 1 1 2 1 2 2 2 ... >> $ constitucion: Factor w/ 5 levels "1","2","3","4",..: 2 2 2 2 5 2 1 3 4 5 ... >> $ producto : Factor w/ 2 levels "1","4": 1 1 1 1 1 1 1 1 1 1 ... >> $ actividad : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 5 1 3 2 ... >> >> #Convirtiendo todas las variables a ordinales. >> str(a) >> 'data.frame': 61 obs. of 5 variables: >> $ agencia : Ord.factor w/ 3 levels "1"<"2"<"3": 1 2 2 2 2 2 1 2 2 2 ... >> $ personeria : Ord.factor w/ 2 levels "1"<"2": 1 1 1 1 1 2 1 2 2 2 ... >> $ constitucion: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 2 2 2 5 2 1 3 4 5 ... >> $ producto : Ord.factor w/ 2 levels "1"<"4": 1 1 1 1 1 1 1 1 1 1 ... >> $ actividad : Ord.factor w/ 5 levels "1"<"2"<"3"<"4",..: 1 1 1 1 1 1 5 1 3 2 ... >> >> Por favor alguien que me pueda decir que estoy haciendo mal, o es que las variables en el archivo de excel deben de estar en texto?, lo cual me parecería algo raro. >> >> >> [[alternative HTML version deleted]] >> >> ___ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es -- Marcelino de la Cruz Rot Depto. de Biología y Geología Física y Química Inorgánica Universidad Rey Juan Carlos Móstoles España ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es -- Marcelino de la Cruz Rot Depto. de Biología y Geología Física y Química Inorgánica Universi
Re: [R-es] error en matriz de correlación
Muchas gracias por la aclaración, ya me estaba preocupando jajajaja. Enviado desde mi Galaxy Mensaje original De: Marcelino de la Cruz Rot Fecha: 26/9/2022 2:19 a. m. (GMT-05:00) A: r-help-es@r-project.org Asunto: Re: [R-es] error en matriz de correlación Hola Ricardo: Es correcto lo que dices de declarar las variables según su tipo. El "problema" con cor() es que explícitamente requiere que las variables sean numéricas. Sin embargo, cuando calcula el coeficiente de correlación de Kendall (o el de Spearman) lo hace en función del *orden* de los valores de esa variable numérica. Es decir, no es R el que sabe que Kendall es la prueba que corresponde a tus datos, sino tú como usuario, y por eso te pide que incluyas el argumento method = "kendall" cuando los datos son ordinales (o cuando son numéricos pero por su distribución no puedes confiar en la aproximación de Pearson). Un saludo, Marcelino El 26/09/2022 a las 9:00, Ricardo Alva escribió: > Amigos gracias por sus respuestas. Disculpen mi ignorancia, pero no se > supone que antes de que empezar a trabajar con el data frame, no se > debe de declarar el tipo de variable que le corresponde a cada una y > así el sistema reconozca si la variable es numérica, ordinal, > dicotómoca o categorica? Por ejemplo en este caso, si le pongo > numérica a todas las variables, el sistema como va saber que kendall > es la prueba que le corresponde a mis datos dado que son ordinales, o > este tema de numéricas es sólo una excepción para que corra el algoritmo? > > Siempre trabajo declarando previamente las variables y no he tenido > inconvenientes para ejecutar por ejemplo kmedias, kmodas, kprototipe, > PCA, FAMD, o lo estoy haciendo mal? > > Agradesco sus comentarios. > > > > > > Enviado desde mi Galaxy > > > > Mensaje original > De: Marcelino de la Cruz Rot > Fecha: 26/9/2022 1:06 a. m. (GMT-05:00) > A: r-help-es@r-project.org > Asunto: Re: [R-es] error en matriz de correlación > > Hola Ricardo: > > Por precisar lo que dice Emilio, la conversión debe hacerse por > columnas, por ejemplo: > > a <- apply(a, 2, as.numeric) > > Un saludo, > Marcelino > > > El 26/09/2022 a las 7:54, Emilio L. Cano escribió: > > Hola Ricardo, > > > > Tienes que convertir las variables a numéricas, como indica el error > y la ayuda de la función. Como tus valores están ordenados, > simplemente convierte con as.numeric() y ya te funcionará. > > > > Un saludo, > > > > Emilio L. Cano > > http://emilio.lcano.com > > > > > > > > > >> El 26 sept 2022, a las 3:48, Ricardo Alva > escribió: > >> > >> Amigos buen día. > >> Estoy intentando generar la matriz de correlaciones por cualquiera > de los 3 métodos de la función cor, pero siempre me arroja el mismo error. > >> > >> cor(a,method = 'kendall') > >> Error in cor(a, method = "kendall") : 'x' must be numeric > >> > >> a es un data frame con 61 filas, compuesto de 5 variables, todas > ordinales y cargadas desde un archivo de excel que mantiene la > siguiente forma: > >> agencia|personeria|constitucion|producto|actividad > >> 1 1 211 > >> 2 1 511 > >> 2 2 4 15 > >> 2 2 2 41 > >> > >> He tratado consignado todas las variables como ordinales y luego > también como factor, pero me sigue saliendo el mismo error, por mas > que elijo cualquier método de correlación. > >> > >> #Convirtiendo todas las variables a factor: > >> str(a) > >> 'data.frame': 61 obs. of 5 variables: > >> $ agencia : Factor w/ 3 levels "1","2","3": 1 2 2 2 2 2 1 2 2 2 ... > >> $ personeria : Factor w/ 2 levels "1","2": 1 1 1 1 1 2 1 2 2 2 ... > >> $ constitucion: Factor w/ 5 levels "1","2","3","4",..: 2 2 2 2 5 2 > 1 3 4 5 ... > >> $ producto: Factor w/ 2 levels "1","4": 1 1 1 1 1 1 1 1 1 1 ... > >> $ actividad : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 > 5 1 3 2 ... > >> > >> #Convirtiendo todas las variables a ordinales. > >> str(a) > >> 'data.frame': 61 obs. of 5 variables: > >> $ agencia : Ord.factor w/ 3 levels "1"<"2"<"3": 1 2 2 2 2 2 1 2 > 2 2 ... > >> $ personeria : Ord.factor w/ 2 levels "1"<"2": 1 1 1 1 1 2 1 2 2 2 ... > >> $ constitucion: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 2 2 2 > 5 2 1 3 4 5 ... > >> $ producto: Ord.factor w/ 2 levels "1"<"4": 1 1 1 1 1 1 1 1 1 1 ... > >> $ actividad : Ord.factor w/ 5 levels "1"<"2"<"3"<"4",..: 1 1 1 1 > 1 1 5 1 3 2 ... > >> > >> Por favor alguien que me pueda decir que estoy haciendo mal, o es > que las variables en el archivo de excel deben de estar en texto?, lo > cual me parecería algo raro. > >> > >> > >> [[alternative HTML version deleted]] > >> > >> ___ > >> R-help-es mailing list > >> R-help-es@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > > ___ > > R-help-es mailing list >
Re: [R-es] error en matriz de correlación
Ricardo, No sé cuál es el objetivo del análisis de correlación y entiendo que la respuesta de Marcelino responde a lo que preguntas. Sin embargo, yendo un poco más allá, me pregunto la validez de lo que quieres hacer, sobretodo con la estructura de datos que tienes a la mano. Al parecer tienes medidas repetidas --- tiene sentido *esa *matriz de correlación que quieres calcular? Quizás esa sea la primera pregunta que debes resolver. Saludos, Jorge.- On Mon, Sep 26, 2022 at 7:12 AM Ricardo Alva wrote: > Muchas gracias por la aclaración, ya me estaba preocupando jajajaja. > > > > Enviado desde mi Galaxy > > > > Mensaje original > De: Marcelino de la Cruz Rot > Fecha: 26/9/2022 2:19 a. m. (GMT-05:00) > A: r-help-es@r-project.org > Asunto: Re: [R-es] error en matriz de correlación > > Hola Ricardo: > > Es correcto lo que dices de declarar las variables según su tipo. El > "problema" con cor() es que explícitamente requiere que las variables > sean numéricas. Sin embargo, cuando calcula el coeficiente de > correlación de Kendall (o el de Spearman) lo hace en función del *orden* > de los valores de esa variable numérica. > Es decir, no es R el que sabe que Kendall es la prueba que corresponde a > tus datos, sino tú como usuario, y por eso te pide que incluyas el > argumento method = "kendall" cuando los datos son ordinales (o cuando > son numéricos pero por su distribución no puedes confiar en la > aproximación de Pearson). > > Un saludo, > Marcelino > > > El 26/09/2022 a las 9:00, Ricardo Alva escribió: > > Amigos gracias por sus respuestas. Disculpen mi ignorancia, pero no se > > supone que antes de que empezar a trabajar con el data frame, no se > > debe de declarar el tipo de variable que le corresponde a cada una y > > así el sistema reconozca si la variable es numérica, ordinal, > > dicotómoca o categorica? Por ejemplo en este caso, si le pongo > > numérica a todas las variables, el sistema como va saber que kendall > > es la prueba que le corresponde a mis datos dado que son ordinales, o > > este tema de numéricas es sólo una excepción para que corra el algoritmo? > > > > Siempre trabajo declarando previamente las variables y no he tenido > > inconvenientes para ejecutar por ejemplo kmedias, kmodas, kprototipe, > > PCA, FAMD, o lo estoy haciendo mal? > > > > Agradesco sus comentarios. > > > > > > > > > > > > Enviado desde mi Galaxy > > > > > > > > Mensaje original > > De: Marcelino de la Cruz Rot > > Fecha: 26/9/2022 1:06 a. m. (GMT-05:00) > > A: r-help-es@r-project.org > > Asunto: Re: [R-es] error en matriz de correlación > > > > Hola Ricardo: > > > > Por precisar lo que dice Emilio, la conversión debe hacerse por > > columnas, por ejemplo: > > > > a <- apply(a, 2, as.numeric) > > > > Un saludo, > > Marcelino > > > > > > El 26/09/2022 a las 7:54, Emilio L. Cano escribió: > > > Hola Ricardo, > > > > > > Tienes que convertir las variables a numéricas, como indica el error > > y la ayuda de la función. Como tus valores están ordenados, > > simplemente convierte con as.numeric() y ya te funcionará. > > > > > > Un saludo, > > > > > > Emilio L. Cano > > > http://emilio.lcano.com > > > > > > > > > > > > > > >> El 26 sept 2022, a las 3:48, Ricardo Alva > > escribió: > > >> > > >> Amigos buen día. > > >> Estoy intentando generar la matriz de correlaciones por cualquiera > > de los 3 métodos de la función cor, pero siempre me arroja el mismo > error. > > >> > > >> cor(a,method = 'kendall') > > >> Error in cor(a, method = "kendall") : 'x' must be numeric > > >> > > >> a es un data frame con 61 filas, compuesto de 5 variables, todas > > ordinales y cargadas desde un archivo de excel que mantiene la > > siguiente forma: > > >> agencia|personeria|constitucion|producto|actividad > > >> 1 1 2 1 1 > > >> 2 1 5 1 1 > > >> 2 2 41 5 > > >> 2 2 24 1 > > >> > > >> He tratado consignado todas las variables como ordinales y luego > > también como factor, pero me sigue saliendo el mismo error, por mas > > que elijo cualquier método de correlación. > > >> > > >> #Convirtiendo todas las variables a factor: > > >> str(a) > > >> 'data.frame': 61 obs. of 5 variables: > > >> $ agencia : Factor w/ 3 levels "1","2","3": 1 2 2 2 2 2 1 2 2 2 > ... > > >> $ personeria : Factor w/ 2 levels "1","2": 1 1 1 1 1 2 1 2 2 2 ... > > >> $ constitucion: Factor w/ 5 levels "1","2","3","4",..: 2 2 2 2 5 2 > > 1 3 4 5 ... > > >> $ producto: Factor w/ 2 levels "1","4": 1 1 1 1 1 1 1 1 1 1 ... > > >> $ actividad : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 > > 5 1 3 2 ... > > >> > > >> #Convirtiendo todas las variables a ordinales. > > >> str(a) > > >> 'data.frame': 61 obs. of 5 variables: > > >> $ agencia : Ord.factor w/ 3 levels "1"<"2"<"3": 1 2 2 2 2 2 1 2 > > 2 2 ... > > >> $ personeria : Ord.factor w/ 2 levels "1"<"2": 1 1 1 1 1 2 1 2 2 2 > ... > > >> $ constitucion: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 2 2 2 > > 5 2 1 3 4 5 ... > > >> $ producto: