Está en la página 1de 46

Estadística con:

Samuel Pérez Q.
Introducción
El software estadístico R es un conjunto de
programas integrados para manejo de
datos, simulaciones, cálculos y realización
de gráficos. Es además un lenguaje de
programación orientado a objetos con una
implementación libre, independiente, con
código abierto.

2
Pantalla inicial

Lugar donde van los


comandos 3
Introducción de datos

> x=10 # x toma el valor de 10


> x ->10
> 10->x
> A=“hola…”
>{ # permite agrupar comandos
print(x^2)
print(2*x)
} # imprime 100 y 20 4
Introducción datos en vectores
> n =c(3,2,5,6)
> assign(“n”, c(3,2,5,6)) # equivale n=c(3,2,5,6)
> letras =c(“hola”,”mundo”)
> Y=seq(a,b,c) # a=valor inicial, b=final, c=incremento
seq(from=a, to=b, length=d # ‘d’ nro. de datos
> x=1:10 # x toma valores: 1,2,3,…,10
>x # mostrará todos los valores de x
> x[2] # mostrará el segundo valor de x
> x[-2] # mostrará todos los valores de x menos el 2º
> x[-c(2,4)] # mostrará todos los valores de x menos el 2º y 4º
> x[x>4] # mostrará los valores mayores a 4
> m=matrix(data=x,nrow=2,ncol=5,byrow=FALSE) # copiar a una matriz
>m # se mostrará
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9 5
[2,] 2 4 6 8 10
Introducción datos en vectores
> rep(1,4) # repetirá: 1 1 1 1 (cuatro 1’s)
> rep(1:2,3) # repetirá: 1 2 1 2 1 2
> gl(3,1,9) # generará 9 nros: 1 2 3 1 2 3 1 2 3
> gl(2, 6, label=c("Macho", "Hembra")) # genera la salida
[1] Macho Macho Macho Macho Macho Macho
[7] Hembra Hembra Hembra Hembra Hembra Hembra

6
Dar nombres a arrays
> x=1:4 # x toma valores: 1,2,3 y 4
> nros = c(“uno”, “dos”, “tres”, “cuatro”)
> names(x)=nros # asignamos etiquetas
>x # imprimirá
uno dos tres cuatro
1 2 3 4

7
Tabla de datos
> x1=c(4,6,2,3)
> x2=c(4,6,2,3)
> y=c(5,2,3,5)
Para presentar como tabla:
> tablaxy=data.frame(x1,y)
> tablaxy
Mostrará:
x1 y
1 45
2 62
3 23 8
4 35
Guardar los Datos
Si el archivo tiene como encabezado nombre de
variables
> write.table(datos, “archivo.ext”)
> Datos1=read.table(“nombreArchivo”, sep=“;”, head=TRUE)
> Datos1 # mostrará toda la data
> Datos1$salario # mostrará variable “salario” de la data
> save.image("E:\\DatosR") # guardar imagen
Acceder directamente a variables
> attach(Datos1)
> salario # mostrará variable “salario” de la data
9
Leer Archivos “txt”
Si el archivo tiene como encabezado nombre de
variables
> Datos1=read.table(“nombreArchivo”, sep=“;”, head=TRUE)
> Datos1 # mostrará toda la data
> Datos1$salario # mostrará variable “salario” de la data

Acceder directamente a variables


> attach(Datos1)
> salario # mostrará variable “salario” de la data

10
Leer Archivos del Excel
El archivo es ‘DatosExcel.xlsx’ (tiene encabezado)
> library(RODBC) # cargar la librería para importar
> setwd(“d:/”) # cambia directorio a la raíz de unidad d:
> connexion<- odbcConnectExcel("DatosExcel.xlsx")
> datos2<-sqlQuery(channel=connexion, "select*from[Hoja1$]")
> datos2 # mostrará todos los datos
> datos2$X # mostrará los datos de la variable X

11
Leer Archivos del SPSS
El archivo es ‘DatosSPSS.sav’
> library(foreign) # cargar la librería para importar
> setwd(“d:/”) # cambia directorio a la raíz de unidad d:
> datos2<- read.spss("DatosSPSS.sav", use.value.labels=TRUE, to.data.frame=TRUE)
> datos2 # mostrará todos los datos
> datos2$X # mostrará los datos de la variable X

12
Listado de variables/objetos
> ls()
> ls(pat=“b”) # da variables que tienen ‘b’
> objects()

Para borrar variables/objetos


> rm(x,y)
> rm(list=ls(pat="x")) # los que tiene ‘x’
> rm(list=ls()) # todas las variables
13
Operadores aritméticos
• “+” suma
• “-” resta
• “*” multiplicación
• “/” división
• “^” potencia
• “%%” resto de una división
• “%/%” cociente de una división

14
Operadores lógicos

operador símbolo
Igualdad ==
Diferente !=
Negación !
Menor <
Mayor >
Menor igual <=
Mayor igual >=
Conjunción(intersección) &
Disyunción (unión) |

15
Estadística

16
Estadística descriptiva

17
Funciones Matemáticas

18
Funciones Estadisticas

rnorm(nroDatos,media,varianza) #genera total ‘nro’ datos, con

19
Manejo de datos

20
Gráficos

21
Instalación/carga de datos

> library(foreign) # librería para abrir bases de daos


22
Regresión lineal
> x1=c(4,6,2,3)
> y=c(5,2,3,5)
Para presentar como tabla:
> reg1=lm(y~x)
> reg1
Mostrará:

23
Regresión
> reg1$fitted # mostrará valores estimados o fitted(reg1)
> reg1$resid # mostrará los errores o resid(reg1)
> reg1$coef # mostrará los coeficientes, o coef(reg1)
> summary(reg) # mostrará parámetros y t’s
> anova(reg) # mostrará su ANVA
> plot(x,y, type=“l”, main=“titulo”,sub=“subtitulo”,xlab=“..”)
> abline(lm(y~x)) # dibuja una línea dentro de un ploteo
> reg$coef[[2]] # mostrará el valor de ‘b’

24
Regresión sin intercepto
> x=c(4,6,2,3)
> y=c(5,2,3,5)
Para presentar como tabla:
> tablaxy=data.frame(x,y)
> reg1=lm(y~0+x, data=tablaxy)
> reg1
> plot(x,y)
> abline(reg1) # añade la línea en el ploteo
Mostrará:

25
Regresión Múltiple
> x1=c(4,6,2,3)
> x2=c(2,5,1,3)
> y=c(5,2,3,5)
Para presentar como tabla:
> tabla=data.frame(x1,x2,y)
> reg1=lm(y~x., data=tabla) # equivale a: y~x1+x2
> reg1
Mostrará:

26
Regresión curvilinea
- Logarítmica. Y = b0 + (b1 * ln(t)).
- Inversa. Y = b0 + (b1 / t).
- Cuadrático. Y = b0 + (b1 * t) + (b2 * t**2).
- Cúbico. Y = b0 + (b1 * t) + (b2 * t**2) + (b3 * t**3).
- Potencia. Y = b0 * (t**b1) ó ln(Y) = ln(b0) + (b1 * ln(t)).
- Compuesto. Y = b0 * (b1**t) ó ln(Y) = ln(b0) + (ln(b1) * t).
- Curva-S. Y = e**(b0 + (b1/t)) ó ln(Y) = b0 + (b1/t).
- Crecimiento. Y = e**(b0 + (b1 * t)) ó ln(Y) = b0 + (b1 * t).
- Exponencial. Y = b0 * (e**(b1 * t)) ó ln(Y) = ln(b0) + (b1 * t).

27
Regresión curvilinea
• #Ajuste cuadrático o polinómica de orden 2
reg<-lm(Y~X+I(X^2),data=datos); summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste cuadrático o polinómica de orden 2')
curve(reg$coefficient[1]+reg$coefficient[2]*x+reg$coefficient[3]*x^2,add=T,col="red")
• #Ajuste cúbico o polinómica de orden 3:
reg<-lm(Y~X+I(X^2)+I(X^3),data=datos); summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste cúbico o polinómica de orden 3')
curve(reg$coefficient[1]+reg$coefficient[2]*x+reg$coefficient[3]*x^2+reg$coefficient[4]*x^3,add
=T)
• #Ajuste logarítmico:
tras<-log(datos$X)
reg<-lm(Y~tras,data=datos); summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste logarítmico')
curve(reg$coefficient[1]+reg$coefficient[2]*log(x),add=T,col="violet")
• #Ajuste potencia:
trasX<-log(datos$X);trasY<-log(datos$Y)
reg<-lm(trasY~trasX,data=datos);summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste potencia')
curve(exp(reg$coefficient[1])*x^(reg$coefficient[2]),add=T,col='purple')

28
Regresión curvilinea
• #Ajuste curva-S.
tras<-log(datos$Y)
reg<-lm(tras~I(1/X),data=datos);summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste Curva-S')
curve(exp(reg$coefficient[1]+(reg$coefficient[2])/x),add=T,col="blue")
• #Ajuste inversa.
reg<-lm(Y~I(1/X),data=datos); summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste inversa')
curve(reg$coefficient[1]+reg$coefficient[2]/x,add=T,col="green")
• #Ajuste exponencial:
tras<-log(datos$Y)
reg<-lm(tras~X,data=datos);summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste exponencial')
curve(exp(reg$coefficient[1])*exp(reg$coefficient[2]*x),add=T,col="orange")
• #Ajuste compuesto:
tras<-log(datos$Y)
reg<-lm(tras~X,data=datos);summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste compuesto')
curve(exp(reg$coefficient[1])*exp(reg$coefficient[2])^x,add=T,col="gray")
• #Ajuste crecimiento:
tras<-log(datos$Y)
reg<-lm(tras~X,data=datos);summary(reg)
plot(datos$X,datos$Y,xlab='X(m)',ylab='Y(%)',main='Ajuste crecimiento') 29
curve(exp(reg$coefficient[1]+reg$coefficient[2]*x),add=T)
Regresión no lineal (aproximación)
> x=c(4,6,2,3)
> y=c(5,2,3,5)
Para definir el modelo estadístico:
> freg1=function(x,b0,b1) {b0+b1*x}
> reg1=nls(y~freg(x,b0,b1),start=c(b0=1,b1=2), trace=T)
> reg1
Mostrará:

30
Prueba estadística ‘t’

t.test(x, alternative=”two.sided”, mu=0, conf.level=0.95)

31
Correlación

cor(x,y) # correlacion simple (2 variables)


r1=cor(tabla1[,1:4] # genera una matriz de correlaciones

32
Análisis Discriminante

library(MASS) #cargar la libreria MASS


andiscr=lda(y~., data=datos) # y dependiente y todos
indep.

33
Análisis Factorial

facto1<-factanal(datos, factors=2) # factorial con 2 factores

No necesita libreria, datos es la base de datos tipo frame.

34
Diseños experimental una vía

35
Diagramas de dispersión

Plot(x,y, xlab=‘EjeX’,ylab=‘EjeY’,lwd=3,col=‘red’,type=‘l’)
lwd es el grosor(3,8,…) de los puntos
Col es el color de los puntos(blue, red, black,…)
Type es como se grafica, punto=‘p’, line=‘l’…

36
Generar grafico para un archivo

png(“archive.png”) # crea el archivo para grafico


pie(table(region)) # grafico de torta de una tabla
dev.off() # Cierra el archivo

37
Archivos y carpetas
getwd() Muestra el directorio de trabajo
setwd() Cambia el directorio de trabajo
setwd(“d:/”) # cambia directorio a la raíz de unidad d:
data() Muestra los archivos de datos disponibles
data(archivo) Carga el archivo de datos a la memoria
search() Permite ver los libros que hay en memoria
library() Permite ver libreras disponibles. Ejem.
library(Rcmdr) # carga el R-comander

38
Ejecución órdenes de archivo
> source("ordenes.R")
Por otra parte, la orden sink
> sink("resultado.lis")
enviara la salida al archivo “resultado.lis”. La
orden
> sink()
devuelve la salida de nuevo a la pantalla.

39
Paquetes

R cuenta con un sistema de libreras y un conjunto de paquetes adicionales


que extienden su funcionalidad. Para instalarlos la forma más sencilla es
utilizando la función “install.packages( )” o “update.packages( )”.

40
Estadísticas con “tapply”

sexo x
1 d 3
2 d 2
3 d 3
4 d 5
5 d 6
6 v 4
7 v 5
8 v 4
> var1=tapply(x,sexo,var) # hallará la varianza de x pero separados por sexo.
d v
2.7000000 0.3333333
> var1[[1]] # mostrará la varianza de damas («d»)

41
Distribuciones de probabilidad
qf(c(.05), df1=5, df2=4, lower.tail=FALSE)
[1] 6.256057
> qf(c(.05), df1=5, df2=4, lower.tail=TRUE)
[1] 0.1925978
> qnorm(c(.05), mean=0, sd=1, lower.tail=FALSE)
[1] 1.644854
> qnorm(c(.95), mean=0, sd=1, lower.tail=FALSE)
[1] -1.644854
> qnorm(c(.95), mean=0, sd=1, lower.tail=TRUE)
[1] 1.644854
> qt(c(.05), df=16, lower.tail=FALSE)
[1] 1.745884
> qt(c(.95), df=16, lower.tail=FALSE)
[1] -1.745884
> qchisq(c(0.9), df=16, lower.tail=TRUE)
[1] 23.54183
> qchisq(c(0.1), df=16, lower.tail=TRUE)
[1] 9.312236
42
Prueba homogeneidad varianzas

> leveneTest(y, group, center=median, ...)


> leveneTest(edad,sexo,center=median)
> var.test(x, y, ratio = 1, alternative = c("two.sided", "less", "greater"),
conf.level = 0.95, ...) # prueba de Snedecor o F
> var.test(edad~sexo,alternative="less")
> bartlett.test(x, g, ...)
> bartlett.test(edad,sexo)

43
Bucles

Bucle for: La sintaxis es la siguiente:


for (i in listadevalores) { secuencia de comandos }
Ejem. for(i in 1:10) { print(i) } # imprimirá: 1,2,…,10

El bucle while: La sintaxis es como sigue:


while ( condicion logica) { expresiones a ejecutar }
Ejem.:
n2 = 1
> while(n2<10) { print(n2^2); n2=n2+1} # imprime: 1, 4, …, 81

44
Condicional

Condicional: if La sintaxis es:


if (condicion) comando1 else comando2

45
Invocar ayuda

> ? Nombre_comando # abrirá buscador web con ayuda del comando


> help.start() # similar al anterior, con todas las opciones

46

También podría gustarte