# Hyperbolic code in R studio ? Classic List Threaded 4 messages Open this post in threaded view
|

## Hyperbolic code in R studio ?

 Good morning everyone, I don't want to bother you. I'm new at using R. :) 1. I was wondering if someone could help me figure out why I can't generate the code to get a hyperbolic function. 2. My second question is, I generated the code. I don't have any problem with other distributions but I still can't get the graphics displayed. Here are the instructions for my exercise and here is the code I used: **Instructions** Project: hereafter the series of financial returns will be refered to as yt and the series of fundamentals as xt. Here are the questions you need to raise and answer: Part 1: maximum likelihood estimation, student test and goodness of fit. 1. Consider the following model: yt =μ+σεt, with εt a disturbance such that E[εt] = 0 and V[εt] = 1. *Estimate the parameters of the following distributions by maximum likelihood using the Yt:* • Gaussian distribution N(0,1) • Student-t distribution with parameter ν • A mixture of Gaussian distribution MN(φ, μ1, σ1, μ2, σ2) • A generalized hyperbolic distribution GH(λ, α, β, δ, μ). 2. *Test the parameters for their significance using a Student test. Are all the parameters statistically significant?* **My code:** For the first three distributions, I answered well for questions one and two which are in italics. But I have a problem with the last one. library(readxl) Data <- read_excel("Data_project.xlsx", sheet = 2, skip = 5, col_names = FALSE) #y variable to explain, Nikkei 225 index y <- Data # x variable explanatory variable, Australian Dollar vs. US Dollar x <- Data returns_y = diff(as.matrix(log(y)),1) returns_x = diff(as.matrix(log(x)),1) returnsy_std = scale(returns_y) #1. Estimate the parameters by maximum likelihood #Gaussian distribution N(0, 1) mu=0 sigma=0.1 para0 = c(mu,sigma) loglikG<-function(para,returns_y) {   mu = para   sigma =  para   print(para)  logl=sum(log(dnorm((returns_y-mu)/sigma, 0, 1)/sigma))   return(-logl) } loglikG(para0,returns_y) fit <- optim(para0, loglikG, gr=NULL, returns_y, method="BFGS",hessian=T) paraopt<- fit[["par"]] Hessian = fit\$hessian invh = solve(Hessian) t1= sqrt(invh[1,1]) t2=sqrt(invh[2,2]) testzmu = paraopt/t1 testzvar = paraopt/t2 print(testzmu) print(testzvar) #T-student para_t=c(0,0.012,5) loglikt <- function(para,returns_y){   mut=para   sigmat=para   nu=para  m=-sum(log(dt((returns_y-mut)/sigmat, df=nu)/sigmat))   return(m) } loglikt(para_t,returns_y) output_t= optim(para_t, loglikt, gr=NULL, returns_y, method="BFGS", hessian=TRUE) paraopt_t <- output_t[["par"]] Hessian_t = output_t\$hessian invh_t = solve(Hessian_t) t1_t= sqrt(invh_t[1,1]) t2_t=sqrt(invh_t[2,2]) t3_t= sqrt(invh_t[3,3]) testzmu_t = paraopt_t/t1_t testzvar_t = paraopt_t/t2_t testznu_t = paraopt_t/t3_t print(testzmu_t) print(testzvar_t) print(testznu_t) #Mixture of Gaussian finding initial values library(LaplacesDemon) eps = 0.001 tolerance = 0.95 paraMG = c(-0.02,0.03,0.6,0.8,0.7) likehoodMG <- function(para,returnsy_std) {   muM12 = para[1:2]   sigmaM12 = para[3:4]   phi = para   p = c(phi,1-phi)  LM=sum(log(dnormm(returnsy_std,muM12,sigmaM12,p=p)))   mean_w = p*muM12 + p*muM12   var_w = p*sqrt(sigmaM12) + p*sqrt(sigmaM12)  if((abs(mean_w)>tolerance) || (abs(var_w-1)>tolerance)){     return(NaN)   }   return(-LM) } likehoodMG(paraMG,returnsy_std) outputMG = optim(paraMG, likehoodMG, gr=NULL, returnsy_std, method = "L-BFGS-B", hessian=TRUE,                   lower = c(eps,eps,-Inf,-Inf,eps), upper = c(Inf,Inf,Inf,Inf,1-eps)) paraoptMG = outputMG[["par"]] #Mixture of Gaussian #(0.000345,0.023306) paraM =c(0.000345,0.023306,0.0253514,0.0010000,0.8715856,2.7857329,0.9659020) likehoodM <- function(para,returns_y) {   muM1 = para   sigmaM = para   muM12 = para[3:4]   sigmaM12 = para[5:6]   phi = para   p = c(phi,1-phi)  LM=sum(log(dnormm((returns_y-muM1)/sigmaM,muM12,sigmaM12,p=p)/sigmaM))   return(-LM) } likehoodM(paraM,returns_y) outputM = optim(paraM, likehoodM, gr=NULL, returns_y, method = "L-BFGS-B", hessian=TRUE,                 lower = c(-Inf,eps,eps,eps,-Inf,-Inf,eps), upper = c(Inf,Inf,Inf,Inf,Inf,Inf,1-eps)) paraoptM = outputM[["par"]] HM = outputM[["hessian"]] invHM = solve(HM) tm1 = sqrt(invHM[1,1]) tm2 = sqrt(invHM[2,2]) tm3 = sqrt(invHM[3,3]) tm4 = sqrt(invHM[4,4]) tm5 = sqrt(invHM[5,5]) tm6 = sqrt(invHM[6,6]) tm7 = sqrt(invHM[7,7]) testtmum = (paraoptM-0)/tm1 testtsigmam = paraoptM/tm2 testtmum1 = (paraoptM)/tm3 testtmum2 = paraoptM/tm4 testtvarm1 = paraoptM/tm5 testtvarm2 = paraoptM/tm6 testtphi = paraoptM/tm7 print(testtmum) print(testtsigmam) print(testtmum1) print(testtmum2) print(testtvarm1) print(testtvarm2) print(testtphi) #A generalized hyperbolic distribution GH(??, ??, ??, ??, ?). library(readxl) Data <- read_excel("Data_project.xlsx", sheet = 2, skip = 5, col_names = FALSE) #y variable to explain, Nikkei 225 index y <- Data # x variable explanatory variable, Australian Dollar vs. US Dollar x <- Data returns_y = diff(as.matrix(log(y)),1) returns_x = diff(as.matrix(log(x)),1) returnsy_std = scale(returns_y) #A generalized hyperbolic distribution GH(??, ??, ??, ??, ?). library(ghyp) para_gh= c(-0.00002,0.005,1,0,1,0.1,0.1) # mu,delta,alpha,beta,lambda loglikGH <- function(para,returns_y){   mugh=para   sigmagh=para   alpha=para   beta = para   delta=para   chi=para   lamda=para   if(delta < abs(chi)){     return(10000)   }else{    return(-sum(log(dghyp(((returns_y-mugh)/sigmagh),object = ghyp(alpha,beta,delta,chi,lamda))/sigmagh)))   } } loglikGH(para_gh,returns_y) eps = 0.001 outputGH= optim(para_gh, loglikGH, gr=NULL, returns_y, method = "L-BFGS-B", hessian=TRUE,                 lower = c(-Inf,eps,eps,eps,-Inf,-Inf,eps), upper = c(Inf,Inf,Inf,Inf,Inf,Inf,Inf)) paraoptGH = outputGH[["par"]] HGH = outputGH[["hessian"]] invHGM = solve(HGH) tm1_H = sqrt(invHGM[1,1]) tm2_H = sqrt(invHGM[2,2]) tm3_H = sqrt(invHGM[3,3]) tm4_H = sqrt(invHGM[4,4]) tm5_H = sqrt(invHGM[5,5]) tm6_H = sqrt(invHGM[6,6]) tm7_H = sqrt(invHGM[7,7]) testtmuH = (paraoptGH-0)/tm1_H testtsigmaH = paraoptGH/tm2_H testtalpha = (paraoptGH)/tm3_H testtbetha = paraoptGH/tm4_H testtdelta = paraoptGH/tm5_H testtvchi = paraoptGH/tm6_H testtlambda = paraoptGH/tm7 print(testtmuH) print(testtsigmaH) testtalpha testtbetha testtdelta testtvchi testtlambda         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|