, если возможно создать соединение с базой данных в том же файле, где хранятся учетные данные. Вставьте учетные данные в оператор соединения.
mysql_connect("localhost", "me", "mypass");
В противном случае лучше отключить учетные данные после инструкции connect, поскольку учетные данные, которые не находятся в памяти, не могут быть считаны из памяти ;)
include("/outside-webroot/db_settings.php");
mysql_connect("localhost", $db_user, $db_pass);
unset ($db_user, $db_pass);
Значения, которые генерирует BLOG, представляют собой точечные оценки после генерации случайных выборок из условной вероятностной графической модели с использованием алгоритма взвешивания правдоподобия (LWA). Отличия от аналитических значений в примере поста, вероятно, связаны с шумом от процесса случайной выборки.
Что может сбивать с толку, так это то, что BLOG по умолчанию инициализирует генератор случайных чисел с тем же фиксированным начальным числом, и поэтому результаты вводятся в заблуждение, как будто они детерминированы. Если вы добавите флаг --randomize
к вызову run, вы увидите результаты использования других случайных начальных чисел.
Я не знаю теоретических свойств LWA (например, насколько сильно он ограничивает задние средние), но, по крайней мере, для наивной схемы генеративной выборки, средства, которые вы генерируете, находятся в пределах 95% ДИ. Вот пример Python, имитирующий 1000 прогонов 10K выборок.
import numpy as np
from scipy.stats import binom
np.random.seed(2019)
N, K = 10000, 1000
tp = np.empty(K)
for i in range(K):
t = binom(n=N, p=0.01).rvs()
f = N - t
detect_t = binom(n=t, p=0.800).rvs()
detect_f = binom(n=f, p=0.096).rvs()
tp[i] = detect_t / (detect_f + detect_t)
np.quantile(tp, [0.025, 0.5, 0.975])
# array([0.06177242, 0.07714902, 0.09462359])