Introduccion

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.


Primera parte[Uso Básico de R]

?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


Segunda parte[operaciones Aritméticas en R]

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 pio 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))

Además podemos combinar las distintas funciones mencionadas anteriormente

Tercera parte[Asignacion de valores]

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

Valores y Operadores Lógicos

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.


Cuarta parte[Arreglos o Vectores]

    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


Manipulación y herramientas para vectores

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

Quinta Parte[implementacion de funciones]

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

Algunos ejemplos
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)

Funciones ya implementadas necesarias antes de Explorar un vector

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))

}

Sexta Parte[funcion explorar] Ahora utilizando todos los conocimientos impartidos y asimilados hasta ahora

Es posible crear una función que llame a todas las demás y nos permita explorar el arreglo deseado 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
  
}