title: “Complementaria 1” author: “Andrea Velandia” date: ‘2023-02-02’ output: html_document

-``

Complementaria 1

a<-2
jose<-300

# Operacion matematica
b<-1550
c<-4 #Numero a multiplicar
d<-90
rta<-(b/c)*d

#Amo a modelitos


#Tipo de objetos
#Entero
f<-34

#Numericos
h<-98/12

#Carcateres
k<-"amiguito"

#Vectores en R y tipo de objetos

vectorA<-c(1,4,2,3,5,2)

vectorB<-c("hola","bad bunny","Amigo")

vectorC<-vector(mode="logical",length=7)

vectorD<-3:20

vectorF<-c(TRUE, FALSE, FALSE, TRUE)

#Llamar valores dentro de vector
vectorB[2]
## [1] "bad bunny"
vectorDiverso<-c(25.7,"buenos dias",TRUE)

#Verificar tipo de dato

class(vectorDiverso)
## [1] "character"
#Cambiar la clase de un objeto

vectorN<-c(0:5)
as.logical(vectorN)
## [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
as.numeric(vectorN)
## [1] 0 1 2 3 4 5
#Paquetes en R

#install.packages("markovchain")
library(markovchain)
## Package:  markovchain
## Version:  0.8.6
## Date:     2021-05-17
## BugReport: https://github.com/spedygiorgio/markovchain/issues
# Funciones ---------------------------------------------------------------

nombre<-function(parametros){
  cuerpo
  return(cuerpo)
}

#Funcion 1
funcioncita<-function(n){
  rta<-(n^(1/3))+10
  return(rta)
}

x<-27
funcioncita(n=x)
## [1] 13
#Funcion 2: retorna grafica

grafica<-function(vectorEjeY){
  ejeX<-seq(from=1,to=length(vectorEjeY),by=1)
  plot(x = ejeX,y=vectorEjeY,type="l",col="blue")
}

vectorNN<-c(1,4,2,6,7,3,2)
grafica(vectorNN)

# Help --------------------------------------------------------------------

#COn ? seguido de la funcion


# Recorridos --------------------------------------------------------------

for(i in 1:20){
  
}

#Crear funcion 
ranita<-function(va,vb){
  vecRta<-rep(0,times=length(va)) #Crear vector lleno de 0 del tamano de va
  
  #Recorrido por vecRta
  for (i in 1:length(vecRta)) {
    vecRta[i]<-max(va[i],vb[i]) #Asigno el max numero a cada posicion de vectRta
  }
  
  return(vecRta)
}

v1<-c(1,2,3,4,5,5)
v2<-c(9,1,3,2,6,2)

ranita(v1,v2) #Evaluando funcion
## [1] 9 2 3 4 6 5
# Estructuras de control-Condicionales ------------------------------------

#if(condicion){
 # ...
#}else{
 # ...
#}

#Probar condicional 1
x<-70

if(x<15){
  print("X es menor a 15")
} else{
  print("x no es menor a 15")
}
## [1] "x no es menor a 15"
#Probar condicional con Y

x<-4

if(x>=2 & x<=10){
  print("X esta entre 2 y 10")
} else if(x>15 & x<20){
  print("X esta entre 15 y 20")
}
## [1] "X esta entre 2 y 10"
# A prueba lo aprendido ---------------------------------------------------

#Ejercicio1

ejemplo1<-function(vector,numero){
  valor<-FALSE
  
  for(i in 1:length(vector)){
    if(vector[i]==numero){
      valor<-TRUE
    }
  }
  return(valor)
}

vector1<-c(1,2,3,2,3,6,7,8)
num<-3

ejemplo1(vector1,num)
## [1] TRUE
#Ejercicio 2

unico<-function(vectorcito){
  vectorRta<-c(vectorcito[1])
  
  for (i in vectorcito) {
    hayIgual<-FALSE
    for (j in vectorRta) {
      if(i==j){
        hayIgual<-TRUE
        break
      }
    }
    
    if(hayIgual==FALSE){
      vectorRta<-c(vectorRta,i)
    }
    
  }
  return(vectorRta) 
  
}
v1<-c(1,2,3,4,3,2,2)
unico(v1)
## [1] 1 2 3 4
# Ejercicio3

ejercicio2<-function(vector, numero){
  contador<-0
  
  for (i in 1:length(vector)) {
    if(numero==vector[i]){
      contador<-contador+1
    }
  }
  
  return(contador)
}
ejercicio2(v1,2)
## [1] 3

Complementaria 2

# Workin Directory --------------------------------------------------------

#getwd()
#setwd("C:/Users/mayer/OneDrive - Universidad de los Andes/1 SEMESTRE MAESTRIA/MODELOS PROBABILISTICOS/Complementarias")

Data <- data.frame(
  "Date" = c("2017-07-17","2017-07-18","2017-07-19"), 
  "Oper" = c(148, 150, 149), 
  "High" = c(148, 150, 149),
  "Low" = c(148, 150, 149),
  "Adj Close" = c(148, 150, 149),
  "Volume" = c(211000, 122350, 134349))

# Importar Datos ----------------------------------------------------------
#Opcion 1
#Data<-read.csv(file = "AAPL.csv",sep = ",")

#Opcion 2
#library(readr)
#AAPL <- read_csv("AAPL.csv")
#View(AAPL)


# Dataframes --------------------------------------------------------------

#Convertir a tipo dataframe
datos<-as.data.frame(Data)

#Acceder a datos
datos[3,4]
## [1] 149
datos[3,"Low"]
## [1] 149
#Cantidad de filas y columnas
ncol(datos)
## [1] 6
nrow(datos)
## [1] 3
#Informacion basica
summary(datos)
##      Date                Oper            High            Low       
##  Length:3           Min.   :148.0   Min.   :148.0   Min.   :148.0  
##  Class :character   1st Qu.:148.5   1st Qu.:148.5   1st Qu.:148.5  
##  Mode  :character   Median :149.0   Median :149.0   Median :149.0  
##                     Mean   :149.0   Mean   :149.0   Mean   :149.0  
##                     3rd Qu.:149.5   3rd Qu.:149.5   3rd Qu.:149.5  
##                     Max.   :150.0   Max.   :150.0   Max.   :150.0  
##    Adj.Close         Volume      
##  Min.   :148.0   Min.   :122350  
##  1st Qu.:148.5   1st Qu.:128350  
##  Median :149.0   Median :134349  
##  Mean   :149.0   Mean   :155900  
##  3rd Qu.:149.5   3rd Qu.:172675  
##  Max.   :150.0   Max.   :211000
#Acceder a columnas
datos[["Low"]]
## [1] 148 150 149
datos[[4]]
## [1] 148 150 149
datos[,4]
## [1] 148 150 149
datos[,"Low"]
## [1] 148 150 149
datos$Low
## [1] 148 150 149
#Acceder a filas
datos[3,]
##         Date Oper High Low Adj.Close Volume
## 3 2017-07-19  149  149 149       149 134349
#Pedir mas datos
datos[c(3,4),]
##          Date Oper High Low Adj.Close Volume
## 3  2017-07-19  149  149 149       149 134349
## NA       <NA>   NA   NA  NA        NA     NA
datos[c(3,4),c("Low","High")]
##    Low High
## 3  149  149
## NA  NA   NA
#Sacar datos con condiciones

datos[datos$Open>155,]
## [1] Date      Oper      High      Low       Adj.Close Volume   
## <0 rows> (or 0-length row.names)
datos[datos$Open>155 & datos$Low>157,]
## [1] Date      Oper      High      Low       Adj.Close Volume   
## <0 rows> (or 0-length row.names)
#Crear nuevas columnas
datos$logaritmito<-log(datos$Low)

variable<-log(datos$Low)
datos=cbind(datos,variable)

#Eliminar columna
datos<-datos[,-ncol(datos)]

#Filtrar dataframe
datos2<-subset(datos,datos$Open>155 & datos$Close<160)


# Graficas ----------------------------------------------------------------

#Histograma de precio ajustado de la accion
#hist(x = datos$`Adj Close`,main = "Histograma de precio de cierre ajustado",
#     xlab = "Precio cierre ajustado",ylab="Frecuencia",col="deepskyblue1")

#Grafico de dispersion

#ejex<-log10(datos$`Adj Close`)[-nrow(datos)]
#ejey<-log10(datos$`Adj Close`)[-1]

#plot(x=ejex,y=ejey,main="Grafico de dispersion de log de precio de cierre ajustado",
#     xlab="Precio en t-1",ylab="Precio en t",col="red",type="p")


# Fechas ------------------------------------------------------------------

#Pasar a formato fecha
as.Date("1915-6-16")
## [1] "1915-06-16"
as.Date(datos$Date,"%Y-%m-%d")
## [1] "2017-07-17" "2017-07-18" "2017-07-19"
datos$Date<-as.Date(datos$Date,"%Y-%m-%d")

class(datos$Date)
## [1] "Date"
# Ajuste de datos y pruebas de bondad -------------------------------------

#Paquetes
library(rriskDistributions)
library(fitdistrplus)
## Loading required package: MASS
## Loading required package: survival
library(MASS)

#Variables continuas

#Crear datos que luego revisare
tEstudiantes<-rexp(n = 300,rate= 3)

#Intuir comportamiento
hist(tEstudiantes)

#Ajustar datos a distribucion especifica
ajuste<-fitdist(tEstudiantes,"exp")

#Parametros de distribucion
ajuste$estimate
##     rate 
## 3.175168
plot(ajuste)

#prueba de bondad de ajuste y pvalue
rta<-gofstat(ajuste)
rta$chisqpvalue
## [1] 0.2307887
#No rechazo, datos se ajustan


#Variables distcretas

nEstudiantes<-rpois(n=300,lambda = 3)

ajuste2<-fitdist(nEstudiantes,"pois")

#Parametros
summary(ajuste2) 
## Fitting of the distribution ' pois ' by maximum likelihood 
## Parameters : 
##        estimate Std. Error
## lambda 2.876667 0.09792286
## Loglikelihood:  -571.3855   AIC:  1144.771   BIC:  1148.475
#Plot
plot(ajuste2)

#Prueba bondad
rta2<-gofstat(ajuste2)
rta2$chisqpvalue
## [1] 0.5220039
#Se se ajustan



# Ejercicios --------------------------------------------------------------

#Utilizando el archivo de datos “AAPL.csv”, grafique un histograma del precio de cierre de la acción para los días martes y viernes.

weekdays(as.Date("1995-3-3"))
## [1] "Friday"
datos$DiaSemana<-weekdays(datos$Date)

x<-datos[datos$DiaSemana=="Tuesday" | datos$DiaSemana=="Friday","Adj Close"]

#hist(x,main="Histograma del precio de cierre para dias martes y viernes",
#     xlab="precio de cierre ajustado",col="orange")

#Cree una nueva columna que contenga la diferencia entre el precio de apertura y cierre. Luego cree un
#subconjunto de datos en donde estén las 20 observaciones con mayor valor de la nueva variable.

#datos[order(datos$Columnita,decreasing = TRUE),"Columnita"][1:20]