title: “Complementaria 1” author: “Andrea Velandia” date: ‘2023-02-02’ output: html_document
-``
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
# 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]