# Define the state and observation space
states = c("1","2","3","H")
observations <- c("fever", "ok")

# Define the start probabilities
startProbs <- c(1,0,0,0)

# Define the transition probabilities
transProbs <- matrix(data = c(0.6,0.3 ,0   ,0.1,
                              0  ,0.75,0.15,0.1,
                              0  ,0   ,0.9 ,0.1,
                              0  ,0   ,0   ,1),
                                  byrow = T,nrow = 4)

# Define the emission probabilities
emitProbs <- matrix(c(0.1, 0.9, 0.5, 0.5, 0.8, 0.2, 0, 1), byrow=T, nrow=4)

# Create the HMM
hmm <- initHMM(States=states, Symbols=observations, startProbs=startProbs, transProbs=transProbs, emissionProbs=emitProbs)

# Print the HMM
print(hmm)
## $States
## [1] "1" "2" "3" "H"
## 
## $Symbols
## [1] "fever" "ok"   
## 
## $startProbs
## 1 2 3 H 
## 1 0 0 0 
## 
## $transProbs
##     to
## from   1    2    3   H
##    1 0.6 0.30 0.00 0.1
##    2 0.0 0.75 0.15 0.1
##    3 0.0 0.00 0.90 0.1
##    H 0.0 0.00 0.00 1.0
## 
## $emissionProbs
##       symbols
## states fever  ok
##      1   0.1 0.9
##      2   0.5 0.5
##      3   0.8 0.2
##      H   0.0 1.0
simHMM(hmm,15)
## $states
##  [1] "1" "2" "2" "2" "2" "2" "2" "3" "3" "3" "3" "3" "3" "3" "H"
## 
## $observation
##  [1] "ok"    "fever" "ok"    "fever" "ok"    "ok"    "fever" "fever" "fever"
## [10] "ok"    "fever" "fever" "fever" "fever" "ok"

What is the most likely sequence of test results in the first three days in the hospital?

which.max(c(
sum(exp(forward(hmm,c("fever","fever","fever")))[,3]),
sum(exp(forward(hmm,c("fever","fever","ok")))[,3]),
sum(exp(forward(hmm,c("fever","ok","fever")))[,3]),
sum(exp(forward(hmm,c("ok","fever","fever")))[,3]),
sum(exp(forward(hmm,c("fever","ok","ok")))[,3]),
sum(exp(forward(hmm,c("ok","fever","ok")))[,3]),
sum(exp(forward(hmm,c("ok","ok","fever")))[,3]),
sum(exp(forward(hmm,c("ok","ok","ok")))[,3])))
## [1] 8
print(sum(exp(forward(hmm,c("ok","ok","ok")))[,3]))
## [1] 0.542115
print(" -ok,ok,ok- most likely ")
## [1] " -ok,ok,ok- most likely "

What is the probability of three days with fever in a row (trace: fever, fever, fever) in the first three days in the hospital?

sum(exp(forward(hmm,c("fever","fever","fever")))[,3])
## [1] 0.008685

What is the probability of that trace (fever, fever, fever) after 5 days in the hospital?

sum(
sum(exp(forward(hmm,c("fever","fever","fever","fever","fever")))[,5]),
sum(exp(forward(hmm,c("fever","ok","fever","fever","fever")))[,5]),
sum(exp(forward(hmm,c("ok","fever","fever","fever","fever")))[,5]),
sum(exp(forward(hmm,c("ok","ok","fever","fever","fever")))[,5])
)
## [1] 0.07687406

What is the most likely path that led to observing three days without fever in a row (trace: OK, OK, OK) in the first three days in the hospital?

viterbi(hmm,c("ok","ok","ok"))
## [1] "1" "1" "1"

What is the most likely path of that trace (OK, OK, OK) after 5 days in the hospital?

viterbi(hmm,c("fever","fever","ok","ok","ok"))
## [1] "1" "2" "H" "H" "H"
viterbi(hmm,c("fever","ok","ok","ok","ok"))
## [1] "1" "H" "H" "H" "H"
viterbi(hmm,c("ok","fever","ok","ok","ok"))
## [1] "1" "2" "H" "H" "H"
viterbi(hmm,c("ok","ok","ok","ok","ok"))
## [1] "1" "H" "H" "H" "H"
print(" most likely path is -H,H,H- ")
## [1] " most likely path is -H,H,H- "
LS0tDQp0aXRsZTogIkFETSBUYXNrIDEiDQphdXRob3I6ICJEb21pbmlrIERpZWRyaWNoIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmxpYnJhcnkoSE1NKQ0KYGBgDQoNCmBgYHtyfQ0KDQojIERlZmluZSB0aGUgc3RhdGUgYW5kIG9ic2VydmF0aW9uIHNwYWNlDQpzdGF0ZXMgPSBjKCIxIiwiMiIsIjMiLCJIIikNCm9ic2VydmF0aW9ucyA8LSBjKCJmZXZlciIsICJvayIpDQoNCiMgRGVmaW5lIHRoZSBzdGFydCBwcm9iYWJpbGl0aWVzDQpzdGFydFByb2JzIDwtIGMoMSwwLDAsMCkNCg0KIyBEZWZpbmUgdGhlIHRyYW5zaXRpb24gcHJvYmFiaWxpdGllcw0KdHJhbnNQcm9icyA8LSBtYXRyaXgoZGF0YSA9IGMoMC42LDAuMyAsMCAgICwwLjEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAsMC43NSwwLjE1LDAuMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICwwICAgLDAuOSAsMC4xLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgLDAgICAsMCAgICwxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXJvdyA9IFQsbnJvdyA9IDQpDQoNCiMgRGVmaW5lIHRoZSBlbWlzc2lvbiBwcm9iYWJpbGl0aWVzDQplbWl0UHJvYnMgPC0gbWF0cml4KGMoMC4xLCAwLjksIDAuNSwgMC41LCAwLjgsIDAuMiwgMCwgMSksIGJ5cm93PVQsIG5yb3c9NCkNCg0KIyBDcmVhdGUgdGhlIEhNTQ0KaG1tIDwtIGluaXRITU0oU3RhdGVzPXN0YXRlcywgU3ltYm9scz1vYnNlcnZhdGlvbnMsIHN0YXJ0UHJvYnM9c3RhcnRQcm9icywgdHJhbnNQcm9icz10cmFuc1Byb2JzLCBlbWlzc2lvblByb2JzPWVtaXRQcm9icykNCg0KIyBQcmludCB0aGUgSE1NDQpwcmludChobW0pDQoNCnNpbUhNTShobW0sMTUpDQoNCg0KYGBgDQoNCg0KV2hhdCBpcyB0aGUgbW9zdCBsaWtlbHkgc2VxdWVuY2Ugb2YgdGVzdCByZXN1bHRzIGluIHRoZSBmaXJzdCB0aHJlZSBkYXlzIGluIHRoZSBob3NwaXRhbD8NCg0KYGBge3J9DQp3aGljaC5tYXgoYygNCnN1bShleHAoZm9yd2FyZChobW0sYygiZmV2ZXIiLCJmZXZlciIsImZldmVyIikpKVssM10pLA0Kc3VtKGV4cChmb3J3YXJkKGhtbSxjKCJmZXZlciIsImZldmVyIiwib2siKSkpWywzXSksDQpzdW0oZXhwKGZvcndhcmQoaG1tLGMoImZldmVyIiwib2siLCJmZXZlciIpKSlbLDNdKSwNCnN1bShleHAoZm9yd2FyZChobW0sYygib2siLCJmZXZlciIsImZldmVyIikpKVssM10pLA0Kc3VtKGV4cChmb3J3YXJkKGhtbSxjKCJmZXZlciIsIm9rIiwib2siKSkpWywzXSksDQpzdW0oZXhwKGZvcndhcmQoaG1tLGMoIm9rIiwiZmV2ZXIiLCJvayIpKSlbLDNdKSwNCnN1bShleHAoZm9yd2FyZChobW0sYygib2siLCJvayIsImZldmVyIikpKVssM10pLA0Kc3VtKGV4cChmb3J3YXJkKGhtbSxjKCJvayIsIm9rIiwib2siKSkpWywzXSkpKQ0KDQpwcmludChzdW0oZXhwKGZvcndhcmQoaG1tLGMoIm9rIiwib2siLCJvayIpKSlbLDNdKSkNCnByaW50KCIgLW9rLG9rLG9rLSBtb3N0IGxpa2VseSAiKQ0KYGBgDQoNCldoYXQgaXMgdGhlIHByb2JhYmlsaXR5IG9mIHRocmVlIGRheXMgd2l0aCBmZXZlciBpbiBhIHJvdyAodHJhY2U6IGZldmVyLCBmZXZlciwgZmV2ZXIpIGluIHRoZSBmaXJzdCB0aHJlZSBkYXlzIGluIHRoZSBob3NwaXRhbD8gDQoNCmBgYHtyfQ0Kc3VtKGV4cChmb3J3YXJkKGhtbSxjKCJmZXZlciIsImZldmVyIiwiZmV2ZXIiKSkpWywzXSkNCg0KYGBgDQoNCg0KDQoNCldoYXQgaXMgdGhlIHByb2JhYmlsaXR5IG9mIHRoYXQgdHJhY2UgKGZldmVyLCBmZXZlciwgZmV2ZXIpIGFmdGVyIDUgZGF5cyBpbiB0aGUgaG9zcGl0YWw/IA0KDQpgYGB7cn0NCnN1bSgNCnN1bShleHAoZm9yd2FyZChobW0sYygiZmV2ZXIiLCJmZXZlciIsImZldmVyIiwiZmV2ZXIiLCJmZXZlciIpKSlbLDVdKSwNCnN1bShleHAoZm9yd2FyZChobW0sYygiZmV2ZXIiLCJvayIsImZldmVyIiwiZmV2ZXIiLCJmZXZlciIpKSlbLDVdKSwNCnN1bShleHAoZm9yd2FyZChobW0sYygib2siLCJmZXZlciIsImZldmVyIiwiZmV2ZXIiLCJmZXZlciIpKSlbLDVdKSwNCnN1bShleHAoZm9yd2FyZChobW0sYygib2siLCJvayIsImZldmVyIiwiZmV2ZXIiLCJmZXZlciIpKSlbLDVdKQ0KKQ0KYGBgDQoNCg0KDQoNCldoYXQgaXMgdGhlIG1vc3QgbGlrZWx5IHBhdGggdGhhdCBsZWQgdG8gb2JzZXJ2aW5nIHRocmVlIGRheXMgd2l0aG91dCBmZXZlciBpbiBhIHJvdyAodHJhY2U6IE9LLCBPSywgT0spIGluIHRoZSBmaXJzdCB0aHJlZSBkYXlzIGluIHRoZSBob3NwaXRhbD8gDQoNCmBgYHtyfQ0Kdml0ZXJiaShobW0sYygib2siLCJvayIsIm9rIikpDQpgYGANCg0KDQoNCg0KV2hhdCBpcyB0aGUgbW9zdCBsaWtlbHkgcGF0aCBvZiB0aGF0IHRyYWNlIChPSywgT0ssIE9LKSBhZnRlciA1IGRheXMgaW4gdGhlIGhvc3BpdGFsPyANCg0KYGBge3J9DQp2aXRlcmJpKGhtbSxjKCJmZXZlciIsImZldmVyIiwib2siLCJvayIsIm9rIikpDQp2aXRlcmJpKGhtbSxjKCJmZXZlciIsIm9rIiwib2siLCJvayIsIm9rIikpDQp2aXRlcmJpKGhtbSxjKCJvayIsImZldmVyIiwib2siLCJvayIsIm9rIikpDQp2aXRlcmJpKGhtbSxjKCJvayIsIm9rIiwib2siLCJvayIsIm9rIikpDQoNCnByaW50KCIgbW9zdCBsaWtlbHkgcGF0aCBpcyAtSCxILEgtICIpDQoNCmBgYA0KDQo=