Advertisement
Guest User

Untitled

a guest
Jun 11th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.28 KB | None | 0 0
  1. using MATLAB
  2. using Distributions
  3.  
  4.  
  5. function hs_ggm(X, nmc, interval)
  6.     S = X' * X
  7.    p = size(S, 2)
  8.    sims = convert(Int64, nmc)
  9.    @mput X; @mput S; @mput nmc
  10.    mat"n = size(X, 1)"
  11.    mat"[GHS_omega_save,GHS_lambda_sq_save,GHS_tau_sq_save] = GHS(S, n, 100, nmc)"
  12.    mat_point = mat"mean(GHS_omega_save,3)"
  13.    samps =   @mget GHS_omega_save
  14.    #n = @mget n
  15.    offdiag = (p * (p - 1)) / 2
  16.  
  17.    mat_select =  zeros(p, p)
  18.    idx = tril(trues(size(mat_point)), -1)
  19.    A = zeros(nmc, offdiag)
  20.    for i = 1:sims
  21.        samp = samps[:,:,i]
  22.        test = samp[idx]
  23.        A[i,:] = test
  24.    end
  25.   interval_select = ggm_select(A, interval)
  26.   mat_select[idx] = interval_select
  27.   force_sym(mat_select), force_sym(mat_point)
  28. end
  29.  
  30.  
  31. function ggm_select(post_mat, interval)
  32.    low = (1 - interval) / 2
  33.    up =  1 - low
  34.    select = zeros(size(post_mat, 2))
  35.    for i in 1:size(post_mat, 2)
  36.    bounds = quantile(post_mat[:,i], [low, up]);
  37.    select[i] =  ifelse(bounds[1] < 0 && bounds[2] > 0, 0, 1)
  38. end
  39.    select
  40. end
  41.  
  42. function force_sym(x)
  43.    x + tril(x,-1).'
  44. end
  45.  
  46.  
  47. ############################
  48. ###### call from R #########
  49. ############################
  50. fit <- julia_call("hs_ggm", X, 1000, .50)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement