貝氏理論基礎為條件機率,說明在一條件下(或稱先驗機率, prior probability),一事件發生的機率(又稱後驗概率, posterior probability)。條件機率概念如下,若 A, B 為樣本空間 \(S\) 中的二事件,且 \(P(A) > 0\),則在給定 A 發生下,B 發生之條件機率以 \(P(B|A)\) 表示,並定義為
\[ P(B|A) = \frac{P(A \cap B)}{P(A)}, \\ P(A \cap B) = P(B|A)*P(A) ... (1) \]
以此類推 \(P(A \cap B)\) 亦可由在 \(P(B) > 0\) 的條件下推算而得 \(P(A \cap B) = P(A|B)*P(B) ... (2)\)。而若整理上述 \((1)\) 及 \((2)\) 公式,則可得下列結論:
\[ P(A \cap B) = P(B|A)*P(A) = P(A|B)*P(B)\\ \Rightarrow P(B|A) = \frac{P(A|B)*P(B)}{P(A)} \]
而貝氏理論可視為條件機率的延伸說明。 假設一隨機現象的樣本空間為 \(S\),若事件 \(A_1, A_2, A_3, ..., A_n\) 滿足底下條件
則稱事件 \(A_1, A_2, A_3, ..., A_n\) 是樣本空間 \(S\) 的一個分割。而貝氏定理擁有 分割定理 與 貝氏定理 兩個定理。
\[ P(E) = P(A_1)*P(E|A_1) + P(A_2)*P(E|A_2) + P(A_3)*P(E|A_3) + ... + + P(A_n)*P(E|A_n)\\ = \sum_{k=1}^nP(A_k)*P(E | A_k) \]
特性,可以透過圖像化方式理解,如下:
\(A_1, A_2, A_3, ..., A_n\) 是樣本空間 \(S\) 的一個分割,\(E = (A_1 \cap E) \cup (A_2 \cap E) \cup (A_3 \cap E) \cup ... \cup (A_n \cap E)\) 且 \((A_1 \cap E),(A_2 \cap E), ... ,(A_n \cap E) 兩兩互斥\),故
\[ P(E) = P(A_1 \cap E) + P(A_2 \cap E) + ... + P(A_n \cap E)\\ = P(A_1)*P(E|A_1) + P(A_2)*P(E|A_2) + ... + + P(A_n)*P(E|A_n) \]
\[ P(A_i|E) = \frac{P(A_i \cap E)}{P(E)} = \frac{P(A_i)*P(E|A_i)}{\sum_{k=1}^nP(A_k)*P(E|A_k)},i=1,2,...,n \]
其中 \(A_1, A_2, A_3, ..., A_n\) 又可稱為先驗機率。
R 中有數個實作出貝氏理論的套件,如 naiveBayes{e1071} 與 NaiveBayes{klaR} 等都是實作函式。而 naiveBayes{e1071} 是以類別資料為對象,而 NaiveBayes{klaR} 則可以用連續資料作為分析對象。
貝氏方法可以用於分類,故又稱貝氏分類器,可使用來自於 e1071 的套件中 naiveBayes 函式來實現。使用的資料集來自於 mlbench 套件。
packageName <- c("e1071","mlbench")
for(i in 1:length(packageName)) {
if(!(packageName[i] %in% rownames(installed.packages()))) {
install.packages(packageName[i])
}
}
lapply(packageName, require, character.only = TRUE)
## Loading required package: e1071
## Loading required package: mlbench
## [[1]]
## [1] TRUE
##
## [[2]]
## [1] TRUE
使用來自於 mlbench 套件中的資料 HouseVotes84。其中 class 為輸出變數(要預測的變數),而其他變數為輸入變數(特徵值)。
data("HouseVotes84", package="mlbench")
head(HouseVotes84, 10)
## Class V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
## 1 republican n y n y y y n n n y <NA> y y y n
## 2 republican n y n y y y n n n n n y y y n
## 3 democrat <NA> y y <NA> y y n n n n y n y y n
## 4 democrat n y y n <NA> y n n n n y n y n n
## 5 democrat y y y n y y n n n n y <NA> y y y
## 6 democrat n y y n y y n n n n n n y y y
## 7 democrat n y n y y y n n n n n n <NA> y y
## 8 republican n y n y y y n n n n n n y y <NA>
## 9 republican n y n y y y n n n n n y y y n
## 10 democrat y y y n n n y y y n n n n n <NA>
## V16
## 1 y
## 2 <NA>
## 3 n
## 4 y
## 5 y
## 6 y
## 7 y
## 8 y
## 9 y
## 10 <NA>
# the prototype of naiveBayes
# formula: 公式, 如 Class ~ x1 + x2 等或 Class ~ . 等
# laplace: 使用 laplace 平滑調整
# type: 輸出結果內容,class (分類結果)與 raw(機率)
# threshold: 最小閥值
# na.action: NA 值處理方式
naiveBayes(
formula, data,
laplace = 0, type = c("class","raw"), threshold = 0.001,
na.action = na.pass, ...)
set.seed(123)
traning_idx = sample(1:nrow(HouseVotes84),floor(nrow(HouseVotes84)*2/3))
traning_data = HouseVotes84[traning_idx, ]
testing_data = HouseVotes84[-traning_idx, ]
model = naiveBayes(Class ~ ., data=traning_data)
model
##
## Naive Bayes Classifier for Discrete Predictors
##
## Call:
## naiveBayes.default(x = X, y = Y, laplace = laplace)
##
## A-priori probabilities:
## Y
## democrat republican
## 0.5827586 0.4172414
##
## Conditional probabilities:
## V1
## Y n y
## democrat 0.4024390 0.5975610
## republican 0.7966102 0.2033898
##
## V2
## Y n y
## democrat 0.5102041 0.4897959
## republican 0.5047619 0.4952381
##
## V3
## Y n y
## democrat 0.1333333 0.8666667
## republican 0.8644068 0.1355932
##
## V4
## Y n y
## democrat 0.96987952 0.03012048
## republican 0.01680672 0.98319328
##
## V5
## Y n y
## democrat 0.78395062 0.21604938
## republican 0.06666667 0.93333333
##
## V6
## Y n y
## democrat 0.5243902 0.4756098
## republican 0.1333333 0.8666667
##
## V7
## Y n y
## democrat 0.2012195 0.7987805
## republican 0.7350427 0.2649573
##
## V8
## Y n y
## democrat 0.1607143 0.8392857
## republican 0.8333333 0.1666667
##
## V9
## Y n y
## democrat 0.2341772 0.7658228
## republican 0.8487395 0.1512605
##
## V10
## Y n y
## democrat 0.5357143 0.4642857
## republican 0.4621849 0.5378151
##
## V11
## Y n y
## democrat 0.4787879 0.5212121
## republican 0.8849558 0.1150442
##
## V12
## Y n y
## democrat 0.8650307 0.1349693
## republican 0.1272727 0.8727273
##
## V13
## Y n y
## democrat 0.7267081 0.2732919
## republican 0.1478261 0.8521739
##
## V14
## Y n y
## democrat 0.63803681 0.36196319
## republican 0.01694915 0.98305085
##
## V15
## Y n y
## democrat 0.36477987 0.63522013
## republican 0.92857143 0.07142857
##
## V16
## Y n y
## democrat 0.06666667 0.93333333
## republican 0.29906542 0.70093458
pred <- predict(model, testing_data[,-1])
pred
## [1] republican democrat democrat republican republican democrat
## [7] democrat republican republican democrat republican democrat
## [13] democrat democrat democrat democrat democrat democrat
## [19] republican democrat democrat democrat republican democrat
## [25] republican republican republican republican democrat democrat
## [31] democrat democrat republican democrat democrat republican
## [37] republican democrat democrat democrat democrat democrat
## [43] republican democrat republican democrat democrat republican
## [49] democrat democrat republican republican democrat republican
## [55] republican republican republican democrat republican democrat
## [61] democrat republican democrat democrat democrat democrat
## [67] democrat democrat democrat republican democrat democrat
## [73] republican democrat republican democrat democrat republican
## [79] democrat republican democrat democrat democrat republican
## [85] democrat democrat democrat democrat democrat democrat
## [91] democrat democrat republican republican republican democrat
## [97] democrat democrat democrat democrat republican republican
## [103] democrat republican democrat democrat republican republican
## [109] republican democrat democrat democrat democrat democrat
## [115] republican democrat republican republican republican democrat
## [121] republican democrat republican democrat democrat republican
## [127] democrat democrat republican republican democrat democrat
## [133] republican republican republican democrat republican republican
## [139] republican democrat republican democrat democrat democrat
## [145] republican
## Levels: democrat republican
predict(model, testing_data[1:10,-1], type="raw")
## democrat republican
## [1,] 5.993665e-03 9.940063e-01
## [2,] 9.531394e-01 4.686062e-02
## [3,] 7.394944e-01 2.605056e-01
## [4,] 1.133874e-04 9.998866e-01
## [5,] 4.089389e-06 9.999959e-01
## [6,] 1.000000e+00 2.123986e-08
## [7,] 1.000000e+00 1.059360e-09
## [8,] 2.324822e-07 9.999998e-01
## [9,] 5.552942e-08 9.999999e-01
## [10,] 9.999938e-01 6.168911e-06
table(pred, testing_data$Class)
##
## pred democrat republican
## democrat 85 2
## republican 13 45
貝氏網路(又稱信念網路, 有向無環圖模型等),是一種機率圖型模型,藉由有向無環圖(directed acyclic graphs, or DAGs)中得知一組隨機變數(\(X_1, X_2, X_3, ..., X_n\))及其 n 組條件機率分配(conditional probability distributions, or CPDs)的性質。舉例而言,貝氏網路可用來表示疾病和相關症狀間的機率關係。
舉上例而言,假設有兩種因子(\(F1\),\(F2\))會導致疾病(\(D\))發生,但第二個因子會受到第一個因子的影響,就每個因子而言,就只有兩種可能結果:導致(T)與不導致(F),則此貝氏網路(如上圖)之聯合機率可表示成:
\[ P(D,F_1,F_2) = P(D|F_1,F_2)*P(F_2|F_1)*P(F_1) \] 。反之,此模型亦可以回答「假如已知疾病發生,則來自於第一因子造成的機率為何?」等問題,此問題解法如下:
\[ P(F_1=T|D=T) = \frac{P(F_1=T,D=T)}{P(D=T)}\\ =\frac{\sum_{F_2 \in \{T,F\}}P(F_1 = T, S_2, D=T)}{\sum_{F_1,F_2 \in \{T,F\}}P(D=T,F_1,F_2)}\\ =\frac {(0.4*0.7*1)_{F_1=T,F_2=T,D=T},(0.4*0.3*1)_{F_1=T,F_2=F,D=T}} {(0.4*0.7*1)_{F_1=T, F_2=T, D=T} + (0.4*0.3*1)_{TFT} + (0.6*0.3*1)_{FTT} + (0)_{FFF}}\\ \approx 0.6896 = 68.96 \% \]
解貝氏網路是相當複雜的計算,一般而言可以分成底下兩類:
貝氏網路可透過 deal 來實現,包含如 network 等重要函式。
packageName <- c("deal")
for(i in 1:length(packageName)) {
if(!(packageName[i] %in% rownames(installed.packages()))) {
install.packages(packageName[i])
}
}
lapply(packageName, require, character.only = TRUE)
## Loading required package: deal
## [[1]]
## [1] TRUE
| 函式 | 說明 |
|---|---|
| network | 建構網路 |
| localprob | 先驗機率 |
| autosearch | 自動搜索網路 |
| insert | 加入一個有向線(箭頭表示)至網路中 |
| remover | 於網路中移除一個有向線 |
| jointprior | 計算先驗聯合機率分布 |
| learn | 於局部機率分布中估計參數 |
| heuristic | 透過 greedy search 嘗試建立網路,以提升網路分數 |
| getnetwork | 取得建構網路的資料資訊 |
| savenet | 儲存網路 |
| modelstring | 取得建構後的網路資訊 |
| makenw | 創建網路家族譜 |
| gettable | 取得所有的子網路資訊 |
| drawnetwork | 透過互動方式讓使用者建立貝式網路 |
| maketrylist | 為了更快速學習,trylist 作為查找預先定義的父節點 |
| nwfsort | 對網路族作分析,並依網路與得分進行排序 |
| perturb | 對網路做隨機更改,如新增/修改/刪除一條有向線等 |
| score | 網路的分數 |
set.seed(109)
sex <- gl(2,4,labels = c("male","female"))
age <- gl(2,2,8)
yield <- rnorm(length(sex))
weight <- rnorm(length(sex))
allData <- data.frame(sex, age, yield, weight)
# the prototype of network
network(data
, specifygraph=FALSE, inspectprob=FALSE
, doprob=TRUE, yr=c(0,350), xr=yr, ...)
data.network <- network(allData)
localprob(data.network,"sex") <- c(0.6,0.4)
localprob(data.network,"yield") <- c(2.0,0)
localprob(data.network,"weight") <- c(1,0)
data.network
## ## 4 ( 2 discrete+ 2 ) nodes;score= ;relscore=
## 1 sex discrete(2)
## 2 age discrete(2)
## 3 yield continuous()
## 4 weight continuous()
plot(data.network)
prior <- jointprior(data.network)
## Imaginary sample size: 6.666667
data.network <- getnetwork(learn(data.network, allData, prior))
theBestNetwork <- getnetwork(autosearch(data.network, allData, prior))
## [Autosearch
## (1) -35.65956 [sex][age][yield|sex][weight]
## (2) -35.02124 [sex][age][yield|sex][weight|age]
## (3) -33.87373 [sex][age][yield|sex][weight|age:yield]
## Total 0.5 add 0.23 rem 0.01 turn 0.03 sort 0.02 choose 0 rest 0.21 ]
print(data.network, condposterior = TRUE)
## ## 4 ( 2 discrete+ 2 ) nodes;score= -36.5371400840653 ;relscore=
## 1 sex discrete(2)
## ------------------------------------------------------------
## Conditional Posterior: sex
## [[1]]
## [[1]]$alpha
##
## male female
## 8.000000 6.666667
##
## [[1]]$nu
## [1] NA
##
## [[1]]$rho
## [1] NA
##
## [[1]]$mu
## [1] NA
##
## [[1]]$phi
## [1] NA
##
## [[1]]$tau
## [1] NA
##
##
## 2 age discrete(2)
## ------------------------------------------------------------
## Conditional Posterior: age
## [[1]]
## [[1]]$alpha
##
## 1 2
## 7.333333 7.333333
##
## [[1]]$nu
## [1] NA
##
## [[1]]$rho
## [1] NA
##
## [[1]]$mu
## [1] NA
##
## [[1]]$phi
## [1] NA
##
## [[1]]$tau
## [1] NA
##
##
## 3 yield continuous()
## ------------------------------------------------------------
## Conditional Posterior: yield
## [[1]]
## [[1]]$alpha
## [1] NA
##
## [[1]]$nu
## [1] 6.666667
##
## [[1]]$rho
## [1] 14.66667
##
## [[1]]$mu
## [1] 0.09467204
##
## [[1]]$phi
## [1] 16.40989
##
## [[1]]$tau
## [1] 14.66667
##
##
## 4 weight continuous()
## ------------------------------------------------------------
## Conditional Posterior: weight
## [[1]]
## [[1]]$alpha
## [1] NA
##
## [[1]]$nu
## [1] 6.666667
##
## [[1]]$rho
## [1] 14.66667
##
## [[1]]$mu
## [1] -0.07157472
##
## [[1]]$phi
## [1] 8.046199
##
## [[1]]$tau
## [1] 14.66667
savenet(data.network, file("data.net"))
data(rats)
head(rats, 10)
## Sex Drug W1 W2
## 1 M D1 5 6
## 2 M D1 7 6
## 3 M D1 9 9
## 4 M D1 5 4
## 5 M D2 9 12
## 6 M D2 7 7
## 7 M D2 7 6
## 8 M D2 6 8
## 9 M D3 14 11
## 10 M D3 21 15
rats.net <- network(rats)
# 計算聯合先驗機率分布
rats.prior <- jointprior(rats.net, 12)
## Imaginary sample size: 12
# learn: 估計機率分布下的參數
# getnetwork: 依據學習後的參數修改網路
rats.net <- getnetwork(learn(rats.net, rats, rats.prior))
# insert: add the arrow from node.2 to node.1
rats.net <- getnetwork(insert(rats.net,2,1, rats, rats.prior))
# insert: add the arrow from node.1 to node.3
rats.net <- getnetwork(insert(rats.net,1,3, rats, rats.prior))
# trace: 列出搜尋結果
# removecycles: 搜索網路時,是否排除含有環(cycle)的子網路
rats.net.auto <- autosearch(rats.net, rats, rats.prior, trace = FALSE, removecycles = TRUE)
## [Autosearch (1) -170.0867 [Sex|Drug][Drug][W1|Sex:W2][W2]
## (2) -166.3658 [Sex|Drug][Drug][W1|Sex:Drug:W2][W2]
## (3) -163.5749 [Sex|Drug][Drug][W1|Drug:W2][W2]
## (4) -161.4324 [Sex|Drug][Drug][W1|Drug][W2|W1]
## (5) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.07 add 0.02 rem 0.03 turn 0 sort 0 choose 0.02 rest 0 ]
plot(getnetwork(rats.net.auto))
# 透過 greedy search 嘗試建立網路,以提升網路分數
rats.net.hisc <- heuristic(rats.net, rats, rats.prior, restart = 20, trace = FALSE)
## [Heuristic [Autosearch (1) -170.0867 [Sex|Drug][Drug][W1|Sex:W2][W2]
## (2) -166.3658 [Sex|Drug][Drug][W1|Sex:Drug:W2][W2]
## (3) -163.5749 [Sex|Drug][Drug][W1|Drug:W2][W2]
## (4) -161.4324 [Sex|Drug][Drug][W1|Drug][W2|W1]
## (5) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.07 add 0.02 rem 0.02 turn 0 sort 0.01 choose 0 rest 0.02 ]
## [Perturb 0.03 ]
## [Autosearch (1) -166.4958 [Sex][Drug][W1|Drug][W2]
## (2) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.01 add 0.01 rem 0 turn 0 sort 0 choose 0 rest 0 ]
## [Perturb 0.02 ]
## [Autosearch (1) -163.2002 [Sex][Drug][W1|Sex:Drug][W2|Sex:W1]
## (2) -160.6097 [Sex][Drug][W1|Drug][W2|Sex:W1]
## (3) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.03 add 0 rem 0 turn 0.01 sort 0 choose 0 rest 0.02 ]
## [Perturb 0.04 ]
## [Perturb 0.02 ]
## [Autosearch (1) -171.5106 [Sex|Drug][Drug][W1|Sex:W2][W2|Sex:Drug]
## (2) -167.7897 [Sex|Drug][Drug][W1|Sex:Drug:W2][W2|Sex:Drug]
## (3) -164.9988 [Sex|Drug][Drug][W1|Drug:W2][W2|Sex:Drug]
## (4) -163.5157 [Sex|Drug][Drug][W1|Drug:W2][W2|Drug]
## (5) -162.3077 [Sex][Drug][W1|Drug:W2][W2|Drug]
## (6) -162.3077 [Sex][Drug][W1|Drug][W2|Drug:W1]
## (7) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.03 add 0.01 rem 0.02 turn 0 sort 0 choose 0 rest 0 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0.02 ]
## [Autosearch (1) -164.2492 [Sex][Drug|Sex][W1|Drug:W2][W2|Sex]
## (2) -161.8177 [Sex][Drug|Sex][W1|Drug][W2|Sex:W1]
## (3) -160.6097 [Sex][Drug][W1|Drug][W2|Sex:W1]
## (4) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0 add 0 rem 0 turn 0 sort 0 choose 0 rest 0 ]
## [Perturb 0.02 ]
## [Autosearch (1) -170.0275 [Sex][Drug|Sex][W1|Sex:W2][W2|Drug]
## (2) -166.3066 [Sex][Drug|Sex][W1|Sex:Drug:W2][W2|Drug]
## (3) -163.5157 [Sex][Drug|Sex][W1|Drug:W2][W2|Drug]
## (4) -162.3077 [Sex][Drug][W1|Drug:W2][W2|Drug]
## (5) -162.3077 [Sex][Drug][W1|Drug][W2|Drug:W1]
## (6) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.03 add 0 rem 0 turn 0 sort 0 choose 0 rest 0.03 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0.01 ]
## [Autosearch (1) -168.3781 [Sex|Drug][Drug][W1|Drug][W2|Sex]
## (2) -161.8177 [Sex|Drug][Drug][W1|Drug][W2|Sex:W1]
## (3) -160.6097 [Sex][Drug][W1|Drug][W2|Sex:W1]
## (4) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.02 add 0 rem 0 turn 0.02 sort 0 choose 0 rest 0 ]
## [Perturb 0 ]
## [Perturb 0.02 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Perturb 0 ]
## [Autosearch (1) -164.023 [Sex][Drug|Sex][W1|Sex:Drug][W2|W1]
## (2) -161.4324 [Sex][Drug|Sex][W1|Drug][W2|W1]
## (3) -160.2244 [Sex][Drug][W1|Drug][W2|W1]
## Total 0.01 add 0 rem 0 turn 0 sort 0.01 choose 0 rest 0 ]
## Tried 120 out of approx. 144 networks
## 0.46 ]
## Perturb: 0.19 ,Autosearch: 0.28 ,Unique: 0
plot(getnetwork(rats.net.hisc))
print(modelstring(getnetwork(rats.net.hisc)))
## [1] "[Sex][Drug][W1|Drug][W2|W1]"
plot(makenw(gettable(rats.net.hisc), rats.net))
nwfsort(makenw(gettable(rats.net.hisc), rats.net))
## Discrete: Sex(2),Drug(3)
## Continuous:W1,W2
## log(Score) |Relscore |Network
## ------------------------------------------------------------
## 1. -160.2244 1 [Sex][Drug][W1|Drug][W2|W1]
## 2. -160.6097 0.6802642 [Sex][Drug][W1|Drug][W2|SexW1]
## 3. -161.4324 0.2987972 [Sex|Drug][Drug][W1|Drug][W2|W1]
## 4. -161.4324 0.2987972 [Sex][Drug|Sex][W1|Drug][W2|W1]
## 5. -161.8177 0.203261 [Sex|Drug][Drug][W1|Drug][W2|SexW1]
## 6. -161.8177 0.203261 [Sex][Drug|Sex][W1|Drug][W2|SexW1]
## 7. -162.3077 0.1245122 [Sex][Drug][W1|Drug][W2|DrugW1]
## 8. -162.3077 0.1245122 [Sex][Drug][W1|DrugW2][W2|Drug]
## 9. -162.3669 0.1173555 [Sex][Drug][W1|DrugW2][W2]
## 10. -162.815 0.07497692 [Sex][Drug][W1|SexDrug][W2|W1]
## 11. -163.0412 0.05979467 [Sex][Drug][W1|DrugW2][W2|Sex]
## 12. -163.2002 0.05100412 [Sex][Drug][W1|SexDrug][W2|SexW1]
## 13. -163.5157 0.03720389 [Sex|Drug][Drug][W1|DrugW2][W2|Drug]
## 14. -163.5157 0.03720389 [Sex|Drug][Drug][W1|Drug][W2|DrugW1]
## 15. -163.5157 0.03720389 [Sex][Drug|Sex][W1|DrugW2][W2|Drug]
## 16. -163.5157 0.03720389 [Sex][Drug|Sex][W1|Drug][W2|DrugW1]
## 17. -163.5749 0.0350655 [Sex|Drug][Drug][W1|DrugW2][W2]
## 18. -163.5749 0.0350655 [Sex][Drug|Sex][W1|DrugW2][W2]
## 19. -163.7908 0.02825631 [Sex][Drug][W1|DrugW2][W2|SexDrug]
## 20. -163.9911 0.02312842 [Sex][Drug][W1|Drug][W2|SexDrugW1]
## 21. -164.023 0.02240289 [Sex|Drug][Drug][W1|SexDrug][W2|W1]
## 22. -164.023 0.02240289 [Sex][Drug|Sex][W1|SexDrug][W2|W1]
## 23. -164.2492 0.01786648 [Sex|Drug][Drug][W1|DrugW2][W2|Sex]
## 24. -164.2492 0.01786648 [Sex][Drug|Sex][W1|DrugW2][W2|Sex]
## 25. -164.4082 0.01523989 [Sex|Drug][Drug][W1|SexDrug][W2|SexW1]
## 26. -164.4082 0.01523989 [Sex][Drug|Sex][W1|SexDrug][W2|SexW1]
## 27. -164.8983 0.009335542 [Sex][Drug][W1|SexDrug][W2|DrugW1]
## 28. -164.9988 0.008442904 [Sex|Drug][Drug][W1|DrugW2][W2|SexDrug]
## 29. -164.9988 0.008442904 [Sex][Drug|Sex][W1|DrugW2][W2|SexDrug]
## 30. -165.0986 0.007641349 [Sex][Drug][W1|SexDrugW2][W2|Drug]
## 31. -165.1578 0.007202143 [Sex][Drug][W1|SexDrugW2][W2]
## 32. -165.1991 0.006910706 [Sex][Drug|Sex][W1|Drug][W2|SexDrugW1]
## 33. -165.1991 0.006910706 [Sex|Drug][Drug][W1|Drug][W2|SexDrugW1]
## 34. -165.8321 0.003669616 [Sex][Drug][W1|SexDrugW2][W2|Sex]
## 35. -166.1063 0.002789433 [Sex][Drug|Sex][W1|SexDrug][W2|DrugW1]
## 36. -166.3066 0.002283214 [Sex|Drug][Drug][W1|SexDrugW2][W2|Drug]
## 37. -166.3066 0.002283214 [Sex][Drug|Sex][W1|SexDrugW2][W2|Drug]
## 38. -166.3658 0.00215198 [Sex|Drug][Drug][W1|SexDrugW2][W2]
## 39. -166.3658 0.00215198 [Sex][Drug|Sex][W1|SexDrugW2][W2]
## 40. -166.4366 0.002004747 [Sex][Drug][W1|Drug][W2|Drug]
## 41. -166.4958 0.001889518 [Sex][Drug][W1|Drug][W2]
## 42. -166.5817 0.001734098 [Sex][Drug][W1|SexDrug][W2|SexDrugW1]
## 43. -166.5817 0.001734098 [Sex][Drug][W1|SexDrugW2][W2|SexDrug]
## 44. -167.0401 0.001096471 [Sex|Drug][Drug][W1|SexDrugW2][W2|Sex]
## 45. -167.0401 0.001096471 [Sex][Drug|Sex][W1|SexDrugW2][W2|Sex]
## 46. -167.1701 0.0009627422 [Sex][Drug][W1|Drug][W2|Sex]
## 47. -167.6446 0.0005990126 [Sex|Drug][Drug][W1|Drug][W2|Drug]
## 48. -167.6446 0.0005990126 [Sex][Drug|Sex][W1|Drug][W2|Drug]
## 49. -167.7038 0.0005645827 [Sex|Drug][Drug][W1|Drug][W2]
## 50. -167.7038 0.0005645827 [Sex][Drug|Sex][W1|Drug][W2]
## 51. -167.7897 0.0005181435 [Sex|Drug][Drug][W1|SexDrugW2][W2|SexDrug]
## 52. -167.7897 0.0005181435 [Sex][Drug|Sex][W1|SexDrugW2][W2|SexDrug]
## 53. -167.7897 0.0005181435 [Sex|Drug][Drug][W1|SexDrug][W2|SexDrugW1]
## 54. -168.3781 0.0002876646 [Sex][Drug|Sex][W1|Drug][W2|Sex]
## 55. -168.3781 0.0002876646 [Sex|Drug][Drug][W1|Drug][W2|Sex]
## 56. -168.8195 0.0001850109 [Sex][Drug][W1|SexW2][W2|Drug]
## 57. -168.8787 0.0001743769 [Sex][Drug][W1|SexW2][W2]
## 58. -168.9201 0.0001672946 [Sex][Drug][W1|W2][W2|Drug]
## 59. -168.9793 0.0001576789 [Sex][Drug][W1][W2|W1]
## 60. -168.9793 0.0001576789 [Sex][Drug][W1|W2][W2]
## 61. -169.0864 0.0001416703 [Sex][Drug][W1|SexDrug][W2]
## 62. -169.1277 0.0001359376 [Sex|Drug][Drug][W1|Drug][W2|SexDrug]
## 63. -169.1677 0.0001306081 [Sex][Drug][W1|Sex][W2|W1]
## 64. -169.3646 0.0001072633 [Sex][Drug][W1][W2|SexW1]
## 65. -169.553 8.884804e-05 [Sex][Drug][W1|SexW2][W2|Sex]
## 66. -169.553 8.884804e-05 [Sex][Drug][W1|Sex][W2|SexW1]
## 67. -169.7607 7.218345e-05 [Sex][Drug][W1|SexDrug][W2|Sex]
## 68. -170.0275 5.528073e-05 [Sex|Drug][Drug][W1|SexW2][W2|Drug]
## 69. -170.0275 5.528073e-05 [Sex][Drug|Sex][W1|SexW2][W2|Drug]
## 70. -170.0867 5.210332e-05 [Sex|Drug][Drug][W1|SexW2][W2]
## 71. -170.0867 5.210332e-05 [Sex][Drug|Sex][W1|SexW2][W2]
## 72. -170.1281 4.998714e-05 [Sex|Drug][Drug][W1|W2][W2|Drug]
## 73. -170.1281 4.998714e-05 [Sex][Drug|Sex][W1|W2][W2|Drug]
## 74. -170.1873 4.711399e-05 [Sex|Drug][Drug][W1|W2][W2]
## 75. -170.1873 4.711399e-05 [Sex|Drug][Drug][W1][W2|W1]
## 76. -170.1873 4.711399e-05 [Sex][Drug|Sex][W1][W2|W1]
## 77. -170.2352 4.491212e-05 [Sex][Drug|Sex][W1|SexDrug][W2|Drug]
## 78. -170.2944 4.233068e-05 [Sex|Drug][Drug][W1|SexDrug][W2]
## 79. -170.2944 4.233068e-05 [Sex][Drug|Sex][W1|SexDrug][W2]
## 80. -170.3026 4.198564e-05 [Sex][Drug][W1|SexW2][W2|SexDrug]
## 81. -170.3757 3.902534e-05 [Sex|Drug][Drug][W1|Sex][W2|W1]
## 82. -170.3757 3.902534e-05 [Sex][Drug|Sex][W1|Sex][W2|W1]
## 83. -170.5726 3.204997e-05 [Sex][Drug|Sex][W1][W2|SexW1]
## 84. -170.5726 3.204997e-05 [Sex|Drug][Drug][W1][W2|SexW1]
## 85. -170.761 2.654754e-05 [Sex|Drug][Drug][W1|SexW2][W2|Sex]
## 86. -170.761 2.654754e-05 [Sex|Drug][Drug][W1|Sex][W2|SexW1]
## 87. -170.761 2.654754e-05 [Sex][Drug|Sex][W1|Sex][W2|SexW1]
## 88. -170.761 2.654754e-05 [Sex][Drug|Sex][W1|SexW2][W2|Sex]
## 89. -170.8616 2.400539e-05 [Sex][Drug|Sex][W1|W2][W2|Sex]
## 90. -170.8616 2.400539e-05 [Sex|Drug][Drug][W1|W2][W2|Sex]
## 91. -170.9687 2.156821e-05 [Sex][Drug|Sex][W1|SexDrug][W2|Sex]
## 92. -170.9687 2.156821e-05 [Sex|Drug][Drug][W1|SexDrug][W2|Sex]
## 93. -171.0627 1.963294e-05 [Sex][Drug][W1][W2|DrugW1]
## 94. -171.5106 1.254519e-05 [Sex|Drug][Drug][W1|SexW2][W2|SexDrug]
## 95. -171.5106 1.254519e-05 [Sex][Drug|Sex][W1|SexW2][W2|SexDrug]
## 96. -171.6112 1.134388e-05 [Sex|Drug][Drug][W1|W2][W2|SexDrug]
## 97. -171.7183 1.019218e-05 [Sex|Drug][Drug][W1|SexDrug][W2|SexDrug]
## 98. -172.459 4.85913e-06 [Sex][Drug|Sex][W1|Sex][W2|DrugW1]
## 99. -172.9344 3.020759e-06 [Sex][Drug][W1|Sex][W2|SexDrugW1]
## 100. -174.1424 9.025943e-07 [Sex|Drug][Drug][W1|Sex][W2|SexDrugW1]
## 101. -175.1916 3.161061e-07 [Sex][Drug][W1][W2|Drug]
## 102. -175.2508 2.979371e-07 [Sex][Drug][W1][W2]
## 103. -175.3799 2.618362e-07 [Sex][Drug][W1|Sex][W2|Drug]
## 104. -175.4391 2.467865e-07 [Sex][Drug][W1|Sex][W2]
## 105. -175.9251 1.518041e-07 [Sex][Drug][W1][W2|Sex]
## 106. -176.1134 1.25742e-07 [Sex][Drug][W1|Sex][W2|Sex]
## 107. -176.3996 9.445162e-08 [Sex][Drug|Sex][W1][W2|Drug]
## 108. -176.4588 8.902276e-08 [Sex|Drug][Drug][W1][W2]
## 109. -176.4588 8.902276e-08 [Sex][Drug|Sex][W1][W2]
## 110. -176.5879 7.823591e-08 [Sex|Drug][Drug][W1|Sex][W2|Drug]
## 111. -176.5879 7.823591e-08 [Sex][Drug|Sex][W1|Sex][W2|Drug]
## 112. -176.6471 7.373909e-08 [Sex|Drug][Drug][W1|Sex][W2]
## 113. -176.6471 7.373909e-08 [Sex][Drug|Sex][W1|Sex][W2]
## 114. -176.863 5.942007e-08 [Sex][Drug][W1|Sex][W2|SexDrug]
## 115. -177.1331 4.535863e-08 [Sex|Drug][Drug][W1][W2|Sex]
## 116. -177.1331 4.535863e-08 [Sex][Drug|Sex][W1][W2|Sex]
## 117. -177.3214 3.757134e-08 [Sex|Drug][Drug][W1|Sex][W2|Sex]
## 118. -177.8827 2.143448e-08 [Sex|Drug][Drug][W1][W2|SexDrug]
## 119. -178.071 1.775455e-08 [Sex|Drug][Drug][W1|Sex][W2|SexDrug]
## 120. -178.071 1.775455e-08 [Sex][Drug|Sex][W1|Sex][W2|SexDrug]