Foro de debate

3Dpie y coeficiente de contingencia

3Dpie y coeficiente de contingencia

de Bárbara Lopez -
Número de respuestas: 5
Buenas tardes, estoy preparando unos ejercicios con R para educación social y necesito hacer un gráfico de sectores (tipo tarta) en 3D y no consigo que R me reconozca ninguna función. ¿Cómo podría hacerlo sin instalar ningún paquete extra? Si no fuera posible, qué paquete debo instalar? Mi versión de R es la 3.2, la actual, vaya. Tampoco sé cómo conseguir que R calcule el coeficiente de CONTINGENCIA de dos variables, qué función y de qué paquete actual es? mil gracias!
En respuesta a Bárbara Lopez

Re: 3Dpie y coeficiente de contingencia

de Rafael Reséndiz -

Puedes utilizar el siguiente ejercicio solamente te solicitaría los créditos, el código a utilizar está en azul


Imagina que tienes dos variables clasificadas, la primera si una persona esta saludable o no, la segunda la cantidad de soda que consume al día(1 = un vaso, 2 = dos vasos, 3 = 3 vasos o más):

Salud = c("S","N","S","S","N","N","S","N","S","S")
soda = c(1,2,2,3,3,1,2,1,3,2)
t = table(Salud, soda) # Genera tabla de contingencias
t
           soda
Salud  1   2   3
      N  2   1   1
      S  1   3   2

 

options(digits=2) # Limitamos a 2 decimales
prop.table(t) #La sumatoria de todos los valores de la tabla sera igual a 1


           soda
Salud  1        2       3

      N  0.2    0.1    0.1

      S  0.1    0.3    0.2

Con esto podrías generar un histograma

barplot(t, beside = TRUE,
+ col = c("lightblue", "red"),
+ legend = rownames(Salud), ylim = c(0, 3))
title(main = "Salud de las personas segun cantidad de soda al día", font.main = 4)

Pero si te interesa obtener el valor de contingencia entonces te recomiendo lo siguiente

Primero construye una matriz con tus resultados, según te muestro:

saludable <- matrix(scan(), ncol=3, byrow=2) # Genera la canTidad de columnas y la cantidad de registros

saldrá el número uno, donde debeás anotar los valores del primer renglón completo de la tabla "t"

2 1 1 #En este caso, no pongas comas, ni nada, presiona enter 

1 3 2 # Ahora anota los valores del segundo registro de la tabla t, ya no hay más, presiona enter

Te saldra un nuevo valor deberas presionar enter de nuevo y saldra la leyenda "Read 6 items"

cambia el nombre de título de las columnas si es necesario

colnames(t) <- c("Un vaso", "dos vasos", "tres o más vasos")

Ahora cambia el título de las observaciones o registros si es necesario

 rownames(t) <- c("Sano", "Enfermo")

Ahora puedes ver como queda tu tabla tan solo con imprimirla

t #Por si las dudas así imprimes la matriz que generaste

Ahora si vamos a generar el coeficiente de contingencia

chisq.test(t)

El resultado que saldrá es parecido al siguiente:

Pearson's Chi-squared test

data: t
X-squared = 1.3, df = 2, p-value = 0.517

Warning message:
In chisq.test(t) : Chi-squared approximation may be incorrect

Recuerda que este resultado se utiliza para comprobar la hipótesis , así que utiliza la siguiente fórmula:

valor p 0= 0.517 > Alfa(0.05)

por lo cual en este caso demostraría que las personas sanas toman menos soda que las enfermas, teniendo en cuenta que esa sea la H0 y eliminando la H1.

Después obtenemos el tamaño de nuestra muestra que en este caso s obtiene con el siguiente código (aunque probablemente ya lo sepas).

sum(t)

La formula es la siguient

2.  X2

      N+X2

lo cual quiere decir que debes obtener la raiz cuadrada de Chi cuadrada entre la cantidad de la muestra más chi cuadrada, lo que se realiza en R de la siguiente manera 

sqrt(1.3/(10+1.3))

 A partir de cuyo resultado puedes decir si existe alguna relación entre tomar soda y estar sano o enfermo


En cuanto al grafico de sectores en 3d lo consigues de la siguinete manera:

Normal  en sectores

 

datos.iris <- as.matrix(iris)
frecuencias.iris <- table(datos.iris)
pie(frecuencias.iris)

 

 En 3d te recomiendo instalar plotrix con todas sus dependencias y después el código

 

library(plotrix)

 pieval<-c(2,4,6,8)

 pielabels<-c("We hate\n pies","We oppose\n  pies", "We don't\n  care","We just love pies")

 # grab the radial positions of the labels

 lp<-pie3D(pieval,radius=0.8,labels=pielabels,explode=0.1, labelrad=1.4,main="3D PIE OPINIONS")

O siguiendo el mismo ejemplo 

  

library(plotrix)

 pieSalud<-c(2,4,6,1)

pielabels<-c("No opina","La soda no hace nada","La soda cura","La soda enferma")

 # grab the radial positions of the labels

 lp<-pie3D(pieval,radius=0.8,labels=pielabels,explode=0.1, labelrad=1.4,main="Opiniones sobre salud y bebidas azucaradas")

 

o bien este otro

 

 pieval<-c(2,1,1,1,3,2)

 

 pielabels<- c("Sano 1 vaso","Sano 2 vasos", "sano 3 vasos", "Enfermo 1 vaso","Enfermo 2 vasos", "Enfermo 3 vasos")

 

 pie3D(pieval,labels=pielabels,start=4,main="Salus según vasos de agua azucarada tomadas al día")





En respuesta a Rafael Reséndiz

Re: 3Dpie y coeficiente de contingencia

de Bárbara Lopez -

Muchas gracias por su ayuda, he podido calcular el coeficiente de contingencia sin problemas. En cambio, me es imposible hacer el gráfico de sectores 3D. A continuación escribo los comandos usados y los errores que ha dado R-commander.

library(plotrix)

ERROR: there is no package called 'plotrix'

require(plotrix)

[13] NOTA: Loading required package: plotrix

> pie3D(frec,labels = lbls, explode=0.2,col=rainbow(length(lbls)),main="Distribución porcentual de las provincias")

ERROR:
no se pudo encontrar la función "pie3D"

He probado a escribir

pie3D(example)
Error: no se pudo encontrar la función "pie3D"

¿Qué es lo que estoy haciendo mal?¿Por qué dice que no existe la función?

Además tengo una nueva duda de R-commander. Intento crear un nuevo conjunto de datos.

Son dos variables:

data.sexo  obs5
 2             20
 2             3
 1             19
 1             10
 2             14
 1             1
 2             11
 1             2
 2             13
 2             9
 1             1
 2             16
 2             10
 1             6
 1             1

cuando las introduzco en la tabla y le doy a aceptar aparece esto:

[4] NOTA: Error in read.table(textConnection(data), header = TRUE) :
duplicate 'row.names' are not allowed

No entiendo qué hago mal.Por favor, podría aclararme algo?

Mil gracias!

En respuesta a Bárbara Lopez

Re: 3Dpie y coeficiente de contingencia

de Bárbara Lopez -
Hola de nuevo, he conseguido importar la tabla como un Excel, muchas graciaspor ayudarme tanto y contestar tan rápido!!
En respuesta a Bárbara Lopez

Re: 3Dpie y coeficiente de contingencia

de Bárbara Lopez -

Hola!!Sí, conseguí hacer el 3Dpie!!Mira qué hermoso!!

 

En respuesta a Bárbara Lopez

Re: 3Dpie y coeficiente de contingencia

de Rafael Reséndiz -

Felicidades Me da gusto saber que funcionó, pero aún lo puedes hacer con el código que te escribi siempre y cuando bajes el paquete plotrix, lo cual puedes realizar escribiendo el siguiente código en tu consola:

install.packages("plotrix")