Этот ответ был предоставлен через раздел комментариев @JosephClarkMcIntyre.
Вот краткое изложение:
Это окончательный код, в котором предшествующее значение, вероятность и свидетельство находятся в пространстве журнала. :
a = 1 # a and b are the beta distribution's paramteres
b= 1
num_steps = 1e5
z= 17220 #Number of heads
N= 143293 #Total number of flips
Theta = seq(from=0.07,to=0.12, length.out= num_steps)
lprior = dbeta(Theta, a,b,log=TRUE) #Compute the log prior at each value
llikelihood = log(Theta)*z + log1p(-Theta)*(N-z) #log likelihood
lpData = sum(llikelihood + lprior) #compute log of the evidence
lposterior = llikelihood+lprior - lpData
plot(Theta,log(dbeta(Theta,a+z,N-z+b)))
plot(Theta, lposterior, type="l")
Тем не менее, аналитические и вычисленные логарифмические аппостеры не совпадают с показанными на графике.
Не стесняйтесь комментировать, если считаете, что в этом ответе есть изъян или объясните, почему аналитический и вычисленный логарифмический апостериор не совпадают. ^^
Я предпочитаю использовать даты и время в собственной форме относительно среды, то есть, меток времени Unix в полях PHP и DATE/TIME/DATETIME/TIMESTAMP в MySQL. Я перевожу оба значения в другое использование FROM_UNIXTIME()
и UNIX_TIMESTAMP()
. Я предпочитаю это вместо меток времени Unix, потому что собственные даты/времена намного легче считать.
Используйте Время Unix везде. Это использует UTC, таким образом, это - то же для каждого часового пояса. Методы для дат обычно преобразовывают в него и назад от него с помощью информации о часовом поясе, которую они имеют, таким образом, у Вас были бы себя корректным временем.
Кроме того, Вы могли использовать Время Unix только для времени трансфера от одного компьютера до другого (как с DB на Ваш сервер, выполняющий PHP, или клиенту JavaScript). Существуют функции для преобразования в него и от него на каждом языке. Для MySQL это:
UNIX_TIMESTAMP(date)
FROM_UNIXTIME(unix_timestamp)
Тем путем Вам можно было отформатировать Ваше время правильно на DB и в журналах, но все еще иметь корректное местное время везде.
Запишите свои даты в GMT (нулевое смещение) и затем вычислите смещение на основе локального часового пояса (EST +6, например, таким образом, Вы добавили бы 6 часов к GMT).
Проверьте документы Даты на date_default_timezone_set()
функция.
Просто помните при записи в базу данных, необходимо будет изменить часовые пояса, сохранить дату, затем возвратиться. Аналогично при получении даты не забывайте добавлять смещение часового пояса.
Mysql-сервер хранит даты в часовом поясе независимый формат (UTC).
Но прежде чем это хранит дату, это будет преобразовано с помощью ее часового пояса.
Можно изменить mysql часовой пояс для каждого подключения *1:
mysql_query('SET time_zone = "'.$timezone.'"');
Можно также изменить часовой пояс на сценарий.
date_default_timezone_set($timezone);
При установке их на тот же часовой пояс "10.01.2009, 13:30:00" будет значить то же самое и для mysql и для php.
Но имейте в виду, что эти 2 сервера имеют различные внутренние значения часов, поэтому если Вы хотите генерировать метки времени на основе текущего времени. Сделайте это в mysql ИЛИ php.
*1) поддержка часового пояса MySQL может потребовать дополнительной конфигурации. проверьте руководство