Upload
christina-james
View
213
Download
0
Embed Size (px)
Citation preview
############################################################################
# Programa para calcular las medidas descriptivas de un conjunto de datos.
# también se dibuja el histograma, el diagrama de tallos y hojas y el box-plot.
# Nota: Pra aejecutar una linea parece al comienzo de esta y pulse la tecla F5
# Tambien puede usar Ctrl R (pulse las dos teclas simultáneamente)
# Si quiere ejecutar varias lineas, marquelas y despues F5.
#############################################################################
# Cuando se escribe en R los simbolos = y <- tienen el mismo significado
# y pueden usarse indistintamente.
x=c(30,40,50,30,40,50,40,30,20,30,120,110,30,40,89) # datos de duración en días de 15 baterías.
# la "c" es de concatenar, y entre paréntesis se introducen los números.
##################################
# Estadísticos de resumen
##################################
length(x) # calcula el número de datos. Es decir, el tamaño de la muestra.
min(x) # Valor mínimo.
max(x) # Valor máximo.
range(x) # el comando range, no da precisamente el rango, pero dice cual es el menor y mayor valor los datos.
sum(x) # suma los datos.
mean(x) # calcula la media. El centro de gravedad de la distribución.
median(x) # calcula la mediana. El valor de la variable que corresponde al elemento central de la distribución.
var(x) # calcula la varianza.
sd(x) # clacula la desviación estándar. Miden la dispersión de los valores de la variable respecto a la media aritmética.
quantile(x) # calcula los cuantiles. Dividen la distribución de frecuencias en cuatro partes con igual número de observaciones.
fivenum(x) # Resumen de 5 números: min., Q1, mediana, Q3 y max.
IQR(x) # Calcula el rango intercuartilico.
summary(x) # Resumen estadístico de la variable x.
# La media recortada al 10%
mean(x,trim=10/100)
# La media recortada al 5%
mean(x,trim=5/100)
# Otros cuantiles.
quantile(x,c(0.1,0.9))
quantile(x,c(0.05,0.95))
quantile(x,c(0.025,0.975))
quantile(x, probs=c(0.25,0.75))
diff(range(x)) # Este comando da lo que usualmente se conoce como rango de la distribución.
Dme=sum(abs(x-median(x)))/length(x) #Para la desviación mediana hay que escribir la formula.
Dme
cv=sd(x)/mean(x) # permite comparar el grado de dispersión relativa de varias distribuciones de frecuencias.
cv
T=table(x) # Nos provee la frecuencia absoluta.
T
cumsum(x) # Representa la frecuencia absoluta acumulada.
##################################################################
# Algunas funciones de uso general.
##################################################################
# Ordenación creciente de las componentes del vector
sort(x)
# Colocar las componentes de un vector en orden inverso a como han sido introducidas
rev(x)
# Order y sort admiten orden decreciente.
rev(sort(x))
# choose(m,n) da el número de combinaciones de m elementos de orden n.
choose(10,2)
# factorial(n) da el factorial de un número (n), o lo que es lo mismo,
# calcula las permutaciones de n elementos
factorial(6)
# runif(n) genera al azar n valores comprendidos entre 0 y 1
runif(20)
#############################################################
# Funciones generadas por el usuario
#############################################################
# "function" es la instrucción para crear una función. La "x" que le sigue es
# el argumento de la función y entre llaves está lo que la función hace con el
# argumento.
desvia<-function(x)x-mean(x)
desvia <- function(x) {
x - mean(x)
}
desvia(x)
#####################################################################
# Un ejemplo pequeño de cómo hacer una función en R.
#####################################################################
desest<-function(x)
{
m=mean(x)
sum<-0
for(i in 1:length(x))
{
sum=sum+(x[i]-m)^2
}
var<-sum/(length(x)-1)
des<-sqrt(var)
cv<-des/m
return(list(media=m, varianza=var, desviación_estándar=des, coeficiente_de_variación=cv))
}
desest(x) # Hace los cálculos de la función con el vector de datos x
quantile(x) # calcula percentiles
matrix(x, nc=3)
####################################################################################
# Ahora se importan datos desde un formato .txt. Estos corresponden a
# los datos del ejemplo 1.3 (pág 41 del libro de Navidi). Los datos están también
# en Excel. De ahi fueron exportados como texto delimitado por tabulaciones (.txt)
# para ser leidos despues en R.
#####################################################################################
datos=read.table("emision.txt", head=TRUE, dec=",") # Instrucción para importar los datos.
datos
# Lee el archivo en formato de tabla y genera un conjuto de datos de él. El subcomando header=T
# nos provee el nombre de cada columna
attach(datos) # Instrucción para usar posteriromente el nombre de la variable "Emision"
# La base de datos es adherida a la direccion donde R busca cuando va a evaluar una variable.
table(datos) # realiza tablas de frecuencias absolutas.
win.graph()
plot(table(datos), type="h", lwd=10, main="datos emision") # Diagrama de barras para una variable numérica discreta.
#win.graph()
#par(mfrow=c(2, 3))
##################################
# FUNCIONES GRÁFICAS BÁSICAS
##################################
stem(Emision) # Grafica el diagrama de tallos y hojas
plot(Emision, col="red") # Función genérica para representar en el plano xy puntos, lineas, etc.
barplot(Emision) # Diagramas de barras.
# piechart(Emision) # Diagramas de sectores.
hist(Emision) # Histogramas.
boxplot(Emision) # Diagramas de box-and-whisker (de caja y bigotes).
sunflowerplot(Emision) # Representación en el plano xy de diagramas de girasol.
win.graph()
hist(Emision, xlab="Emisión de partículas (g/gal)", ylab="Frecuencia", main="Histogram de frecuencias absolutas") # Calcula el histograma de frecuencias
?hist # Para revisar que otras opciones se pueden incluir en el cálculo del histograma
win.graph()
pie(Emision, labels = names(Emision), col= c(2,5,4,3)) # Diagrama de sectores.
op <- par(mfrow=c(1,1), bg="antiquewhite")
par(lty="dashed")
par(col="red")
hist(Emision, prob=TRUE,main="", xlab="", ylab="")
lines(density(x), col="red")
op <- par(mfrow=c(1,1), bg="antiquewhite")
par(lty="dashed")
par(col="red")
plot(Emision, col="red")
#####################################################################################
#BOX PLOT: grafico de caja, Ubica los cuartiles y pinta una caja entre el 1 y el 3
#en esta se pude ver la media, la mediana, el rango intercurtil, la forma y se usa una regla de los 1.5 rangos intecuertilicos.
#######################################################################################
win.graph()
boxplot(Emision) # Grafica el Box and Wisker Plot (Diagrama de Caja y Bigotes). Visualiza la dispersión de una distribución en base a los 5 valores: mínimo, Q1, Me, Q3 y valor máximo.
win.graph()
boxplot (Emision, horizontal=TRUE, col="blue") # Box plot horizontal y con color.
detach(datos) # Este comando se usa para desactivar el comando attach().
######################################################################################
# INSTALACIÓN DE PAQUETES
# Si queremos instalar el paquete ISwR, procedemos a ubicarlo con “Cran mirror” y luego seleccionamos el país y la ciudad,
# si hay especificaciones, de donde lo queremos bajar. En este caso usamos la función library(ISwR) para carga el paquete ISwR.
#####################################################################################
library(ISwR) # carga el paquete ISwR
?thuesen # Muestra la ayuda donde dice que el data frame thuesen tiene 24 filas y 2 columnas. Contiene la velocidad de la glucosa ventricular y de sangre glucosa para los pacientes del diabético del tipo 1.
data(thuesen)
attach(thuesen) #permite usar las variables de la base de datos. Llama los datos que están en la base de datos thuesen.
win.graph()
plot(blood.glucose,short.velocity) # Este es un gráfico sin muchas especificaciones.
win.graph()
plot(blood.glucose,short.velocity,main="Grafico de Elias",sub="Clase 21 de agosto") # A este gráfico se le introdujo un nombre y un subtítulo.
detach(thuesen) # La función detach(thuesen) desactiva la función attach.
data(airquality) # Para usar los datos incorporados en el paquete.
?airquality # La ayuda dice que son medidas diarias de la calidad del aire en Nueva York, de mayo a septiembre de 1973.
ca=edit(airquality) # Su función es editar los datos contenidos en airquality. Permite editar visualmente el contenido de una data frame.
ca
dd=data.frame(airquality) # Crea una tabla datos.
dd
ca=edit(dd) # presenta una tabla sin datos, disponible para llenar por el usuario.
a=fix(dd) # permite introducir los datos del data frame dd, cuando está vacía.
a
data(thuesen)
thue2=subset(thuesen,blood.glucose<7)
thue2
thue3=transform(thuesen,log.gluc=log(blood.glucose)) # crea una nueva variable a partir de las que están dentro de thuesen, en este caso trabaja con el logaritmo de la variable blood.glucose.
thue3
##################################################################
#Ahora instalamos el paquete "car"
##################################################################
?car # Este paquete acompaña el J. Fox, An R y S-PLUS compañero para regresión aplicada, sabio, 2002. El paquete contiene sobre todo las funciones para la regresión aplicada, los modelos lineares y los modelos lineares generalizados, con énfasis en diagnósticos de la regresión, particularmente los métodos de diagnóstico gráficos. También hay algunas funciones para uso general. A continuación instalamos el paquete.
library(car) # carga el paquete car.
data(Ornstein) # Para usar los datos incorporados en el paquete.
x=sort(Ornstein$interlocks) # Ordena los datos contenidos en un paquete interlocks en forma ascendente. Como puede verse a continuación.
x
attach(Ornstein) # Otra manera de ordenar los datos es usando primero la función attach(Ornstein) para llamar los datos del paquete Omstein y luego usar la función sort(), como puede verse a continuación.
sort(interlocks)
y=sort(unique(Ornstein$interlocks)) # ordena los datos sin repetirlos.
y
m=rnorm(100) # Genera cien datos pseudoaleatorios obtenidos de una distribución normal de media 0 y desviación estándar 1 y los almacena en m. Como se puede ver a continuación.
m
win.graph()
hist(x,freq=F) #un histograma es un grafico para variables cuantitativas. De esta manera se grafican los datos ordenados en clases, usando las frecuencias absolutas.
win.graph()
hist(m) #dibuja un histograma, presenta la gráfica de la frecuencia de los datos ordenados en clases.
win.graph()
hist(m,nclass=10) #dibuja un histograma usando aproximadamente 10 barras.
win.graph()
hist(m,nclass=5) #dibuja un histograma usando aproximadamente 5 barras.
win.graph()
hist(m,nclass=5,freq=F)
curve(dnorm(x),add=T, col="red") # agrega la grafica de la normal sobre el histograma anterior.
win.graph()
hist(m,nclass=5,freq=F,ylim=c(0,0.4)) # modifica el histograma para ajustarlo a la curva normal. Trabaja con la frecuencia relativa.
curve(dnorm(x),add=T, col="blue")
P=c(1,2,3,5)
y=c(1,1,1,1)
barplot(y, names.arg = P, main = "Diagrama de Barras", col=c(2,3,4,5),xlab= "Población", ylab="Frecuencias")
y2 = c(1,2,3,2, 3, 3,2,1)
x2 <- c(1,1.5, 2,2.5,3,3.5, 4,5)
win.graph()
barplot(y2, names.arg = x2, main = "Diagrama de Barras", xlab= "Medias", ylab="Frecuencias")
x3=c(1,4/3, 5/3, 2, 7/3, 8/3, 3, 10/3, 11/3, 4, 13/3, 5)
y3 = c(1,3,6,7,9,9,10,6,6,3,3,1)
win.graph()
barplot(y3, names.arg = x3, main = "Diagrama de Barras", xlab= "Medias", ylab="Frecuencias")
x4=c(1,5/4,6/4,7/4, 2,9/4,10/4,11/4, 3,13/4,14/4,15/4, 4,17/4,18/4, 5)
y4=c(1,4,10,16,23,28,34,32,31,24,22,12,10,4,4,1)
win.graph()
barplot(y4, names.arg = x4, main = "Diagrama de Barras", xlab= "Medias", ylab="Frecuencias")