CARGAMOS LA BASE DE DATOS
library(readxl)
data2 <- read_excel("C:/Users/Drake/Desktop/TALLOS.xlsx")
View(data2)
knitr::opts_chunk$set(echo = TRUE)
VISUALIZACIÓN
head(data2) ##### NOSMUESTRA LAS VARIABLES Y LOS PRIMEROS 6 DATOS
str(data2) #### MUESTRA LOS DATOS Y EL TIPO DE DATO(NUMERIC, INTEGER OR CARHATER)
## tibble [10 × 2] (S3: tbl_df/tbl/data.frame)
## $ SIN NITROGENO: num [1:10] 0.32 0.53 0.28 0.37 0.47 0.43 0.36 0.42 0.38 0.43
## $ CON NITROGENO: num [1:10] 0.26 0.43 0.47 0.49 0.52 0.75 0.79 0.86 0.62 0.46
summary(data2) # RESUME METRICAS DESCRIPTIVAS: POSICIÓN (MEDIA, MEDIANA, Q1, Q3, MAX Y MIN)
## SIN NITROGENO CON NITROGENO
## Min. :0.2800 Min. :0.2600
## 1st Qu.:0.3625 1st Qu.:0.4625
## Median :0.4000 Median :0.5050
## Mean :0.3990 Mean :0.5650
## 3rd Qu.:0.4300 3rd Qu.:0.7175
## Max. :0.5300 Max. :0.8600
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
subset <- data2%>%select("SIN NITROGENO") ### FORMAR UN SUBCONJUNTO DE DATOS
library(ggpubr)
gghistogram(data2, x="SIN NITROGENO", bins = 4) ### HISTOGRAMA DE LOS DATOS, CON BINS OBTENEMOS LA CANTIDAD DE INTERVALOS

ggdensity(data2, x="SIN NITROGENO") ###3 GRAFICO DE DENSIDAD DE LOS DATOS

MEDIDAS DE TENDENCIA CENTRAL
mean(data2$`SIN NITROGENO`) ## MEDIA
## [1] 0.399
median(data2$`SIN NITROGENO`) ### MEDIANA
## [1] 0.4
getmode <- function(v){ ### se genera la funcion como argumento el vector V
uniqv <- unique(v) #### da los varoes del vector V sin duplicados
uniqv[which.max(tabulate(match(v, uniqv)))] #### extrae el valor único que tiene la mayor frecuencia.
}
getmode(data2$`SIN NITROGENO`) ### MODA
## [1] 0.43
v <- c(4, 2, 2, 3, 4, 4) ### VEXTOR
uniqv <- unique(v) # Resultado: c(4, 2, 3) $$ DE VUELVE EL VALOR UNICO DE CADA ELEMENTO EN v
match(v, uniqv) # DEVUELVE LA POSICIÓN DE CADA ELEMENTO EN V 4= PRIMERO, 2=SEGUNDO, 3=TERCERO, 4=PRIMERO, 4=PRIMERO
## [1] 1 2 2 3 1 1
tabulate(c(1, 2, 2, 3, 1, 1)) # Resultado: c(3, 2, 1) # CUENTA CUANTAS VECES SE REPITE CADA NÚMERO EN V
## [1] 3 2 1
which.max(c(3, 2, 1)) # DA LE VALOR MAS FRECUENTE
## [1] 1
uniqv = c(4, 2, 3)
uniqv[1] = 4 ## DEVUELVE EL FRECUENTE
MEDIDAS DE POSICIÓN
quantile(data2$`SIN NITROGENO`) ##### cuartiles
## 0% 25% 50% 75% 100%
## 0.2800 0.3625 0.4000 0.4300 0.5300
quantile(data2$`SIN NITROGENO`, c(0.15, 0.20, 0.50)) ### percentiles
## 15% 20% 50%
## 0.334 0.352 0.400
MEDIDAS DE VARIABILIDAD
sd(data2$`SIN NITROGENO`) ## standard desviation
## [1] 0.07279347
sd(data2$`SIN NITROGENO`)^2 #### varianza
## [1] 0.005298889
max(data2$`SIN NITROGENO`)-min(data2$`SIN NITROGENO`) # RANGO DE LOS DATOS
## [1] 0.25
IQR(data2$`SIN NITROGENO`) ### rango intercuatilico Q3-Q1
## [1] 0.0675
BOXPLOT (DIAGRAMAS DE CAJA)
## PARA DETECTAR DATOS ATÍPICOS SE CALCULA EL INTERVALO
## LI = Q1 - 1.5*IQR
## LS = Q3+ 1.5* IQR
## CUALQUIER VALOR FUERA DE ESTE INTERVALO POR ABAJO O POR ARRIBA ES ATÍPICO
ggboxplot(data2, y="SIN NITROGENO", title = "Dagrama de caja",
xlab = "", color = "blue")

ggboxplot(data2, y="SIN NITROGENO", add = "violin",
add.params = list(alpha=0.4))

ggviolin(data2, y="SIN NITROGENO", color = "blue", fill = "pink", title = "Diagrama de caja y violin",
add = "boxplot", add.params = list(fill="white"), xlab = "")
