set.seed(123)
ger <- round(runif(100, 0, 1.49))
pg = (sum(ger)/100)*100
varias.ban = replicate(150, round(runif(100, 0, 1.49)))
# View(varias.ban)
pg.50 = (colSums(varias.ban)/100)*100
hist(pg.50, breaks = 12, col = 'blue',
     ylab = 'Frecuencia', xlab = 'Germinacion (%)',
     main = 'Porcentaje de germinacion 150 bandejas',
     ylim = c(0,40))
grid(10, col = 'gray10')

#Prueba de normalidad
#Ho: pg.50 ~ N
p.n1 = shapiro.test(pg.50)
ifelse(p.n1$p.value<0.05, 'Rechaza Ho', 'No Rechazo Ho')
## [1] "No Rechazo Ho"
#Tamano de muestra####
#Para estimar una proporcion de una poblacion finita (N)
#usando la tecnica de muestreo irrestricto aleatorio (MIA)
n.mia <-function(N, p, e, conf.lev, x){
  Z = qnorm(p = (1-conf.lev)/2, lower.tail = FALSE)
  n = ceiling((N*p*(1-p))/(((N-1)*(e/Z)^2)+(p*(1-p))))
  fc = sqrt((N-n)/(N-1))
  pe = x/n
  li = ((pe)-Z*sqrt((pe)*(1-pe)/n))*fc
  ls = ((pe)+Z*sqrt((pe)*(1-pe)/n))*fc
  
  return(list(tam.muestra = n,
              intervalo = c(li, ls),
              fc = fc))
}
# n.mia(800, 0.5, 0.01, 0.95, x = 60)#El error que se pide es tan pequeno 1% que el tamano es muy grande
t.m1 = n.mia(800, 0.5, 0.1, 0.95, 60)
t.m1 
## $tam.muestra
## [1] 86
## 
## $intervalo
## [1] 0.5677640 0.7512777
## 
## $fc
## [1] 0.9453132
N = seq(1,800,1)
sample(x = N, size = t.m1$tam.muestra, replace = FALSE)
##  [1] 260 597 214 524 440 620 250 591 235 499  66  48 745 317 643 404  81
## [18] 406 295 326 582 647 223 601 402 471 424 142 733  99 167 568 598 294
## [35] 212 744 299 508 366 331 474 688 412 239 757 482 374 593 452 232 497
## [52] 697  68 469 308 738 718  24 766 334 386 227 621 251  82 660  69 764
## [69] 644 747 537 611  98 743 676   2 729 164 694 571 736 132 612 202 740
## [86] 243
v.e = seq(0, 0.1, 0.01)

t.m = n.mia(800, 0.5, v.e, 0.95, 60)

plot(t.m$tam.muestra~v.e, type="l", main = 'Tamano de muestro en \n funcion del error de muestreo',
     ylab='Tamano de muestra', xlab='Error de muestreo')
abline(h = 350, lty = 2)

df1 = data.frame(v.e, t.m)
# View(df1)

#Funcion sin nombre####
(function(x)x**3)(-2)
## [1] -8
(v1 = rnorm(100))
##   [1] -1.912616646 -0.845393597  0.738740741  0.767169444 -1.474555542
##   [6]  0.012681825 -1.864052240  0.885298129  0.492430265  1.747074009
##  [11] -0.261999286  0.499754579 -0.688898769 -0.982579968  0.980700496
##  [16]  0.923316480  0.330687285  0.456662528  0.316941840  0.409146927
##  [21]  0.189341797 -1.319409387 -2.001210010 -1.318152050  1.246548956
##  [26] -1.119782914  0.600113097  0.798221759  0.183880788  0.323802973
##  [31]  0.650494425  1.582979542 -0.001953124 -0.308821787 -0.623122685
##  [36]  0.938155892  0.102679059  1.087980075 -1.351199996 -0.455781034
##  [41] -0.250835624  0.505347104  0.654022287 -0.215362310  0.226742328
##  [46] -1.157339108  2.032800279 -0.258620548 -0.098180123 -0.353161254
##  [51] -0.993105435  0.868923150 -1.816384259 -0.318847782  0.124840804
##  [56] -1.468991956  1.068508602 -0.482179828  0.659615452 -1.817635788
##  [61] -0.278583122  0.067735255 -1.350690770  0.919474362  0.272527744
##  [66] -0.094616195  0.178303767 -0.053910448  0.670286243  0.182138332
##  [71]  1.538611320 -0.416552562  0.874317166  0.140983640  2.161787266
##  [76]  0.027619235  0.128342863 -0.352602254 -2.086877989 -1.973865512
##  [81] -0.136036680  0.092192659 -0.690263563  0.615681633  1.361825953
##  [86]  1.713136222 -2.179550769  0.809847801  0.946646649  0.692901377
##  [91]  1.127856883 -0.147397247 -0.287952706  1.019327862 -0.676617134
##  [96]  0.892826208 -0.801685930 -0.587178070 -0.699415253  0.882787587
#Evaluacion perezosa
ff <- function(a, b) a-a^2
ff(2, stop("Error si se evalua"))
## [1] -2
gg <- function(a) a-a^2
# gg(2, stop("Error si se evalua"))

fh <- function(a, b = log(a)) a+b^-1
fh(4)
## [1] 4.721348
fk <- function(u) function(v) u^2+v
fk(3)(6)
## [1] 15
comparar <- function(x, y){
  if(x<y){
    -1
  }else if(x>y){
    1
  }else{
    0
  }
}
comparar(1,2)
## [1] -1
comparar(2,1)
## [1] 1
comparar(1,1)
## [1] 0
x = 2
y = 1
ifelse(x<y, -1, ifelse(x>y, 1, 0))
## [1] 1
set.seed(123)
pH = round(runif(40, 4, 7.2),1)

mi.c <- function(datos){
  salida = c()
  for (i in 1:length(datos)) {
    if(datos[i]<7) salida[i] = 'Acido'
    if(datos[i]>7) salida[i] = 'Basico'
    else if(datos[i] == 7) salida[i] = 'Neutro'
  }
  return(salida)
}
mi.c(pH)
##  [1] "Acido"  "Acido"  "Acido"  "Acido"  "Neutro" "Acido"  "Acido" 
##  [8] "Acido"  "Acido"  "Acido"  "Basico" "Acido"  "Acido"  "Acido" 
## [15] "Acido"  "Acido"  "Acido"  "Acido"  "Acido"  "Basico" "Acido" 
## [22] "Acido"  "Acido"  "Basico" "Acido"  "Acido"  "Acido"  "Acido" 
## [29] "Acido"  "Acido"  "Basico" "Acido"  "Acido"  "Acido"  "Acido" 
## [36] "Acido"  "Acido"  "Acido"  "Acido"  "Acido"
df3 = data.frame(pH, categoria = mi.c(pH))
# View(df3)
ifelse(pH<7, 'acido', ifelse(pH>7, 'basico', 'neutro'))
##  [1] "acido"  "acido"  "acido"  "acido"  "neutro" "acido"  "acido" 
##  [8] "acido"  "acido"  "acido"  "basico" "acido"  "acido"  "acido" 
## [15] "acido"  "acido"  "acido"  "acido"  "acido"  "basico" "acido" 
## [22] "acido"  "acido"  "basico" "acido"  "acido"  "acido"  "acido" 
## [29] "acido"  "acido"  "basico" "acido"  "acido"  "acido"  "acido" 
## [36] "acido"  "acido"  "acido"  "acido"  "acido"
#Prueba de normalidad varias variables
set.seed(123)
d1 = replicate(10, rnorm(50, 10, 1))
colnames(d1) = LETTERS[1:10] 
# View(d1)

asd = apply(d1, 2, shapiro.test)
class(asd)
## [1] "list"
asd[[1]]
## 
##  Shapiro-Wilk normality test
## 
## data:  newX[, i]
## W = 0.98928, p-value = 0.9279
asd[[2]]$p.value
## [1] 0.9617732
mis.p = c()
for (i in 1:10) {
  mis.p[i] = asd[[i]]$p.value
}
names(mis.p) = LETTERS[1:10]
mis.p
##           A           B           C           D           E           F 
## 0.927856832 0.961773190 0.281396250 0.009421849 0.005686851 0.365241861 
##           G           H           I           J 
## 0.667517961 0.776441602 0.737835110 0.305362922
ifelse(mis.p<0.05, 'No Normalidad', 'Normales')
##               A               B               C               D 
##      "Normales"      "Normales"      "Normales" "No Normalidad" 
##               E               F               G               H 
## "No Normalidad"      "Normales"      "Normales"      "Normales" 
##               I               J 
##      "Normales"      "Normales"
set.seed(123)
#12 columnas, 30 datos ~ uniforme(li = 4, ls = 6.5)
#etiquetas en las columnas = letras de la 1 a la 12
#coeficiente de variacion por columna ???
#Utilizar for() para moverse de columna 1 a 12
#(sd()/mean())*100 : (desviacion / media)*100
#Presentar 10 medias, 10 desviasiones, 10 coeficientes de variacion
#coef.var < 20 Homogeneo, > 20 Heterogeneo, = 20 NA

datos = replicate(12, runif(30, 4, 6.5))
colnames(datos) = LETTERS[1:ncol(datos)]
med = des = cv = c()
for (i in 1:ncol(datos)) {
  med[i] = mean(datos[,i])
  des[i] = sd(datos[,i])
  cv[i] = (des[i]/med[i])*100
}
sal = data.frame(medias = med, desviacion = des, coef.var = cv,
                 HH = ifelse(cv<20, 'homo', ifelse(cv>20, 'heteto', NA)))
rownames(sal) = LETTERS[1:ncol(datos)]
# View(sal)
des1 = apply(datos, 2, sd)
med1 = apply(datos, 2, mean)
cv1 = (des1/med1)*100
hh1 = ifelse(cv1<20, 'homo', ifelse(cv>20, 'hetero', NA))

##########
#Infijo#####
`+`(2,3)
## [1] 5
`-`(2,3)
## [1] -1
`*`(2,3)
## [1] 6
`if`(2>3, 'verdad', 'falso')
## [1] "falso"
`%M%` <- `*`
2%M%3
## [1] 6
m2 = matrix(rnorm(4), 2)
`IM` <- `solve`
IM(m2)
##            [,1]       [,2]
## [1,] -0.6354740  0.2567192
## [2,] -0.9274517 -0.7807119
##########
v1 = round(rnorm(10)); v1
##  [1]  0  0  1  0  1  0  0  0  0 -1
class(v1)
## [1] "numeric"
m1 = matrix(1:9 , nrow = 3, ncol = 3); m1
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
class(m1)
## [1] "matrix"
l1 = list(v1, m1, LETTERS[1:5]); l1
## [[1]]
##  [1]  0  0  1  0  1  0  0  0  0 -1
## 
## [[2]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## [[3]]
## [1] "A" "B" "C" "D" "E"
class(l1)
## [1] "list"
v1[5]
## [1] 1
m1[2,2]
## [1] 5
l1[[1]][5]
## [1] 1
l1[[2]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
l1[[2]][2,2]
## [1] 5
l1[[2]][,3]
## [1] 7 8 9
l1[[2]][2,]
## [1] 2 5 8
l1[[3]][4]
## [1] "D"