Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes de Rstudio ., Apuntes de Análisis de Datos y Métodos Estadísticos

Apuntes de los tutoriales de R para exámenes de análisis de Datos

Tipo: Apuntes

2020/2021

Subido el 10/02/2021

Roger_Casas_01
Roger_Casas_01 🇪🇸

1 documento

1 / 57

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Anàlisi de Dades
TUTORIALS 1
3. Dades agrupades i transformació de Dades amb R
Dades Agrupades
-Abans que res instal·lar “actuar” i: library(“actuar”)
-Sumatori de freqüències: sum(nom$nj1 )
- 5 Nombres resum2 de dades agrupades: quantile(nom)
-Diagrama de caixa de dades agrupades: boxplot(quantile(nom)),range=03
-Desviació típica de dades agrupades:
osqrt(emm(nom,order=2)-mean(noml)^2)
-Límits dels intervals d’una taula de freqüències:
ocj <- c(04,k,k,k,k,k ... k,)
-Freqüències absolutes d’una taula de freqüències:
onj <- c(k,k,k,k,k,k ... k)
oCom es pot comprovar: Cj = classes i Nj = freqüències
-Crear objecte de dades agrupades (taula de freqüències) a partir dels
punts anteriors:
1 nj és la freqüència absoluta del document de la taula de freqüències, si es vol sumar una altra columna
es posa el nom de la columna corresponent.
2 Mínim, Q1, Mediana, Q3 i màxim.
3 Afegim l'argument «range=0» perquè els bigotis arribin al màxim i mínim. Pot ser qualsevol nombre k.
4 S’han d’entrar els límits inferiors i superiors, per això es marca els 0.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39

Vista previa parcial del texto

¡Descarga Apuntes de Rstudio . y más Apuntes en PDF de Análisis de Datos y Métodos Estadísticos solo en Docsity!

Anàlisi de Dades TUTORIALS

3. Dades agrupades i transformació de Dades amb R

Dades Agrupades

- Abans que res instal·lar “actuar” i: library(“actuar”)

- Sumatori de freqüències: sum(nom$nj^1 )

- 5 Nombres resum^2 de dades agrupades: quantile(nom)

- Diagrama de caixa de dades agrupades: boxplot(quantile(nom)),range=0^3

- Desviació típica de dades agrupades:

o sqrt(emm(nom,order=2)-mean(noml)^2)

- Límits dels intervals d’una taula de freqüències:

o cj <- c(0^4 ,k,k,k,k,k ... k,)

- Freqüències absolutes d’una taula de freqüències:

o nj <- c(k,k,k,k,k,k ... k) o Com es pot comprovar: Cj = classes i Nj = freqüències

- Crear objecte de dades agrupades (taula de freqüències) a partir dels

punts anteriors: (^1) nj és la freqüència absoluta del document de la taula de freqüències, si es vol sumar una altra columna es posa el nom de la columna corresponent. (^2) Mínim, Q1, Mediana, Q3 i màxim. (^3) Afegim l'argument «range=0» perquè els bigotis arribin al màxim i mínim. Pot ser qualsevol nombre k. (^4) S’han d’entrar els límits inferiors i superiors, per això es marca els 0.

Anàlisi de Dades TUTORIALS

o X <- grouped.data(Group = cj, Frequency =nj) o A partir de la taula es calculen els resum i altres dades desitjades Transformacions de Dades

- Primers casos d’un conjunt de dades: head(nom)

- Valors resum d’una variable: describe(nomconjunt$nomvariable)

Transformacions lineals

- Transformació líneal de nova variable:

o Nova variable<- (antiga variable-a)/b o Considerant la forma del canvi d’origen:

 y =

x − a

b

on  y = nova variable  x = antiga variable

- Crear marc de dades a partir de la nova variable

o Nom del marc nou <- data.frame(nova variable)

- Arrodonir els decimals d’un marc de dades:

o Nomdelconjunt$nomdevariable<- round(nomdelconjunt$nomdevariable,k) o On k és el nombre de posicions decimals que volem arrodonir. Si k= arrodonim a 0,00.

Anàlisi de Dades TUTORIALS

- Capturar elements especifics de fitxers: usar l'operador $ --- per exemple,

file.info("mytest.R")$mode --- per capturar elements específics.

- Renombrar fitxers: file.rename (“nom antic”, “nom nou” )

- Copiar fitxers: file.copy (“nom fitxer original” “nom fitxer còpia”)

- Mostrar el camí relatiu a un fitxer: file. path (“nom del fitxer”)

- Nom de camí independent de la plataforma

o file.path(“nom de carpeta1”,”nom de carpeta2” ... “nom de carpeta n”

- Ex: Creeu un directori al directori de treball actual anomenat «testdir2» i

un subdirectori anomenat «testdir3», fent-lo en una única ordre usant dir.create() i file.path(): o dir.create(file.path("testdir2","testdir3"),recursive = TRUE ) Percentils i quantils:

- Quantile()

- Quantile (prob=10)  percentil 10

- Línia en un gràfic

o Abline(h/v/d= num, col=red  H= horitzontal  V= vertical  D= diagonal?

Distribució normal a R

Anàlisi de Dades TUTORIALS

- Mitjana: mean()

- Desvest: sd()

- Histograma amb freqüències relatives a l’eix vertical:

o Hist(nom,prob=TRUE)

- Comparar amb una corva de densitat normal:

o curve(dnorm(x,mean=m,sd=s),add=TRUE).

- Resum numèric complet: describe()^6

- comprovar la freqüència relativa per a punts a sota de m - 3*s:

o sum(punts<m-3*s)/length(punts) o Això ens està dient que per a l'interval «m - 3*s» hi ha una freqüència relativa observada de 0%.

- freqüència relativa observada de l'interval «(m, m+s)»:

o sum(punts > m & punts < m + s) / length(punts) o Estàs dient, dona’m la freqüència dels punts més grans que m i (&) els punts més petits que m+s simultàniament. o Comparant la freqüència esperada de l'interval (m, m+s) que és igual a 0.34134 amb la freqüència relativa observada igual a 0.2941176, veiem que no estem massa lluny de la normal un altre cop.

- freqüència relativa observada de l'interval (m - 2*s, m - s):

o sum( punts >m-2*s & punts< m-s) / length(punts)

- obtenir el percentatge de casos que cauen a la dreta de z = 2, on z és un

valor estandaritzat: o pnorm(2, lower.tail=FALSE)

- Per comprovar un valor a l'esquerra hem d'establir «lower.tail=TRUE». Per

exemple per comprovar el percentatge de casos a l'esquerra de z = 0, podeu entrar pnorm(0,lower.tail=TRUE). (^6) A stata, el coeficient de Kurtosis de la distribución normal és 3 i no 0

Anàlisi de Dades TUTORIALS

 On y correspon al nom de la variable dependent i x al de la independent  Coefficient: ordenada a l’origen  Parcial: pendent o S’ha d’assignar lm a un nom (nom <- lm (Y~X)) introduir el nom després

- Dibuixar la recta de regressió al diagrama de dispersió

- abline ( nom que hem assignat a la funció pendent de la recta de regressió)

- P. Ex: fit<- lm(Y~X)

o abline(fit)

- Predir valors en la recta de regressió:

o predict(nom de la recta,data.frame(nom de x=70)) o P.ex: predict (fit,data.frame(parcial=70))

- Sumaritzar la recta de regressió

o Summary(nom de la recta de regressió) o Entre altres coses dóna el valor per al coeficient de determinació (R^2) (també anomenat R-quadrat, Multiple R-squared en anglès)

- Diagrama de residus

o Nom nou <- resid(nom de la recta de regressió)

- Podem ara fer el diagrama dels residus. També afegirem una etiqueta a l'eix

vertical amb «ylab» i un títol al diagrama amb «main». L'ordre és

- plot(nom del diagrama de residus~nom de x, ylab="Residus", main="Diagrama

de residus").

- També és convenient afegir una línia horitzontal a 0, atès que hi ha residus

positius i negatius, i perquè l'anàlisi dels residus sigui apropiat, els residus

Anàlisi de Dades TUTORIALS

haurien d'estar distribuïts a sobre i a sota de la línia de regressió sense cap patró específic. Dibuixarem doncs una línia horitzontal amb abline(0,0)

- Histograma del diagrama de residus

o hist(nom del diagrama de residus)

- Identificar valors influents

o Identify (Y~X) o obteniu un diagrama de dispersió entre Y i X. Podeu clicar sobre els diferents casos que voleu identificar, i un cop que premeu «Esc» (la tecla escape), el R us mostrarà el número de cas (número d'observació) dels casos en la mateixa gràfica, és a dir la fila al marc de dades on podeu trobar aquests casos. Prement Esc un altre cop el R imprimirà els números dels casos i us retornarà a tutorial o Una altra eina útil és obtenir un diagrama de dispersió amb etiquetes mostrant el número de cas. Per fer això, primer obtenim el diagrama de dispersió amb amb cercles en color blau clar, de manera que podem imprimir després el número de cas a sobre, amb  plot(nom de y~nom de xl, col="lightblue"). o Imprimim les etiquetes amb el número de cas amb  text(nom de y~ nom de x, labels=rownames(nom del conjunt)).  P .ex: text (final~parcial, labels=rownames(exam))  On:  Final es el nom de y  Parcial es el nom de x  Exam es el nom del conjunt on estan agrupats x i y

- Per eliminar aquests casos, ho podem fer entrant l'ordre

o Nom del conjunt [-c(2,18),]

Anàlisi de Dades TUTORIALS

Mètode log-log

- Es transforma els valors de la variable en els seus logaritmes naturals i es

calcula la regressió entre les variables transformades. Primer cal transformar les variables i assignar-les-hi un nom: o Lx <- log(x) o Ly <- log (y) o On x i y són els noms de la variable independent i dependent en el conjunt de dades. o S’estableix altre cop el diagrama de dispersió amb les variables transformades amb plot(Ly ~ Lx ) i s’observa el resultat possiblement la regressió surti ara lineal amb el qual, si es traça una recta amb la funció abline(lm(Ly ~Lx) es veurà millor. o Podem calcular ara la línia de regressió i realitzar una predicció per a un valor de publicitat igual a 4.5. Primer obtenim els coeficients de la regressió per a les variables transformades amb lm(ly~lx). o Podem predir ara per a una publicitat (x) igual a 4.5, però recordeu que la regressió s'ha executat amb les variables transformades, de manera que hem d'usar log(4.5). L'ordre és aleshores:  predict(lm(ly~lx),data.frame(lx=log(4.5))). [= 2.91418] o El valor que heu obtingut, 2.921418, és en realitat log(vendes (y)) i no simplement vendes (y). Per recuperar el valor de vendes (y), heu d'aplicar la funció exponencial (atès que exp(log(x)) = x). Ho podeu fer entrant exp(2.921418). o Podríeu haver fer això en un únic pas amb:  exp(predict(lm(lvendes~lpub),data.frame(lpub=log(4.5)))) o però és una ordre realment llarga. Amb el procediment que hem presentat és possible ajustar altres transformacions, com ara el model semi-log, que sols transforma la variable dependent.

Anàlisi de Dades TUTORIALS

Seqüències de números i vectors

Seqüències de números:

- Fer una seqüència:

o Utilitzar l’operador “:”  P.Ex: 1:20 = 1,2,3,4,5,6,7,8,9,10...  15:1= 15,14,13,12,11,10...  Per saber més sobre la funció: ?:

- Funció seq()

- Serveix pel mateix que “:”, podem fer seq(1,20)

o Si volem una certa longitud seq(x,y, length=K) o Si volem una cera longitud d’intervals seq(x,y,by=K)

- Suposem que no sabem la longitud de la variable my_seq, però volem generar

una seqüència d'enters de 1 a N, on N representa la longitud del vector my_seq. En altres paraules, volem un nou vector (1, 2, 3, ...) que és de la mateixa longitud que my_seq. Podem fer: o 1:length(my_seq) o O o seq(along.with = seq(x,y,length=K)) o Normalment hem posat un nom a seq(x,y,length=K), per tant la funció queda: o seq(along.with = my_seq) per exemple o També es pot fer  seq_along(my_seq)  On my_seq és una seqüencia de nombres seq(x,y,length=K)

Anàlisi de Dades TUTORIALS

o!A ” (no A) negació de A

- Vectors de caràcters

- Fer un vector de caràcters:

o nom<- c(“El”, “meu”, “nom”, “és”) o Dóna un vector de 4 caràcters.

- Convertir un vector de X caràcter en un de un:

o Paste (c(“El,”meu”,”nom”,”és”, collapse= “ “)  Sobre tot deixar un espai entre les últimes cometes.  Si en comptes de collapse posem sep= “” o “ “ o “-“ diem que el vector resultant separi en espais els dos vectors multiplicats o no o que ho faci amb un guió.

- Concatenar vectors o caracters:

o c (nom del vector/vector/caracters, “nom del vector/vector/caracters”)

Valors absents

- Notació de valor absent a R: NA

- vector que contingui 1000 valors d'una distribució normal estàndard:

o rnorm(1000)

Anàlisi de Dades TUTORIALS

- vector que contingui 1000 Nas

o rep(NA, 1000)

- seleccionar 100 elements aleatòriament entre 2000 valors (combinant y i

z) de manera que no sapiguem quants NA tindrem al final o o quina posició ocuparan en el nostre vector final: o my data <- sample (c(y,z),100)

- Primer preguntem-nos on estan ubicats els NA a les nostres dades. La

funció is.na() ens diu si cada element d'un vector és NA. Crideu is.na() amb my_data i assigneu el resultat a my_na: o my_na<- is.na(my_data) o Seguidament, imprimir my_na per veure el resultat obtingut, on hi hagi TRUE l’element corresponent de my_data és NA. On hi hagi FALSE l’element corresponent de my_data és un dels valors de la normal estàndard extret de forma aleatòria anteriorment. o També es pot fer : my_data == NA  La raó per la qual s’obté un vector de tots NA és que NA no és realment un valor, sinó simplement un indicador de lloc d'un valor que no està disponible. Consegüentment, l'expressió lògica està incompleta i R no té cap altra opció que retornar un vector de la mateixa longitud que my_data que conté tots NA.

- Sota la superfície, R representa TRUE amb el número 1 i FALSE amb el

número 0. En conseqüència, si calculem la suma d'un conjunt de TRUE i FALSE, obtindrem el nombre total de TRUE.

Anàlisi de Dades TUTORIALS

- Recordeu que «!» ens dóna la negació d'una expressió lógica, així que!

is.na(x) es pot llegir com «no és NA». Conseqüentment, si volem crear un vector anomenat y que conté tots els valors no-NA de x, podem usar o y<- x[!is.na(x)].

- Recordeu que l'expressió y > 0 ens donarà un vector de valors lògics de

la mateixa longitud que y, amb TRUE corresponent a valors de y que són més grans que zero i FALSE corresponen a valors de y que són més petits i iguals a zero. o y[y>0] o Donarà un vector de tots els elements positius de y que són alhora tots els elements positius del vector original x.

- requerim sols valors de x que són tant no absents COM TAMBÉ mes

grans que zero_._ o x[!is.na(x) & x > 0]  Dóna el mateix que y[ y > 0]

- Molts llenguatges de programació usant el que s'anomena «indexació

basada en zero», cosa que significa que el primer element d'un vector es considera l'element 0. L'R usa «indexació basat en 1», cosa que (com heu endevinat) vol dir que el primer element d'un vector es considera que és l'element 1.

- subconjunt del 3er, 5è i 7è elements de x

o x[c(3,5,7)]

Anàlisi de Dades TUTORIALS

o Sempre us hauríeu d'assegurar de que el que demaneu està dins del rang d'elements del vector amb el qual esteu treballant.

- índexs enters negatius.

- x[c(-2,-10)] o bé x[ -c (2, 10)]

- Mentre que x[c(2, 10)] ens dóna SOLS el segon i el desè elements de x x[c(-2, -

10)] ens dóna tots els elements de x EXCEPTE el segon i el desè. Es poden aplicar conceptes semblants per vectors de noms

Anàlisi de dues variables categòriques amb R

- Obtenir taula de contingència /distribució conjunta

o Table(nom de la taula cas per cas) o Table(dist)

- Obtenir diagrama de barres apilades:

o Barplot(nom de la taula de contingència, legend=TRUE)

- Transposar una taula (files = columnes i columnes = files)

o t(nom de la taula) o t(“dist”) o Per defecte el R fa els diagrames de barra amb la variable columna a l'eix horitzontal, i de forma apilada.

Anàlisi de Dades TUTORIALS

o Dist és el nom o 1 per files 2 per columnes

- Distribucions condicionals

o Fem servir un altre cop la funció prop.table() amb dos arguments. El primer és la taula i el segon és un incidador de la variable per la qual volem condicionar. Per exemple, per condicionar per la variable fila hem d'entrar 1. Entreu ara l'ordre apropiada per obtenir les freqüències relatives de la distribució de «transport» condicionada a «comarca». o Prop.table(dist,1) o 1 per condicionar per files o 2 per condicionar per columnes

- Quan observem que les distribucions condicionals es veuen diferents

diem que les variables categòriques estan relacionades.

- Barplot de distribucions condicionals

- Una altra manera convenient de mirar si les distribucions condicionals són

iguals o diferents és mitjançant una gràfica de barres. Posant tot a la mateixa escala és fàcil jutjar si hi ha diferències en les proporcions de les categories de la variable que volem analitzar. Per exemple per representar el diagrama de barres de la variable fila («comarca») condicionada a la variable columna («transport») podem donar l'ordre o barplot(prop.table(dist,2),legend=TRUE). o 1 per columnes o 2 per files

Anàlisi de Dades TUTORIALS

- diagrama de barres de la distribució condicional de la variable columna

condicionada a la variable fila. o barplot(t(prop.table(dist,1)),legend=TRUE) o Dist és el nom de la taula de contingència Entrar dades des d’una taula de contingència:

- 1. entrar les freqüències absolutes de la distribució conjunta.

o freq <- c(4,2,0,1,5,1,0,1,6)

- Crear una taula a partir de les freqüències que s’han desat a l'ordre

anterior

- mitjançant la funció matrix(). Li hem de dir que hi ha tres columnes (ncol=3), i

que les dades les hem entrades per files (byrow=TRUE), a més li hem de dir que el tipus és «table». o lamevataula<-as.table(matrix(freq,ncol=3,byrow=TRUE))

- Entrar el nom de les categories de cada variable:

o usem les funcions colnames() i rownames(). Per exemple per entrar el nom de les categories de la variable columna entrem o colnames(lamevataula) <- c("Barcelona","Madrid","Sevilla"). o rownames(lamevataula) <- c("Barça","Real Madrid","Sevilla") o Ja tenim la taula creada. Ara podem fer l'anàlisi de la relació entre les dues variables categòriques com vam fer amb l'exemple anterior. Per exemple obteniu el diagrama de barres de la distribució condicional de la preferència d'equip de futbol condicionada a la ciutat de residència, mitjançant l'ordre.