• No se han encontrado resultados

Introducción a R Estadística II

N/A
N/A
Protected

Academic year: 2021

Share "Introducción a R Estadística II"

Copied!
74
0
0

Texto completo

(1)

Introducción a R

Estadística II

Misraim Gutiérrez

Facultad de Ciencias UNAM

(2)

R es un poderoso software estadístico de distribución libre basado en el lenguaje S. No obstante, R tiene una interfase no muy amigable, por lo que se propone el uso de un editor como Tinn-R (en el caso de Windows) y RKWard

(en el caso de Linux). El uso del editor es totalmente opcional, ya que obviamente cada programa está hecho para trabajar por separado. En las siguientes transparencias daremos una introducción al mundo de R.

Puede obtenerse libremente de http://cran.r-project.org

R incluye varios manuales y, en particular, recomendamos la lectura de An Introduction to R. En el sitio de distribución de R se pueden encontrar una gran cantidad de notas, tutoriales, etc. que también recomendamos explorar.

(3)

Objetos

Las entidades que R crea y manipula se denominan objetos. En una sesión de trabajo en R los objetos que se crean se almacenan por nombre. La orden

> objects()

se puede utilizar para obtener ó mostrar los nombres de los objetos almacenados en R. Esta función es equivalente a la función

> ls()

Así, a la colección de objetos almacenados en cada momento se le conoce como espacio de trabajo (workspace)

(4)

Para eliminar objetos se utiliza la orden rm, por ejemplo > rm(a, b, c, x1, x2)

Los objetos creados durante una sesión de R pueden almacenarse en un archivo. Al finalizar la sesión, R pregunta si desea hacerlo. En caso afirmativo todos los objetos se almacenan en el archivo .RData1

(5)

Ayuda

Existen varias formas para accesar a la ayuda de R.

help() Documentación en linea de la función ayuda.

help(tema) Documentación en linea para algún tema o función en específico.

help("tema") Igual que la forma anterior. ?tema Igual que la forma anterior.

(6)

Sintaxis

Sintaxis y operadores comunes en R

Descripción Símbolo Ejemplo

Comentarios # # Este es un comentario

Asignación <- x<-log(2) multiplicación * a*b Exponencial ˆ 2ˆ2 Sucesión de x a y aumentando de c en c seq seq(x,y,c) Sucesión : 0:20

(7)

Aritmética Simple

R realiza operaciones de aritmética simple, en orden y convenciones usuales. >5+3 [1] 8 >4*4/45 0.3555556 >(2-34)/54*23 [1] -13.62963 >pi [1] 3.141593 >2i [1] 0+2i

(8)

Funciones comunes

Funciones

Descripción Simbolo

Raíz Cuadrada sqrt

Suma sum

Valor absoluto abs

Seno , coseno sin, cos

Logaritmo log

Exponencial ex exp

Factorial factorial

Números aleatorios Uniformes runif Números aleatorios normales rnorm

Distribución nomal dnorm,pnorm, qnorm

Varianza, Covarianza var, cov

Desviación estandar sd

(9)

Funciones Numéricas Simples

A continuación se muestran algunas funciones simples.

>sqrt(36) [1] 6 >abs(-2) [1] 2 log(2) [1] 0.6931472 > exp(4) [1] 54.59815 > sin(2+pi) -0.9092974 > cos(23) [1] -0.532833 > tan(2*pi) [1] -2.44921e-16

(10)

Vectores

R utiliza diferentes estructuras de datos. La estructura más simple es el vector, que es una colección ordenada de números. Para crear un vector, por ejemplo x, consistente en use la orden

x<- c(1, 1.5, 2, 2.5, 3)

Las asignaciones pueden realizarse también con la flecha apuntando a la derecha. Por lo que tambien se puede escribir de la forma

> c(10.4, 5.6, 3.1, 6.4, 21.7) -> x Si escribimos

> 1/x

[1] 0.09615385 0.17857143 0.32258065 0.15625000 0.04608295 Se obtienen los inversos de cada entrada del vector x

(11)

Sucesiones

En R existen varias formas para generar sucesiones númericas, por ejemplo

Operador :

> 1:5

[1] 1 2 3 4 5

El operador : tiene prioridad en una expresión como la siguiente > 2*1:10

[1] 2 4 6 8 10 12 14 16 18 20 > n<-10

> 1:(n-1)

(12)

Función seq()

Esta función genera sucesiones más complejas y tiene algunos argumentos como from= valor inicial

to= valor final

by= paso de la sucesión length=longitud de la sucesión Por ejemplo

> z<- seq(from=1, to= 30, by= 3) > z

[1] 1 4 7 10 13 16 19 22 25 28 > length(z)

(13)

Función seq()

Otro ejemplo de la función seq() sería > seq(-5, 5, by=0.2)->s3 > s3 [1] -5 -4.8 · · · -2.2 [16] -2.0 -1.8 · · · 0.8 [31] 1.0 1.2 · · · 3.8 [46] 4.0 4.2 · · · 5.0 Genera el vector c(-5, -4.8,. . .,4.8, 5.0 )

(14)

Ejemplos de Matrices

Ejemplo 1

> d<- matrix(1:10, nrow=2, byrow=T)a #Matriz > d

[,1] [,2] [,3] [,4] [,5]

[1,] 1 2 3 4 5

[2,] 6 7 8 9 10

abyrow=T, está pidiendo que la matriz se ordene por renglones

Ejemplo 2

> z<-matrix(1:20, ncol=5) #Matriz > z [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20

(15)

Ejemplos de Matrices

Ejemplo 3

> z<-matrix(rnorm(12),4) > z [,1] [,2] [,3] [1,] -1.0477588 -1.7740875 0.7880992 [2,] 0.1817206 0.1843170 -0.5081660 [3,] -0.4223522 -0.9630552 0.5655456 [4,] 0.8871649 -0.4387159 0.2488602

(16)

Sintaxis para Vectores y Matrices

Descripción Simbolo Ejemplo

Vector cero numeric(x) z<-numeric(x)

Matriz cero matrix(0,n,m) x<-matrix(0,n,m) i -ésimo elemento del vector a a[i] a[i]<-0 j -ésima columna del la matriz A A[,j] sum(A[,j])

Entrada aij de la matriz A A[i,j] x<-A[i,j]

Mutiplicacion de Matrices %* % x<- A %* % B

Transpuesta de la matriz A t t(A)

(17)

Funciones de Distribución

Distribución Nombre en R Argumentos (parámetros) Beta beta shape1, shape2, ncp Binomial binom size, prob

Cauchy cauchy location, scale Ji-Cuadrada chisq df, ncp

Exponencial exp rate

F f df1, df1, ncp

Gamma gamma shape, scale

Geométrica geom prob

Hipergeométrica hyper m, n, k Log-normal lnorm meanlog, sdlog

Logística logis location, scale Binomial negativa nbinom size, prob

Normal norm mean, sd

Poisson pois lambda

T t df, ncp

(18)

Para cada distribución, R soporta funciones que permiten calcular la función de distribución, F (x )=P(X≤x ), permite calcular cuantiles, la función de densidad y generar números pseudoaleatorios de la distribución.

Para construir el nombre de cada función, hay que utilizar el nombre de la distribución precedido de las letras:

‘d’ para la función de densidad ‘p’ para la función de distribución ‘q’ para calcular algún cuantil

(19)

En R es sencillo evaluar alguna función, por ejemplo la densidad de la normal estandar φ(x )=p1 2πe −x2/2 para x =2 > 1/sqrt(2*pi)*exp(-2) [1] 0.05399097

en lugar de estar escribiendo las fórmulas de esta forma, R facilita las cosa, basta con escribir

> dnorm(2) [1] 0.05399097

(20)

Distribución Binomial

Sabemos que si X∼Bin(n,p) su función de probabilidad es

P(X=x )=      Ã n x ! px(1−p)n−x si x=0,1, . . . ,n 0 e.o.c

Para calcular el valor que toma la función de distribución en un cierto valor, por ejemplo, x=0, n=10 y probabilidad p=1/2 o x=2, n=20 y probabilidad p=1/3 podemos utilizar las siguientes lineas de código

> x<- 0 > n<- 10 > p<- 0.5 > pbinom(x,n,p) [1] 0.0009765625 > x<- 2 > n<- 20 > p<- 1/3 > pbinom(x,n,p) [1] 0.0546875

(21)

Distribución Poisson

Si X∼Poisson(λ) su función de probabilidad esta dada por

P(X=x )= (

e−λ λx

x ! si x=0,1, . . .

0 e.o.c

Queremos calcular valores que toma la función de distribución para un cierto valor x y una ciertaλ. > x<-2 > l<-1/2 > dpois(x,l) [1] 0.07581633 > x<-100 > l<-2/3 > dpois(x,l) [1] 1.353134e-176

(22)

Distribución Exponencial

Si X∼exp(λ) su función de densidad esta dada por

fX(x )=

(

λe−λx para x>0

0 si x≤0

Calcularemos el valor que toma la función de distribución para distintos valores de x yλ > x<-5 > l<- 1/2 > pexp(x,l) [1] 0.917915 > x<-15 > l<-2/5 > pexp(x,l) [1] 0.9975212

(23)

Función sort()

La función sort() nos permite ordenar datos en orden ascendente por ejemplo > z<-rnorm(20,0,1) > z [1] 0.93628286 -1.39570034 1.28577508 -1.49326245 -0.97826044 -0.21732865 [7] -1.26071179 0.74600006 -0.25445590 -0.12012232 -0.37061217 -2.03825519 [13] -0.78996640 0.56181197 2.47760047 0.97839840 -1.43885020 -0.43203742 [19] 0.99971017 -0.03361653 > sort(z) [1] -2.03825519 -1.49326245 -1.43885020 -1.39570034 -1.26071179 -0.97826044 [7] -0.78996640 -0.43203742 -0.37061217 -0.25445590 -0.21732865 -0.12012232 [13] -0.03361653 0.56181197 0.74600006 0.93628286 0.97839840 0.99971017 [19] 1.28577508 2.47760047

(24)

Estadística descriptiva

En R es facil calcular la media, desviación estandar, varianza y la mediana, por ejemplo

> x<- rnorm(50)# 50 valores aleatorios de la distribución normal > mean(x)# calcula la media del objeto x

[1] 0.03301363

> sd(x)# calcula la desviación estandar del objeto x

[1] 1.069454

> var(x)# calcula la varianza del objeto x

[1] 1.143731

> median(x)# calcula la mediana del objeto x

(25)

Cuantiles

Así como las medidas anteriores, se pueden calcular cuantiles de forma similar

> quantile(x)# calcula los principales cuantiles del objeto x

0 % 25 % 50 % 75 % 100 %

(26)

Gráficas

R nos facilita poder obtener gráficas y detallarlas con un título, subtítulo, nombrar los ejes e incluso poner texto dentro de las mismas gráficas.

Generar números aleatorios de una Uniforme

> x<- runif(50,0,2)# genera 50 números aleatorios en el intervalo (0,2)

> y<- runif(50,0,2)# genera 50 números aleatorios en el intervalo (0,2)

> plot(x,y,main="Titulo", sub="Subtitulo", xlab="X", ylab="Y",axes=T)# grafica los objetos x y y

> text(0.6,0.6,"texto (0.6,0.6)")# pone texto en la gráfica > abline(h=0.6,v=0.6)# pinta dos lineas referentes a la coordenada (0.6,0.6)

(27)
(28)

Histogramas

Generar números aleatorios de la Exponencial

##EXPONENCIAL > n<-100000 > t<-1/50 > d<-rexp(n,t) > d > hist(d,prob=TRUE,col="blue",main="Función

Exponencial",xlab="Números generados", ylab="Densidad") > curve(dexp(x,1/50),add=TRUE,col="black",lty=2,lwd=2) donde las ordenes

lty = Tipo de línea lwd= Ancho de línea

(29)
(30)

Ejemplos

Generar números aleatorios de la Normal

##NORMAL > n<-1000 > m<-2 > sd<-0.5 > d<-rnorm(n,m,sd) > d > hist(d,prob=TRUE,nclass=50,col="blue",main="NORMAL", ylim=c(0,0.8),xlab="Números generados", ylab="Densidad") > curve(dnorm(x,m,sd),add=TRUE,col="black",

(31)
(32)

Función de distribución acumulada empírica

Dada una muestra aleatoria X1,X2, . . . ,Xn. Sea S (x ) la función de distribución

empírica o muestral basada en la muestra definida como la proporción de valores muestrales menores o iguales que el valor especificado x es decir

S (x)=número de valores muestrales ≤x n

La función de distribución empírica se define en términos de las estadísticas de orden de la muestra, supongamos que las n observaciones muestrales son distintas, entonces S (x )=      0 si x<X(1) i n si X(i )≤x<X(i+1) 1 si X(n)≤x

(33)

Gráfica de la función empírica

Función ecdf

Si tenemos una muestra aleatoria y queremos saber como se comporta la gráfica de la función empírica, podemos utilizar la función ecdf la cual nos permitirá conocerla, por ejemplo si tenemos el vector

> x<-c(12,14,11,10,9,4,25,30,33,22)

Podemos graficar la distribución empírica de este vector con la siguiente línea de código

> plot(ecdf(x), col="blue", main="Distribución empírica", xlab="Valores ordenados")

(34)
(35)

Prueba Binomial

Ejemplo

Juan supone que un dado se encuentra sesgado a favor del numero cuatro. Decide realizar una prueba de hipótesis, cuando lanza el dado 15 veces y obtiene 6 veces el cuatro. Realizar la prueba conα =5 %

Solución

Como Juan supone que el dado esta sesgado a favor del número 4, podemos contruir la hipótesis alternativa, por lo que tenemos el siguiente contraste:

H0: p=1/6 vs H1: p>1/6

definimos T el número de veces que salio el 4 (O1, numero de elementos de la

clase 1), es decir, T=6 y como n=15,α =5 % y p∗=1/6 entonces

(36)

Como las hipótesis se plantearon al caso de cola superior, buscamos un cuantil t de tal suerte queP(T≥t)=0.05, o bien,P(T<t)=0.95. Entonces en R podemos calcular el cuantil usando las siguientes lineas de código:

> qbinom(c(0.05), size=15, prob=1/6, lower.tail=FALSE) [1] 5

entonces el cuantil es t=5. Sabemos que rechazamos H0 al nivel se significancia

αsi: T≥t, es decir, 6≥5, entonces rechazamos H0.

Valor p

pv= P(T≥tobs)= P(T≥6)= P(T>5) se puede calcular con la siguiente línea de

código

> pbinom(c(5), size=15, prob=1/6, lower.tail=FALSE) [0.02739411]

entonces 0.0274<0.05 tenemos que rechazamos H0.Por lo tanto, podemos decir

(37)

Prueba de Kruskal-Wallis

La prueba no paramétrica de Kruskal-Wallis consiste en analizar k muestras independientes, para k≥3. Si tenemos K muestras aleatorias independientes posiblemente de distintos tamaños de k poblaciones distintas.

Muestra 1 Muestra 2 · · · Muestra i · · · Muestra k

X11 X21 Xi 1 Xk1 X12 X22 Xi 2 Xk2 . . . . . . . . . . . . X1n1 X2n2 · · · Xini · · · Xknk

Donde se desea probar

H0: Todas las k poblaciones tienen

función de distribución idéntica vs

H1: Al menos una de las poblaciones

(38)

Supongamos que tenemos tres 3 muestras independientes con los siguientes valores Muestra 1 2.9, 3.0, 2.5, 2.6, 3.2

Muestra 2 3.8, 2.7, 4.0, 2.4 Muestra 3 2.8, 3.4, 3.7, 2.2, 2.0

R nos proporciona una manera rápida de obtener los resultados de esta prueba para analizar estas tres muestras de la siguiente manera:

> x <- c(2.9, 3.0, 2.5, 2.6, 3.2) # Observaciones de la muestra 1

> y <- c(3.8, 2.7, 4.0, 2.4) # Observaciones de la muestra 2

> z <- c(2.8, 3.4, 3.7, 2.2, 2.0) # Observaciones de la muestra 3

> kruskal.test(list(x, y, z)) Obteniendo

Kruskal-Wallis rank sum test data: list(x, y, z)

Kruskal-Wallis chi-squared = 0.7714, df = 2, p-value = 0.68

donde

chi-squared = Estadístico de prueba

(39)

Prueba Ji-Cuadrada

Sean N observaciones de una v.a X con distribución FX(x ) desconocida y dichas observaciones se pueden clasifican en K clases o el número de resultados posibles obtenidos al hacer cierto experimento, además las observaciones son una muestra aleatoria. Se necesita tener los datos a probar organizados en una tabla de distribuciones de frecuencias. Sea

(40)

Hipótesis

H0: FX(x )=F0(x ) ∀x vs H1: FX(x )6=F0(x ) p.a x

donde F0(x ) es la distribución completamente especificada que es propuesta por el

investigador. a) Se calcula p∗

j la probabilidad de que una observación de la v.a X este en la

clase j , bajo el supuesto de que la hipótesis nula H0 es verdadera (la

distribución que se quiere probar F0(x )).

b) Se calculan los valores esperados ej=p∗jN para j=1,2, . . . ,K que representan

las frecuencias esperadas en un total de N observaciones del experimento bajo la hipótesis nula H0.

(41)

Estadístico de prueba

El estadístico de prueba esta dado por:

Q= K X j=1 (fjej)2 ej

Regla de decisión

Regla de decisión

El estadístico Q se compara contra el cuantilχ2

(k−1,1−α). Rechazamos H0 al nivel

de significanciaαsi:

Q> χ2(K1),(1−α)

La Ji-Cuadrada es una aproximación que se puede usar con confianza cuando todas las ej>5. Si esto no ocurre, se sugiere colapsar clases adyacentes hasta que

(42)

Ejemplo

La altura en centímetros, que ha ganado una conífera en su primer año despues de ser plantada, se denota por la variable X . El valor de X se mide con una m.a de 86 coníferas y los resultados obtenidos fueron los siguientes:

X <35 35-45 45-55 55-65 >65 Total

fi 10 18 28 18 12 N=86

Probar la hipótesis de que la variable aleatoria X se puede modelar usando una distribución N(50,152) con un nivel de significanciaα =5 %.

Solución

Usando el siguiente código obtendremos la solución: > w<-pnorm(c(35), mean=50, sd=15, lower.tail=TRUE) > w

[1] 0.1586553

# Primer valor esperado

> e1<-w*86

# P(X<= b) derechas de cada intervalo

> x<- pnorm(c(45,55,65), mean=50, sd=15, lower.tail=TRUE) > x

(43)

# P(X<= a) Probabilidades izquierdas de cada intervalo

> y<- pnorm(c(35,45,55), mean=50, sd=15, lower.tail=TRUE) > y

[1] 0.1586553 0.3694413 0.6305587

# Valores esperados e2,e3,e4

> e234<-(x-y)*86 > e234

[1] 18.12760 22.45609 18.12760

# P(X>= 65)

> z<-pnorm(c(65), mean=50, sd=15,lower.tail=FALSE) > z

[1] 0.1586553

# Valor esperado e5

> e5<-z*85

> ei<-c(e1, e234, e5) > ei

(44)

# Frecuencias > fi<-c(10,18,28,18,12) # Estadistico > Q<-sum((fi-ei)ˆ2/ei) > Q [1] 2.507534 #Cuantil de Ji-Cuadrada > qchisq(c(0.95), df=4, lower.tail=TRUE) [1] 9.487729

Rechazamos H0 al nivel de significancia αsi: Q> χ(k−1,1−α), es decir,

2.507532 ≯ 9.487729, entonces no rechazamos H0. Por lo tanto podemos decir

(45)

Prueba de Lilliefors para normalidad

En esta prueba se tiene X1,X2, . . . ,Xn, una muestra aleatoria de tamaño n de una

población con función de distribución desconocida. Se calculan la media y desviación muestrales X=1 n n X i=1 Xi y S= v u u t 1 n−1 n X i=1 (XiX )2

Se calculan los valores estandarizadosde la muestra

Zi=

Xi−X

(46)

Esta prueba es como la Prueba de Kolmogorov-Smirnov solo que la función empírica S (x) es de los valores estandarizados y no de los originales. Se desea probar las hipótesis

H0: La muestra aleatoria proviene de

una población con distribución normal, con media y varianza desconocidas

vs

H1: La muestra aleatoria proviene de

una población con distribución distinta a la de una normal

Estadístico

El estadístico de prueba esta dado por la máxima distancia vertical

T1=sup

x |F (x )−S (x )|

Rechazar H0 al nivel de significanciaαsi:

T1>t1n−α

(47)

Ejemplo

Quince estudiantes de primer año tenían puntuaciónes de rendimiento de la siguiente manera

481 620 642 515 740 562 395 615 596 618 525 584 540 580 598

Pruebe para normalidad usando la prueba de Lilliefors usando un nivel de significanciaα =5 %

Los cálculos para obtener el resultado de esta prueba serán en base a las transparencias anteriores para familiarizarnos con las operaciones hasta el momento vistas y el entorno de R.

(48)

Solución

Las siguientes líneas muestran una posible solución al ejemplo. Primero calculamos X y S ## Datos > Xi<-c(481,562,525,620,395,584,642,615,540,515,596,580,740,618,598) ##Media y Desviación > M<-mean(Xi) > M [1] 574.0667 > S<-sd(Xi) > S [1] 78.8221

(49)

Ordenando los datos, estandarizandolos y evalundolos en la función F (x)=N(0,1) tenemos ## Datos ordenados > Xo<-sort(Xi) > Xo [1] 395 481 515 525 540 562 580 584 596 598 615 618 620 642 740

## Datos estandarizados ordenados

> Zi<-(Xo-M)/S > Zi [1] -2.2717824 -1.1807179 -0.7493668 -0.6224988 -0.4321969 -0.1530873 [7] 0.0752750 0.1260222 0.2782637 0.3036373 0.5193129 0.5573733 [13] 0.5827469 0.8618564 2.1051625 ## F(x)=N(0,1) > F<-pnorm(Zi,0,1) > F [1] 0.01154983 0.11885741 0.22681808 0.26680696 0.33279916 0.43916470

(50)

Como no hay empates podemos generar la función empírica con la función seq() y tomar las distancias de los datos ordenados y los evaluados en F (x )=N(0,1) de la siguiente manera ## Distribución empírica > Em<-seq(1/15,1,1/15) > Em [1] 0.06666667 0.13333333 0.20000000 0.26666667 0.33333333 0.40000000 [7] 0.46666667 0.53333333 0.60000000 0.66666667 0.73333333 0.80000000 [13] 0.86666667 0.93333333 1.00000000 ## Diferencia |F(x)-S(x)| > D<-abs(F-Em) > D [1] 0.0551168392 0.0144759282 0.0268180775 0.0001402889 0.0005341699 [6] 0.0391646962 0.0633353752 0.0168094838 0.0095950474 0.0473687677 [11] 0.0351046181 0.0886362103 0.1466985249 0.1277166053 0.0176385830

(51)

Solo falta tomar el valor máximo de estos valores para saber quien es el estadístico T=supx ¯ ¯F (x )−S (x ) ¯ ¯ ## Supremo > Sup<-max(D) > Sup [1] 0.1466985

y buscando en tablas del estadístico de Lilliefors el valor t0.9515 =0.219 y la regla de decisión esta dada por T1>t1n−α, es decir, 0.1466985249 ≯ 0.219. Por lo que se no

rechazamos la hipótesis H0, por lo tanto la muestra de los estudiantes proviene de

(52)

Prueba de Shapiro-Wilk para normalidad

Esta prueba consta de una muestra aleatoria de tamaño n, X1,X2, . . . ,Xn, una

función F (x ) desconocida. Se calcula el valor

D= n X i=1 (XiX )2= n X i=1 Xi2−nX2

donde X es la media muestral.

Se ordenan la muestra en orden ascendente

X(1)≤X(2)≤ · · · ≤X(n)

Se buscan en tablas los coeficientes a1,a2, . . . ,ak donde k es aproximadamente n2,

(53)

Queremos contrastar las hipótesis H0: F (x ) se distribuye normal con

media y varianza desconocida vs

H1: F (x) no es una distribución normal

Estadístico

Se calcula el estadístico W = 1 D " n X i=1 ai ³ X(ni+1)−X(i )´ #2 Observación

W cercano a 1 significa que la muestra se comporta como una muestra normal, si W es muy pequeño, lejos de 1, no se parece a la normal.

(54)

Rechazar H0 al nivel de significanciaαsi:

W<wαn

donde wαnes el cuantil que se busca en tablas del estadístico de Shapiro-Wilk. R nos permite realizar este contraste de la siguiente manera:

>z<-c(-1.79, 1.04, 0.46, 0.99, 0.27, 0.76, -0.43, -0.95, 0.14, 0.59) > shapiro.test(z)

Obteniendo

Shapiro-Wilk normality test data: z

W = 0.8914, p-value = 0.1756 donde

(55)

Prueba de Kolmogorov-Smirnov

Esta prueba se basa en las diferencias entre la hipotética función de distribución acumulada F∗(x ) y la función de distribución empírica de la muestra Sn(x )x .

Sea X1,X2, . . . ,Xnuna m.a de una v.a X asociada a una función de distribución

desconocida, denotada por FX(x ).

Sea F∗(x ) la función de distribución completamente especificada con la que se

haran las hipótesis (H0). Para el caso de dos colas tenemos las hipótesis

H0: FX(x )=F∗(x ) ∀x vs H1: FX(x )6=F∗(x ) p.a x

Estadístico

El estadístico de prueba esta dado por D=sup

x |F

(x )S

(56)

Ejemplo

Diez estudiantes realizan una prueba de 100 reactivos, obteniendo los siguientes resultados

95 80 40 52 60 80 82 58 65 50

Probar la hipótesis nula que la proporción de respuestas correctas esta dada por la función F∗(x )=    0 x<0 x2(32x) 0x1 1 x>1 Solución

Para la solución de este problema, nombramos un objeto con los datos de los estudiantes, generamos la funcion F∗(x ) y realizamos la prueba de

(57)

> x<- c(0.4,0.5,0.52, 0.58, 0.60, 0.65, 0.8, 0.8, 0.82, 0.95) > F<-xˆ2*(3-2*x)

> ks.test(x,F)

Por lo que R nos da los siguiente

Two-sample Kolmogorov-Smirnov test data: x and F

D = 0.3, p-value = 0.7591

alternative hypothesis: two-sided Warning message:

(58)

Si nuestro ploblema fuera realizar la prueba de dos colas con una función F∗(x )=N(5,6,122) y teniendo la muestra

4.8 6.2 6.0 5.9 6.6 5.5 5.8 5.9 6.3 6.6 6.2 5.0 tendríamos las siguientes lineas de código

> x<-c(4.8, 6.2, 6.0, 5.9, 6.6, 5.5, 5.8, 5.9, 6.3, 6.6, 6.2, 5.0) > ks.test(x, pnorm, mean=5.6, sd=1.2)

Obteniendo el siguiente resultado

One-sample Kolmogorov-Smirnov test data: x

D = 0.3162, p-value = 0.1814 alternative hypothesis: two-sided Warning message:

In ks.test(x, pnorm, mean = 5.6, sd = 1.2) : cannot compute correct p-values with ties

(59)

Lectura de archivos

En R es muy sencillo la lectura de archivos externos. El usuario puede utilizar editores de texto para llevar a cabo este tipo de acciones.

Función read.table()

Para poder leer una hoja de datos directamente, el archivo externo debe reunir las condiciones adecuadas. La forma más sencilla es:

La primer línea del archivo debe contener el nombre de cada variable de la hoja de datos.

En cada una de las siguientes líneas, el primer elemento es la etiqueta de la fila, y a continuación deben aparecer los valores de cada variable.

Así, el archivo tiene la forma siguiente:

Precio Superficie Área

01 52 111 830

(60)

Las instrucciones para realizar la lectura de un archivo con extensión .txt es la siguiente:

En Windows

> casas<- read.table("G:/home/mizra/archivo.txt")

En Linux

> casas<- read.table("/home/mizra/archivo.txt")

(61)

En ocasiones no se dispone de etiquetas por renglón. En este caso tambien es posible la lectura de los datos y R añadirá unas etiquetas predeterminadas. Así, el archivo tendra la siguiente forma:

Precio Superficie Área

52 111 830

54 128 710

56 147 987

el cual podrá leerse utilizando un parámetro adicional.

En Windows

> casas<- read.table("G:/home/mizra/archivo.txt", header=T)

En Linux

(62)

Como leer una un archivo de Excel y OpenOffice

Función attach()

La función attach() puede tener como argumento el nombre de una lista o de una hoja de datos y permite conectar la lista o la hoja de datos directamente.

Función read.csv()

La función read.csv() nos ayudará para poder leer un archivo desde Excel. La indicación necesaria es guardar una copia de nuestro archivo de Excela con extención .csv

(63)

Teniendo ya una copia de nuestro archivo con extensión .cvs las instrucciones para cargar nuestro archivo de Excel en R son las siguientes:

En Windows

data<-read.csv("G:/home/mizra/mieloma.csv") attach(data) data

En Linux

data<-read.csv("/home/mizra/mieloma.csv") attach(data) data

(64)

Si nosotros estamos interesados solo en algunos datos de nuestra hoja de cálculo, por decir los primeros 8 pacientes, R nos proporciona una manera sencilla para usar estos datos. Se tiene que seleccionar la parte que se requiere de nuestra hoja de cálculo y copiarla

(65)

Enseguida se escriben las siguientes instrucciones

En Windows

data<-read.table(" clipboard") data

En linux

data<-read.table("clipboard") data Obteniendo > data<-read.table("clipboard") > data V1 V2 V3 V4 1 t estatus x1 x2 2 18 1 0 0 3 9 1 0 1 4 28 0 0 0 5 31 1 0 1

(66)

Gráficos

R es un paquete muy importante y versátil en cuestiones gráficas. Es posible utilizarlas para mostrar una amplia variedad de gráficos estadísticos. En R existe una lista de parámetros gráficos que pueden utilizarse para adaptar los gráficos.

Ordenes gráficas

Dos grupos de ordenes gráficas son:

Alto nivel. Son funciones que crean un nuevo gráfico, posiblemente con ejes, etiquetas, títulos, etc

Bajo nivel. Son funciones que añaden información a un gráfico existente, tales como puntos adicionales, líneas, curvas y etiquetas

(67)

Argumentos para gráficos de alto nivel

Existe una serie de argumentos que pueden usarse en los gráficos de alto nivel.

add=TRUE

Obliga a la función a comportarse como una función de nivel bajo, de modo que el gráfico que genere se superpondrá al gráfico actual, en lugar de borrarlo (solo en algunas funciones)

axes=FALSE

Impide que se generen los ejes. Útil para generar ejes personalizados usando la función axis. El valor predeterminado es axes=TRUE, que incluye los ejes.

main="cadena"

(68)

sub="cadena"

Pone un subtítulo al gráfico, aparece abajo del eje X con tamaño de letra pequeño

type=

Este argumento controla el tipo de gráfico producido, de acuerdo a las siguientes instrucciones:

type="p" Dibuja puntos individuales, este es el valor predeterminado type="l" Dibuja líneas

type="b" Dibuja puntos y lineas que los unen

type=" o" Dibuja puntos y lineas que los unen, cubriéndolos type="h" Dibuja líneas verticales desde cada punto al eje X

(69)

Función plot()

Como ya hemos visto, una de las funciones gráficas más útiles en R es la función plot(), que es una función genérica, es decir, el tipo de gráfico producido depende de la clase del primer argumento.

Por ejemplo, si x e y son vectores

> x<-c(12,11,35,15,44,1,145,87,65,21,44) > y<-c(15,44,78,65,32,52,88,17,24,51,61) > plot(x,y)

(70)
(71)

Otras representaciones gráficas

Gráficos de comparación de distribuciones

Existen otras funciones gráficas que producen otros tipos de gráficos, para poder comparar distribuciones.

qqnorm(x)

Representa el vector x sobre los valores esperados normales

qqline(x)

Añade una recta que pasa por los cuantiles de la distribución y de los datos.

qqplot()

Esta función nos permitirá analizar mediante un gráfico conocido como cuantil-cuantil o “Q-Q plot” examinar datos cuidadosamente, comparando las

(72)

Por ejemplo, si generamos 50 números pseudoaleatorios normales y exponenciales, y hacemos la gráfica Q-Q plot de la siguiente manera

> z<-rnorm(50,0,1) > y<-rexp(50,0.5)

> qqplot(z,y, main="Q-Q plot", xlab=" exp", ylab="norm", pch=20) > qqline(y)

(73)

Gráficas de cajas

Función boxplot()

Esta función nos permitirá comparar gráficamente dos muestras mediante un diagrama de cajas.

Por ejemplo, si tenemos dos métodos con los siguientes valores

Método A:79.98, 80.04, 80.02, 80.04, 80.03, 80.03, 80.04, 79.97, 80.05, 80.03, 80.02, 80.00, 80.02

Método B:80.02, 79.94, 79.98, 79.97, 79.97, 80.03, 79.95, 79.97

Queremos comparar gráficamente estos dos métodos. Generando dos vectores con estos valores y utilizando la función boxplot()

>A<-c(79.98, 80.04, 80.02, 80.04, 80.03, 80.03, 80.04, 79.97, 80.05, 80.03, 80.02, 80.00, 80.02)

(74)

Obtenemos

cuyo gráfico nos muestra que el primer grupo tiende a tener mayores resultados que el segundo grupo.

Referencias

Documento similar

Entonces la serie de Fourier, correspon- diente a esta función, es convergente en todos los puntos y además la suma de dicha serie S ( x ) es igual al valor de la función f ( x ) en

Distribución Hipergeométrica multivariada: Distribución de probabilidad de las variables aleatorias x 1 , x 2 ,…, x m ; que representan el número de elementos obtenidos

Para la determinación de la varianza, salvo que las variantes \ x sean independientes o estén perfectamente correlacionadas, en cuyos casos no es necesario calcular nada más que

As an application of the main tool for the above result, we also prove that associativeness can be removed in (1) whenever A is either a nondegenerate non-commutative Jordan

Objetivo matemático: Antes de realizar el juego, aprovecharemos para trabajar la tabla del 4 con cartas, ya que todo el alumnado estará expectante y atento a lo que vamos a hacer,

Montrer (sans passer par une r´ esolution explicite) que si un champ de vec- teurs lin´ eaire de dimension 2 a une orbite p´ eriodique de p´ eriode T 0 , alors toutes ses orbites

• Para calcular el volumen del peróxido de hidrógeno requerido (35%) que debe inyectarse en el agua de riego durante 45 minutos, usar la siguiente fórmula: V(cc)= 2,5 x C (ppm) x

Así mismo, todos tenemos interés en fortalecer el Estado Republicano, la democracia y por lo mismo acercar la política a los ciudadanos y en lo relativo a la justicia social,