Herramientas de usuario

Herramientas del sitio


math_langs:r

¡Esta es una revisión vieja del documento!


R

Es un lenguaje y entorno de programación para análisis estadístico y gráfico.
Existe un IDE para trabajar con el lenguaje denominado RStudio.

Básico

Funciones básicas

  • dim(variable): Devuelve la dimensión de una variable (filas x columnas).
  • class(variable): Devuelve el tipo de datos que es la variable.
  • summary(variable): Devuelve un resúmen (máximos, mínimos, número de elementos de una categoría…) de una variable (matriz, data.frame…).

Mostrar por pantalla:

  • print(variable): Muestra por pantalla un texto.
  • printf(“formato”, variables): Muestra por pantalla un texto formateado.

Strings:

  • s = paste(s, “Delta”, sep=“”): Concatena al string s la palabra Delta con ninguna separación.

Trabajo con paquetes:

Para la ayuda:

  • ?? funcion: Busca en la ayuda disponible los registros que casan con el nombre de esta función.
  • help funcion: Muestra la ayuda para la función.

Variables

Variables categóricas

En R son denominadas factor y sus categorías levels.

Podremos crear una variable categórica a partir de una que no lo es (asignando los distintos valores que tiene como levels) de la siguiente forma:

Dictamen <- factor(Dictamen)

Podremos ver los levels de una variable factor mediante:

levels(Dictamen)

Podremos cambiar los nombres de los levels mediante:

levels(Dictamen) <- c("positiu","negatiu")''

Conjuntos de datos

Generación

  • rep: genera una serie de valores repeticas veces.
> rep(1:4, 2)
[1] 1 2 3 4 1 2 3 4
> rep (c(1,2), 2)
[1] 1 2 1 2
> rep (0, 5)
[1] 0 0 0 0 0

Acciones sobre un conjunto de datos

Para cambiar los valores de un conjunto de datos lo podremos hacer como sigue (aquí cambia los registros de Ingressos que tengan valor 99999999 o 0 por NA):

Ingressos[Ingressos == 99999999 | Ingressos == 0] <- NA

Si en vez de convertirlos a NA los quisiesemos eliminar (el ejemplo elimina los registros que no tienen 0 ni en la columna 1, en la 3, en la 6 ni en la 8):

dd <- dd[dd[,1] != 0 & dd[,3] != 0 & dd[,6] != 0 & dd[,8] != 0,]

Si quisiesemos ver un conteo del contenido podríamos hacer (el ejemplo devuelve el número de registros que tienen en la columna 1 un 0):

table(dd[,1]==0)

Contar el número de elementos que tienen en la primera variable el valor concreto…

sum(datos[,1] == 2)

Seaparar unos datos Data en dos tablas y de forma aleatoria:

learn <- sample(1:150, 75)
mydata.learn <- Data[learn, ]
mydata.test <- Data[-learn, ]

Vectores y matrices

Creación de una matriz:

> A <- matrix ( c (1 ,2 ,3 ,4) ,2 ,2 , byrow = TRUE )
> A
     [,1] [,2]
[1,]    1    2
[2,]    3    4

> a <- matrix ( c (1 ,2 ,3 ,4) ,4 ,1)
> a
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
  • scale(X) centra y reduce (normaliza) la matriz X.
  • Para aplicar una función sobre una matriz utilizaremos apply. Esta recibe como primer parámetro la matriz, como segundo sobre qué se aplicará (1 = filas, 2 = columnas, c(1,2) = filas y columnas) y la función: apply (x, 2, sum).
  • Con la combinación de signos %*% podemos hacer el dot product (producto escalar) :?: (no sé si es dot product o scalar product, también existe %o%).
  • diag(x) recibe un vector x y lo coloca como diagonal en una matriz de 0.
  • t(x) recoge la matriz traspuesta de x.

Data Frame

Para crear un Data Frame a partir de dos vectores de dimensión igual:

dd <- data.frame(x,y)

Para leer un archivo de datos (un csv separado por tabs, columnas…) y cargarlo en un data.frame usaremos:

datos <- read.table("alpha.csv",header=T)
  • attributes (var): Devuelve las propiedades\acciones que se pueden hacer sobre el dataframe var.
  • names(var): Devuelve los nombres de las columnas del data frame.
  • variable$nombre_columna: Acceso a una columna del dataframe.

Mediante attach(var) haremos accesibles (sin necesidad de acceder por dataframe$columna sino como variables) las columnas del data frame.
Para eliminar una columna de un data frame: datos$beta2=NULL

Control de flujo

If

if(datos$beta1[i]==1)
    producto_preferido[i] = 1

Bucle for

producto_preferido <- nrow(252)
for (i in 1:252) {
	producto_preferido[i]=NA
	if(datos$beta1[i]==1)
		producto_preferido[i] = 1
}

> for (i in 1:10) {
	print(c(sum(datos[,i] == 1) / nrow(datos), sum(datos[,i] == 2) / nrow(datos)));
}

Funciones

Para crear la función p.xk a la que se le pasan dos parámetros, lo que devuelve es el resultado de último comando ejecutado.

p.xk <- function(vec,fac){nk <- as.vector(table(fac)); n <- sum(nk); xk <- tapply(vec,fac,mean);
           txk <- (xk-mean(vec))/(sd(vec)*sqrt((n-nk)/(n*nk))); pxk <- pt(txk,n-1,lower.tail=F)}

Estadística

Básico

Generación de una distribución normal:

x <- rnorm(50)

Recoger la desviación estándard de una matriz, un vector o un dataframe:

sd(X)

Aunque también podríamos sacarlas (pero centradas con center o escaladas con el vector unidad con scale) con:

pc1 = prcomp(X, scale=T)
pc1$sdev

Objetos estadísticos

Regresión linear (lm)

Para crear un objeto “regresión linear” a partir de las columnas x,y de un dataframe deberemos indicarlo con ~:

reg1 <- lm(dd$y ~ dd$x, data=dd)

Regresión local (loess)

reg2 <- loess(y ~ x, data=dd)

Gráficos

Funciones

  • plot(x): Muestra en un gráfico de puntos los elentos de x. Podríamos hacer también plot(x,y), que sería poner x en función de y.
  • hist(x): Muestra en un histograma la forma de x.

Como...

  • Hacer plots 3d: los encontrarás en el paquete rgl. Contiene funciones como plot3d

Avanzado

Funciones

K nearest neighbors (knn)

En el package class:

aux = datos[,-10] # Volcado de los datos menos la columna Ingressos
aux1 = aux[!is.na(Ingressos),] # Cogemos los Ingressos que no tienen NA de aux en aux1
aux2 = aux[is.na(Ingressos),] # Cogemos los Ingresos que tienen NA de aux
knn.ing = knn(aux1,aux2,Ingressos[!is.na(Ingressos)]) # Hacemos el knn con los que no tienen NA sobre los que sí tienen 
Ingressos[is.na(Ingressos)] = knn.ing # Asignamos los nuevos valores

Notas

Como...

Crear una tabla

Denominada pvalk.con de nresp filas y ncon columnas y asignar los nombres de las columnas y las filas a partir de una categórica y de otra matriz:

pvalk.con <- matrix(NA,nresp,ncon)
rownames(pvalk.con) <- levels(tmp)
colnames(pvalk.con) <- row.names(pvalcon)

Notas

math_langs/r.1304184858.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)