#funcion Y = B+ Bi+ E
#tengo al menos dos variables, ya es multivariante
#Multivariante... variables dependientes e ind. son formas de pensamiento filosofico
#mi función es univariante, porque tengo una sola respuesta
#si tengo mas respuestas, comienzo a tener multivariable
#20 datos de una encuesta hace que esto sea multivariable
#analisis de cluster, es multivariable
#Comp. Principalbles es propuesto como una respuesta de la combinacion lineal de varias variables
#Risk, rates and odds: what's the difference and why does it matter? Dettori, Norvel, Chapman
#Que tan variable es medir la genetica de una poblacion vs un cultivar?
#prevalencia e incidencia: no son sinónimos
#Preñes, variable cualitativa, no hay intermedios, tmbn pasa con % de germinación
#lote de palmas, grilla
set.seed(123)
lote = expand.grid(x = seq(0,77, 7), y = seq(0,99,9)) #combinar los x con los y
plot(lote, pch = 8, asp =1, cex = 1.5)

#unas de estas palmas estan enfermas
dim(lote) #hay 144 filas y 2 columnas
## [1] 144 2
is.matrix(lote) #no es matrix
## [1] FALSE
is.vector(lote)
## [1] FALSE
#algunas plantas estan enfermas, voy a crear numeros al azar entre 0 y 1, uno son enfermos y otros sanos
enfermedad = round(runif(144,0,0.6), ) #1 es enfermo y 0 sanas
enfermedad
## [1] 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0
## [38] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [75] 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1
## [112] 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
#ahora quiero pintar con un color las plantas enfermas
plot(lote, col=ifelse(enfermedad==1, "red", "green"), asp = 1, pch = 8) #ifelse condicional es doble ==, si la enfermedad es 1, pintelo en rojo, de lo contrario pintelo en verde

#tabulemos cuantos estan sanos e enfermos
tabla01 = table(enfermedad)
#28 enfermos
prop.table(tabla01) #un numero entre 0 y 1
## enfermedad
## 0 1
## 0.8333333 0.1666667
prop.table(tabla01)*100 #lo pase a %
## enfermedad
## 0 1
## 83.33333 16.66667
#prevalencia, es un numero entre 0 y 1
#porcentaje, numero entre 0 y 100
#prevalencia, casos entre el total de casos
#prev, tiene una unidad de tiempo
#la incidencia, puede ser mayor a 1 o a 100
#algunas de las sanas, las volveré enfermas
enfermedad2=enfermedad #E2
enfermedad2[60]=1 #E2
enfermedad2[10]=1 #E2
enfermedad2[55]=1 #E2
enfermedad2[29]=1
plot(lote, col=ifelse(enfermedad==1, "red", "green"), asp = 1, pch = 8)

#veamos como cambió
#pongamos los dos graficos uno junto al otro
par(mfrow=c(1,2))
plot(lote, col=ifelse(enfermedad==1, "red", "green"), asp = 1, pch = 8)
plot(lote, col=ifelse(enfermedad2==1, "red", "green"), asp = 1, pch = 8) #E2

#incidencia, casos nuevos en un tiempo, cuantas palmas se me enfermeraon en una unidad de tiempo, diarios, semanal... 1 caso nuevo por semana, quincena, mes
#ojo confundir tasa de una proporcion con una incidencia en un tiempo
#crear lote 3, con mas palmas
lote03=expand.grid(x = seq(0,91,7), y = seq(0, 117,9))
plot(lote03, pch = 8)

dim(lote03)
## [1] 196 2
enfermedad3 = round(runif(196, 0, 0.55), )
#ver los dos lotes, con misma densidad de siembra
par(mfrow=c(1,2))
plot(lote, col=ifelse(enfermedad==1,"red", "green"), pch=8)
plot(lote03, col=ifelse(enfermedad3==1,"red", "green"), pch=8)

#cuantas enfermas hay en cada lote
par(mfrow=c(1,2))
plot(lote, col=ifelse(enfermedad==1,"red", "green"), pch=8, main = round(prop.table(table(enfermedad))[2], 3))
plot(lote03, col=ifelse(enfermedad3==1,"red", "green"), pch=8, main = round(prop.table(table(enfermedad3))[2], 3)) #xk extraje el [2]???

#arriba esta la prevalencia de enfermedad
#cual es el promedio de la prevalencia? error anormal, en el tablero tnego 0.16 y 0.08 de prevalencia, y si como promedio, los sumo y divido entre 2... MAL, prevalencia promedio MAL
#no siempre son promedios o aritmeticas
#articulo, use of the correlation coefficient in agricultural sciences problemas, pitfalls and how to deal with them, kozak...
#correlación entre -1 y 1, 0 no hay incorrelacion, no deberiamos crear categorias ambiguas, cada autor las escribe como le parecen
#correlaciones espurias, pearson,
#tenemos arena, arcilla y limo
set.seed(123)
arena = runif(100, 30, 50) #100 datos que oscilen entre 30 y 50
arcilla = runif(100, 20, 28)
limo = 100 -arena - arcilla
#metamoslos en una tabla
dft = data.frame(arena, arcilla, limo)
head(dft)
## arena arcilla limo
## 1 35.75155 24.79991 39.44854
## 2 45.76610 22.66259 31.57131
## 3 38.17954 23.90890 37.91156
## 4 47.66035 27.63579 24.70386
## 5 48.80935 23.86322 27.32744
## 6 30.91113 27.12280 41.96607
#grafiquemos
#install.packages("rgl") #la saque al haberla instalado
library(rgl)
rgl::plot3d(dft$arena,dft$arcilla,dft$limo) #extraigo con $
#me extrajo datos composicionales ##compositional data, cuando sus variables suman una constante, se consideran una correlacion falsa, espuria #sus partes suman un total
#se genera una correlacion negativa, si hay mas arena, pues debe haber menos limo o arcilla, las variables no se mueven libremente
#datos composicionales, esto genera que el triangulo de arena, arcilla limo, pues con 2 datos ya genero el total
#no necesito 3 dimensiones, con dos dimensiones es suficiente entiendo que pasó con las 3 variables
#similar a la escala usada en color, como Espacio Cielab
#datos de color
L = rnorm(100, mean = 60, sd = 10)
a = rnorm(100, mean = 5, sd = 1)
b = rnorm(100, mean = 15, sd = 2)
tablacolor = data.frame(L,a,b)
head(tablacolor)
## L a b
## 1 52.89593 7.198810 13.56952
## 2 62.56884 6.312413 13.49462
## 3 57.53308 4.734855 13.12292
## 4 56.52457 5.543194 12.89497
## 5 50.48381 4.585660 14.12568
## 6 59.54972 4.523753 15.66236
#install.packages("corrplot")
matrix_cor = cor(tablacolor) #crear matrix de correlaciones
#corrplot(matrix_cor, method = "number", bg = "grey") #no se pudo encontrar la fucion coorplot, OJO AQUI
#corrplot en R en google imagenes, y me dan el codigo.
# a veces solo requiero un vector, una variable con las demás, mientras que una matrix correlaciona todas las variables con todas
#correlacion en Pearson y Spearman, algunos piensan que una es parametrica y la otra no, pero NOOOO
#Pearson nos olbiga a linealidad
#Spearman nos obliga a monotonia
#install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## ################################### WARNING ###################################
## # We noticed you have dplyr installed. The dplyr lag() function breaks how #
## # base R's lag() function is supposed to work, which breaks lag(my_xts). #
## # #
## # If you call library(dplyr) later in this session, then calls to lag(my_xts) #
## # that you enter or source() into this session won't work correctly. #
## # #
## # All package code is unaffected because it is protected by the R namespace #
## # mechanism. #
## # #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## # You can use stats::lag() to make sure you're not using dplyr::lag(), or you #
## # can add conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## ################################### WARNING ###################################
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
PerformanceAnalytics::chart.Correlation(tablacolor)
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter

#la correlacion es una propiedad que tienen las variables, toca entenderlas
#clorofila y rendimiento deben tener una alta correlacion, hay ligacion teorica, pero cuidado, correlacion no es causación
#ojo que una baja correlacion peude ser porque se me daño la linealidad
#si me da alta corr como 0.8 pues asi sea alta, no es causa, falta el respaldo biologico u otro
#para poder hablar de correlacion, necesito al menos 12 datos, como minimo
#ajustar un modelo, cambiar mis datos para que genere una grafica mas cercana, pero entonces un patron no lienal, es mas facil de calibrar si lo volvemos lineal
#le aplico logaritmo a mis datos, y encoge mis datos, y ahora me da un patron lineal,
#si mis datos antes diferian, ahora que transformé mis datos, y ahora no me difieren despues de la transformación
#y AQUI QUE?, las verdades son condicionadas a las operaciones realizadas
#si transofmré, las diferencias son en el log del rendimiento, no en el rendimiento
#en el 94-95 se vio que ya no tenia que usarse normalidad para el analisis de datos, ahora se pueden analizar los datos como vengan.
#las redes neuronales no trabajan bajo supuestos tradicionales, matematica aplicada.
#Asintotico, teorema del limite central (la crisis de la estadistica)
#install.packages("collapsibleTree") #arbol colapsable
#Que es un tratamiento? creemos datos de viscosidad
set.seed(123)
visco = rnorm (48,40,3)
#factor 1 temperatura, 3 temp
temp = gl(3,16,48, paste0("Temp_",c(25,30,35))) #gl crea caterogias, genera niveles
loc = gl(2,8,48,paste0("Localidad_", 1:2)) #localidad
df=data.frame(temp,loc,visco)
library(collapsibleTree)
collapsibleTree(df,c("loc", "temp", "visco"), collapsed = TRUE)
#Tratamientos son las combinaciones de los niveles de los factores, aca tengo 8 datos por cada tratamiento, habria 48 unidades experimentales, que pueden ser las muestras de miel, #2 factores, 6 TRT, #temp cualitativo, el otro es cuantitativo
#Unidad experimental es el ente que aporta el dato
#experimentos pueden ser balanceados o desbalanceados, si tienen el mismo numero de unidades experimentales?
library(collapsibleTree)
collapsibleTree(df,c("loc", "temp", "visco"), collapsed = FALSE, fill="red") #para que me sirve el false?
#Para sacar conclusiones mas validas, la experimentacion es mas valida que experimentos observacionales
#Las encuestas deben ser validadas por expertos, psicometria, el como preguntar
#lo observacional, es facilmente tumbable
#muestreo bola de nieve, buscar al enfermo, ya no es muestreo aleatorio
#pararse en una esquina a hacer encuestas, no es aleatorio
#desconocer, no hace parte de que no se pierda la intencionalidad
#muy facil criticar los estudios no aleatorios
#Diseño de experimentos
#Experimento es una serie de pruebas, donde se inducen cambios derivados, yo controlo para ver que pasa en la respuesta, cambio la temperatura para ver como responde la viscocidad
#variabilidad minima para poder creer que lo que lo esta afectando es esto, por esto quiero minimizar variabilidad, y además, que los efectos de otras variables sean minimos
#lote de palmas 2, diferente
lote02 = expand.grid(x = runif(12,0,77), y = runif(12,0,77)) #combinar los x con los y
plot(lote02, pch = 8, asp =1, cex = 1.5)

#runif genera valores al azar entre 0 y 77, me crea 12 valroes de x y 12 de y y los mezcla
#runif, numeros aleatorios