Ad01

Ad02

viernes, 13 de enero de 2023

Manejo de data.phrames en lenguaje R

 i. Cree un script T5iniciales.R en R-Studio

ii. Ejecute la función data() desde la plataforma R-STUDIO e importe los conjuntos de datos trees

y npk de R; luego cree dos nuevos objetos data.frame df.arboles y df.npk; y traduzca el nombre

las columnas (variables) de ambos objetos.

iii. Para cada data frame creado, realice un análisis exploratorio de las variables respuesta (boxplots,

histogramas, frecuencias, summary, etc) considere los conjuntos de datos completos. Exporte sus

gráficas.

Para el conjunto de datos datos.npk,

iv. Calcule las medias y desviaciones estándar por bloque; cree dos subconjuntos de datos, uno para

todos los bloques pares y otro para todos los bloques nones.

Para el conjunto de datos datos.arboles,

v. Grafique por pares de variables; efectúe regresiones lineales entre el volumen (variable

dependiente) y (altura, perímetro) variables independientes; grafique los valores predichos

(ajustados) y los valores observados, exporte sus gráficas.

vi. Exporte los conjuntos de datos, datos.arboles y datos.npk a archivos .csv

vii. Exporte los valores predichos, observados y los residuales da cada modelo a un archive .csv.

viii. Genere 40 datos de peso de borregos con una media de 24 kg y sd de 5 kg (asuma normalidad).

Genere 40 datos de diámetro de cintura de borregos en cm con media 45 cm y sd 8 cm (asuma

normalidad). Grafique los datos peso (variable respuesta) vs diametro (variable predictora).

Efectúe una regresión lineal, analice y guarde sus resultados en archivos en forma ordenada y

comente sus resultados.

ix. Cree 3 pares de objetos tmin1, tmax1, tmin2, tmax2, tmax3, tmin3, de longitud 6, donde tmin son

temperaturas mínimas diarias y tmax son temperaturas máximas diarias. Luego utilice la función

tpromedio descrita en script de clase para calcular los promedios de temperatura tp1, tp2, tp3,

utilice el ciclo for para hacer el cálculo en forma iterativa.

x. Exporte a un archivo .RData el área de trabajo completa.

xi. Comente sus resultados en general.



#recupera algunas bases de datos y las hace objeto


data()

data(trees)

df.arboles <- trees

data(npk)

df.npk <- npk


#traduce los nombres de las columnas en cada df


names(df.arboles) <- c("perimetro", "altura", "volumen")

names(df.npk) <- c("bloque", "N", "P", "K", "campo")


#analisis exploratorio del df de arboles


cor(df.arboles$perimetro, df.arboles$volumen)


plot(df.arboles$volumen ~ df.arboles$perimetro, xlab = "Perimetro", 

         ylab = "Volumen", main = "Volumen de los arboles respecto a su perimetro")


hist(x = df.arboles$altura, xlab = "Altura", ylab = "Frecuencia", 

     main = "Frecuencia de arboles de acuerdo a su altura")


summary(df.arboles)


#analisis exploratorio del df de npk


boxplot(df.npk$campo ~ df.npk$bloque, xlab = "Bloque", 

        ylab = "Campo", main = "Comportamiento del campo con diferentes tratamientos de NPK")


hist(x = df.npk$campo, xlab = "Campo", ylab = "Frecuencia", 

     main = "Frecuencia del comportamiento del campo ante diferentes tratamientos")


summary(df.npk)


#para el conjunto de datos npk se calcula la media y la des. estandar por bloques

#ademas se obtienen subconjuntos de los bloques pares e impares


df.npk.media <- tapply(df.npk$campo, df.npk$bloque, mean)

df.npk.media


df.npk.sd <- tapply(df.npk$campo, df.npk$bloque, sd)

df.npk.sd


df.npk.subset.par <- subset(df.npk, df.npk$bloque == 2 | df.npk$bloque == 4 | df.npk$bloque == 6)

df.npk.subset.par


df.npk.subset.nones <- subset(df.npk, df.npk$bloque == 1 | df.npk$bloque == 3 | df.npk$bloque == 5)

df.npk.subset.nones


#para el conjunto de datos de arboles se obtienen regresiones lineales y graficas


df.arboles.reg1 <- lm(df.arboles$volumen ~ df.arboles$perimetro)

df.arboles.reg1


summary(df.arboles.reg1)


df.arboles.reg2 <- lm(df.arboles$volumen ~ df.arboles$altura)

df.arboles.reg2


summary(df.arboles.reg2)


plot(df.arboles$volumen ~ df.arboles$perimetro, xlab = "Perimetro", ylab = "Volumen",

     main = "Volumen de los arboles respecto a su perimetro")


plot(df.arboles$volumen ~ df.arboles$altura, xlab = "Altura", ylab = "Volumen",

     main = "Volumen de los arboles respecto a su altura")


#exporta los df creados


write.csv(df.arboles, file = "T5HJBVdf.arboles.csv")


write.csv(df.npk, file = "T5HJBVdf.npk.csv")


#crea objetos a partir de los modelos hechos y los exporta 


df.arboles.mod1 <- cbind(df.arboles$volumen, df.arboles$perimetro, df.arboles.reg1$residuals)

df.arboles.mod1


df.arboles.mod2 <- cbind(df.arboles$volumen, df.arboles$altura, df.arboles.reg2$residuals)

df.arboles.mod2


write.csv(df.arboles.mod1, file = "T5HJBVdf.arboles.mod1.csv")


write.csv(df.arboles.mod2, file = "T5HJBVdf.arboles.mod2.csv")


#analisis de algunas variables de borregos 


peso.bor <- rnorm(40, mean = 24, sd = 5)

peso.bor 


cintura.bor <- rnorm(40, mean = 45, sd = 8)

cintura.bor


plot(peso.bor ~ cintura.bor, xlab = "Diametro", ylab = "Peso", 

     main = "Peso de borregos de acuerdo a su diametro")


bor.reg <- lm(peso.bor ~ cintura.bor)

bor.reg


summary(bor.reg)


#analisis de temperaturas


i <- NULL; tp1 <- NULL; suma1 <- NULL

for(i in 1:6){

  tmin1 <- rnorm(1, mean = 14, sd = 2)

  tmax1 <- rnorm(1, mean = 27, sd = 2)

  tp1 <- (tmin1 + tmax1)/2;

  suma1 <- c(suma1, tp1);

}

suma1

tp1 <- sum(suma1)/6

tp1


i <- NULL; tp2 <- NULL; suma2 <- NULL

for(i in 1:6){

  tmin2 <- rnorm(1, mean = 16, sd = 2)

  tmax2 <- rnorm(1, mean = 29, sd = 2)

  tp2 <- (tmin2 + tmax2)/2;

  suma2 <- c(suma2, tp2);

}

suma2

tp2 <- sum(suma2)/6

tp2


i <- NULL; tp3 <- NULL; suma3 <- NULL

for(i in 1:6){

  tmin3 <- rnorm(1, mean = 16, sd = 2)

  tmax3 <- rnorm(1, mean = 29, sd = 2)

  tp3 <- (tmin3 + tmax3)/2;

  suma3 <- c(suma3, tp3);

}

suma3

tp3 <- sum(suma3)/6

tp3




 

·         Análisis exploratorio

En el análisis exploratorio del conjunto de datos sobre árboles se obtuvieron las gráficas de la figura 1 y la figura 2. En la figura 1 se ve la relación que tienen las variables perímetro y volumen, que son directamente proporcional.



Figura 1. Relación entre las variables perímetro y volumen. Fuente: propia

En la figura 2 se puede apreciar un histograma de la variable altura de los árboles. Los arboles con altura entre 75 y 80 unidades se distinguen por ser lo más numerosos.



Figura 2. Histograma de la variable altura de los árboles. Fuente: propia.

Por el otro lado, el análisis exploratorio de los datos sobre NPK se ilustran en las gráficas de las figuras 3 y 4. En la figura 3, se aprecia un boxplot entre las variables bloque y campo. Se observa un mejor rendimiento en el bloque 3 por encima de los otros bloques.



Figura 3. Boxplot de las variables bloque y campo. Fuente: propia.

En la figura 4 se ilustra el histograma de la variable campo. Se aprecia que el mejor rendimiento se dio entre 55 a 60 unidades.



Figura 4. Histograma de la variable campo. Fuente: propia.

 

 

·         Regresiones lineales entre las variables de los datos sobre arboles

Como se comentó con anterioridad, el perímetro y el volumen de los arboles tienen una relación directamente proporcional con un R2 de 0.93. El modelo que representa esta relación es:  

y=5.066x-36.943





Figura 5. Regresión lineal entre las variables volumen y perímetro. Fuente: propia.

La relación entre la altura y el volumen de los arboles no es muy alta con un R2 de 0.34. El modelo que representa esta relación es:

y=1.543x-87.124



Figura 6. Regresión lineal entre las variables volumen y altura. Fuente: propia.

·         Análisis de los datos de cintura y peso de borregos

En la figura 7 se observa la gráfica de los datos del diámetro de la cintura de borregos con su respectivo peso. Estos datos se obtuvieron al azar de acuerdo a algunos criterios de media y desviación estándar. Se observa que los datos no tienen una relación con un R2 de 0.07. El modelo que representa esta relación es: y=0.1933x+15.4369

 


Figura 7. Regresión lineal entre la cintura y el peso de borregos. Fuente: propia.


No hay comentarios.:

Publicar un comentario

Ad3