Skip to content

Instantly share code, notes, and snippets.

@alexchinco
Last active September 23, 2016 19:06
Show Gist options
  • Save alexchinco/97dc0980c0ca5458d4244c5efa374263 to your computer and use it in GitHub Desktop.
Save alexchinco/97dc0980c0ca5458d4244c5efa374263 to your computer and use it in GitHub Desktop.
Intuition Behind the "Bayesian LASSO"
function HiddenAssumption(Y, SIG_EP_HI, SIG_EP_LO, SIG_BET_HI, SIG_BET_LO, LAM){
var Values = [];
for(var n = -1000; n <= 1000; n++){
var bet = (1/1) * n/1000;
var PriorBetHi = (1/(Math.sqrt(2 * Math.PI * SIG_BET_HI**2))) * Math.exp(-(bet - 0)**2/(2 * SIG_BET_HI**2));
var PriorBetLo = (1/(Math.sqrt(2 * Math.PI * SIG_BET_LO**2))) * Math.exp(-(bet - 0)**2/(2 * SIG_BET_LO**2));
var ProbBetHiEpHi = (1/2) * (LAM/SIG_EP_HI) * Math.exp(- (1/2) * (LAM**2/SIG_EP_HI**2) * SIG_BET_HI**2);
var ProbBetLoEpHi = (1/2) * (LAM/SIG_EP_HI) * Math.exp(- (1/2) * (LAM**2/SIG_EP_HI**2) * SIG_BET_LO**2);
var ProbBetHiEpLo = (1/2) * (LAM/SIG_EP_LO) * Math.exp(- (1/2) * (LAM**2/SIG_EP_LO**2) * SIG_BET_HI**2);
var ProbBetLoEpLo = (1/2) * (LAM/SIG_EP_LO) * Math.exp(- (1/2) * (LAM**2/SIG_EP_LO**2) * SIG_BET_LO**2);
var PriorEpHi = (ProbBetHiEpHi/(ProbBetHiEpHi + ProbBetLoEpHi)) * PriorBetHi + (ProbBetLoEpHi/(ProbBetHiEpHi + ProbBetLoEpHi)) * PriorBetLo;
var PriorEpLo = (ProbBetHiEpLo/(ProbBetHiEpLo + ProbBetLoEpLo)) * PriorBetHi + (ProbBetLoEpLo/(ProbBetHiEpLo + ProbBetLoEpLo)) * PriorBetLo;
var FitEpHi = (1/(Math.sqrt(2 * Math.PI * SIG_EP_HI**2))) * Math.exp(-(Y - bet)**2/(2 * SIG_EP_HI**2));
var FitEpLo = (1/(Math.sqrt(2 * Math.PI * SIG_EP_LO**2))) * Math.exp(-(Y - bet)**2/(2 * SIG_EP_LO**2));
var LikelihoodEpHi = FitEpHi * PriorEpHi;
var LikelihoodEpLo = FitEpLo * PriorEpLo;
var LogLikelihood = Math.log(LikelihoodEpHi * (50/100) + LikelihoodEpLo * (50/100));
var MaxValue = 10;
if (LogLikelihood < MaxValue) {
Values.push(LogLikelihood);
} else {
Values.push(MaxValue);
}
}
return Values
}
var y = 107/1000;
var sigEpH = 100;
var sigEpL = 0.50;
var sigBetH = 100;
var sigBetL = 0.50;
var lam = 2.5313;
var Data = HiddenAssumption(y, sigEpH, sigEpL, sigBetH, sigBetL, lam);
function MixtureModel(Y, SIG_EP, SIG_BET_H, SIG_BET_L, TET){
var Values = [];
for(var n = -100; n <= 100; n++){
var bet = n/100;
var PriorH = 1/(Math.sqrt(2 * Math.PI * SIG_BET_H**2)) * Math.exp(-(bet - 0)**2/(2 * SIG_BET_H**2));
var PriorL = 1/(Math.sqrt(2 * Math.PI * SIG_BET_L**2)) * Math.exp(-(bet - 0)**2/(2 * SIG_BET_L**2));
var Prior = TET * PriorH + (1-TET) * PriorL;
var Fit = 1/(Math.sqrt(2 * Math.PI * SIG_EP**2)) * Math.exp(-(Y - bet)**2/(2 * SIG_EP**2));
var LogLikelihood = Math.log(Fit * Prior);
if (LogLikelihood < 10) {
Values.push(LogLikelihood);
} else {
Values.push(10);
}
}
return Values
}
var y = 0.3438;
var sigEp = 0.3594;
var sigBetH = 3.4688;
var sigBetL = 0.1406;
var tet = 0.0625;
var LogLikelihood = MixtureModel(y, sigEp, sigBetH, sigBetL, tet);
function StandardModel(Y, SIG_EP, SIG_BET){
var Values = [];
for(var n = -100; n <= 100; n++){
var bet = n/100;
var Fit = 1/(Math.sqrt(2 * Math.PI * SIG_EP**2)) * Math.exp(-(Y - bet)**2/(2 * SIG_EP**2));
var Prior = 1/(Math.sqrt(2 * Math.PI * SIG_BET**2)) * Math.exp(-(bet - 0)**2/(2 * SIG_BET**2));
var LogLikelihood = Math.log(Fit * Prior);
if (LogLikelihood < 1) {
Values.push(LogLikelihood);
} else {
Values.push(1);
}
}
return Values
}
var y = 0.3197;
var sigEp = 0.4268;
var sigBet = 0.5083;
var LogLikelihood = StandardModel(y, sigEp, sigBet);
var betHat = (sigBet**2/(sigEp**2 + sigBet**2)) * y;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment