R es un lenguaje de programacíon enfocado directamente al análisis estadístico, el cual esta basado en el software libre S, pero a diferencia de este cuenta con un soporte de alcance estático. Este lenguaje de programación es de los más utilizados en cuanto a investigaciones estadísticas se trata, siendo mayormente explotado en el rubro de la “minería de datos”, “matemáticas financieras”, entre otros. Es por su gran poder para manipular datos y por su versatilidad al momento de programarlos que daremos inicio a un pequeño pero completo curso de R, viendo sus herramientas y funciones más básicas hasta llega a la implementación de funciones propias.
?lm
este comando se utiliza para pedir ayuda online
help.start()
este comando se utiliza para pedir ayuda desde la pagina de inicio
apropos("prod")
esta funcion sirve para encontrar todas las palabras que se introduzcan como parametro
q()
este comando se utiliza para guardar los datos en R
getwd()
se usa para saber cual es la carpeta de trabajo
save.image(file="myfile.RData")
este conando se utiliza para guardar el workspace en cualquier momento
ls()
este comando se utiliza para inspeccionar en el objeto anteriormente mencionado
rm(thing)
se utiliza para borrar un archivo (llamado “thing” en este caso)
rm(thing1,thing2)
para borrar más de un archivo
rm(list=ls())
se utiliza para borrar todos los archivos anteriormente usados
load("myfile.RData")
esto se utiliza para cargar un workspace o un trabajo guardado anteriormente
1+2+3
2+3*4
3/2+1
2 + (3 * 4)
(2 + 3) * 4
4 * 3^3
En R tambíen es posible hacer operaciones convencionales, como la suma, resta, multiplicación, divición y potencias sqrt() Como también es posible sacar la raiz cuadrada con el comando sqrt()
pi
en R existen los valores definidos que se utilizan en operaciones como pi
o e
sin(pi)
cos(x)
También es posible calcular funciones trigonométricas
asin(pi^2)
atan(pi)
Y es posible calcular la inversas de estas
sqrt(sin(45 * pi/180))
x= sqrt(2)
x^3
x
En R podemos asignar valores, ya sea númericos o lógicos por medio de =
,<-
o ->
para posteriormente operarlos o llamarlos
y <- log(x)
y
z=x+y
z
otros ejemplos
x <- 10
x>10
FALSE
tf <- x > 10
tf
4==7
FALSE
!(4==7)
TRUE
(4==4)&(4>5)
En R es posible utilizar los diversos operadores lógicos < >= o !=
para interactuar con ciertas variables o vectores como se ve en el código anterior además de &
y |
como operadores lógicos de conjunción y djisyuntivos.
x <- c(2, 3, 5, 7, 11)
x
Esta instruccion asigna los valores ingresados por teclado a un vector x
x <- scan()
x
scan()
es una funcion que permite asignar los datos que se ingresen por teclado
xx<-1:10
xx
metodo que permite inicializar un vector de a a b, y despues lo llama
xx<-seq(from=100,to=1)
xx
la misma funcion de arriba pero con una sintaxis diferente
xx<-c(rep(2,5),3,4,rep(5,2))
xx
esta funcion permite repetir el valor asignado en el primer parámetro las veces del segundo
xx*2
xx>15
Además es posible operar cada una de las componentes de los vectores de manera rápida, ya sea operaciones aritméticas o lógicas
xx[n]
entrega el valor ubicado en la posicion n (n=<0) del vector
xx[-n]
Elimina el valor ubicado en la posición n del vector
x<-a:b
Esta instrucción genera un vector desde el numero a hasta el b
Además de todo lo visto anteriormente, R cuenta con distintas herramientas para calcular diversos atributos de los vectores:
length(x) #numero de elementos del vector
max(x) # sirve para obtener valor maximo
min(x) #obtener el valor minimo
sum(x) #suma todos los elementos dentro del vector
prod(x) #multiplica los elementos del vector
sort(x) #ordena los elementos del vector
sort.list(x) #ordena las posiciones de los elementos del vector
Una poderosa herramienta en el mundo de la computación es la implementación y uso de funciones, en R también es posible crear varias de estas. En este caso revisaremos la sintaxys que hace posible calcular diversas funciones estadísticas que serán utilizadas en el curso de Inferencia Estadística
cubo<-function(x){
y<-x^3
return(y)
}
media<-function(x){
y<-0
for(i in 1:length(x)){
y<-y+x[i]
}
y<-y/length(x)
return(y)
}
media<-function(x){
sum(x)/length(x)
}
var1<-function(x){
dif=x-mean(x)
v1=sum(dif^2)/length(x)
return(v1)
}
var2<-function(x){
v2=mean(x^2)-(mean(x))^2
return(v2)
}
var(xx) #funcion ya impkementada para calcular la varianza
promedio<-function(x){
y<-sum(x)/length(x)
return(y)
Rango<-function(x){ #funcion que permite calcular el rango
max(x)-min(x)->y
return(y)
}
sd(xx) #funcion ya implementada para calcular la desviación estandar
Mediana<-function(x){ #funcion que devuelve la mediana
sort(x)
(length(x)+1)/2->y
return(x[y])
}
Diferencia<-function(x){ #entrega la diferencia de todos los valores i-esimo del arreglo menos la media
for (i in 0:length(x) ) {
y=x[i]-media(x)
}
return(y)
}
DesviacionE<-function(x){
y=sqrt((1/length(x)+1)(Diferencia(x)^2))
return(y)
}
CV<-function(x){ #funcion que permite calcular el coeficiente de variabilidad
y<-100*DesviacionE(x)/mean(x)
return(y)
}
QuartilP<-function(x,y){ #indica la posición en la cual se encuentra el cuartil deseado (x=arreglo/y=cuartil)
y(length(x))/4->z
return(z)
}
QuartilV<-function(x,y){ #indica el valor en la cual se encuentra el cuartil deseado (x=arreglo/y=cuartil)
y(length(x))/4->z
sort(x)
return(x[z])
}
RangoIQ<-function(x){ #indica el rango interqualrtil
QuartilV(3)-QuartilV(1)->y
return(y)
}
IQR(xx) #funcion ya implementada que permite calcular el rango intercuartilico
fivenum(xx) #valores en cuales empiezan los cuartiles
DecilP<-function(x,y){ #indica el la posicion en la cual se encuentra el decil deseado (x=arreglo/y=decil)
y(length(x))/10->z
return(z)
}
DecilV<-function(x,y){ #indica el valor en la cual se encuentra el decil deseado (x=arreglo/y=decil)
y(length(x))/10->z
sort(x)
return(x[z])
}
IC95<-function(x){ #funcion que devuelve el intervalo de confianza del 95%
confianza->95/100
(1-confianza)/2->z
z->1.96
media(x)+((z(DesviacionE(x)/sqrt(length(x)))))->rango1
media(x)-((z(DesviacionE(x)/sqrt(length(x)))))->rango2
return(rango1)
return(rango2)
}
PercentilP<-function(x,y){ #indica la posicion en la cual se busca el percentil deseado
y(length(x))/100->z
return(z)
}
PercentilV<-function(x,y){ #indica el valor en la cual se busca el percentil deseado
y(length(x))/100->z
sort(x)
return(x[z])
}
#asimetría
CoefFisher<-function(x){ #funcion que permite calcular el coeficiente de fisher
(Diferencia(x)^3)/(length(x)(DesviacionE)^3) <-z
return(z)
}
Asimetria<-function(x){ #funcion que devuelve un valor numerico dependiendo de la asimetría de los datos(1 si es positiva,-1 si es negativa,0 si es nula)
if(CoefFisher(x)<0){
return(1)
}else if(CoefFisher(x)>0){
return(-1)
}else{
return(0)
}
}
MediaAcot<-function(x,y){ #funcion que devuelve la media del vector x, acotada al y% [recorta hasta 8 valores del arreglo original]
y(length(x))/100->z
sort(x)
if(z<0){
x[-1]
x[-length(x)]
z-2
}
if(z<0){
x[-1]
x[-length(x)]
z-2
}
if(z<0){
x[-1]
x[-length(x)]
z-2
}
if(z<0){
x[-1]
x[-length(x)]
z-2
}
return(media(x))
}
x
Esto por medio de una funcion que llame a todas las anteriores:
Explorar<-function(x){
return(x) #entrega el arreglo original
return(sort(x)) #entrega el largo o cantidad de elementos
return(max(x)) #entrega el valor máximo
return(min(x)) #entrega el minimo
return(Rango(x)) #entrega el rango
return(media(x)) #entrega la media o promedio
return(Mediana(x)) #entrega la mediana del arreglo
return(MediaAcot(x,5)) #media acotada al 5%
return(CoefFisher(x)) #entrega el coeficiente de fisher
return(Asimetria(x)) #entrega un valor numérico dependiendo de la asimetría
return(PercentilV(x,35)) #ejemplo percentil 35%
return(PercentilP(x,35)) #posicion percentil 35%
return(QuartilV(x,1)) #valor quartil 1
return(QuartilP(x,1)) #posicion quartil 1
return(IC95(x)) #intervalo de confianza de la media 95%
return(RangoIQ(x)) #entrega el rango interquartil
return(CV(x)) #entrega el coeficiente de variacion de x
return(DesviacionE(x)) #entrega la desviacion estandar
return(DecilV(x,2)) #entrega el valor del decil 2
return(DecilP(x,2)) #entrega la posicion del decil 2
return(var1(x)) #entrega la varianza
}