Что лучший способ состоит в том, чтобы управлять датами через PHP, MySQL, и т.д.?

Этот ответ был предоставлен через раздел комментариев @JosephClarkMcIntyre.

Вот краткое изложение:

  • В испытании Бернулли, когда N - общее количество испытаний - и z - общее количество успеха велико, а основной параметр тета равен маленький, лучше работать только в пространстве журнала и никогда не брать экспоненциальный.
  • Кроме того, поскольку функция логарифма увеличивается, сравнение логарифмических постеров двух распределений аналогично сравнению апостериорного.
  • Вышеуказанная реализация была неправильной, потому что формула для вычисления доказательств не верна. p (доказательство) = сумма (вероятность * предшествующая), p (log_evidence) = сумма (log_likelihood + log_prior)

Это окончательный код, в котором предшествующее значение, вероятность и свидетельство находятся в пространстве журнала. :

  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")

Тем не менее, аналитические и вычисленные логарифмические аппостеры не совпадают с показанными на графике.

Не стесняйтесь комментировать, если считаете, что в этом ответе есть изъян или объясните, почему аналитический и вычисленный логарифмический апостериор не совпадают. ^^

5
задан 10 January 2009 в 08:12
поделиться

4 ответа

Я предпочитаю использовать даты и время в собственной форме относительно среды, то есть, меток времени Unix в полях PHP и DATE/TIME/DATETIME/TIMESTAMP в MySQL. Я перевожу оба значения в другое использование FROM_UNIXTIME() и UNIX_TIMESTAMP(). Я предпочитаю это вместо меток времени Unix, потому что собственные даты/времена намного легче считать.

2
ответ дан 18 December 2019 в 09:10
поделиться

Используйте Время Unix везде. Это использует UTC, таким образом, это - то же для каждого часового пояса. Методы для дат обычно преобразовывают в него и назад от него с помощью информации о часовом поясе, которую они имеют, таким образом, у Вас были бы себя корректным временем.

Кроме того, Вы могли использовать Время Unix только для времени трансфера от одного компьютера до другого (как с DB на Ваш сервер, выполняющий PHP, или клиенту JavaScript). Существуют функции для преобразования в него и от него на каждом языке. Для MySQL это:

UNIX_TIMESTAMP(date)
FROM_UNIXTIME(unix_timestamp)

Тем путем Вам можно было отформатировать Ваше время правильно на DB и в журналах, но все еще иметь корректное местное время везде.

16
ответ дан 18 December 2019 в 09:10
поделиться

Запишите свои даты в GMT (нулевое смещение) и затем вычислите смещение на основе локального часового пояса (EST +6, например, таким образом, Вы добавили бы 6 часов к GMT).

Проверьте документы Даты на date_default_timezone_set() функция.

Просто помните при записи в базу данных, необходимо будет изменить часовые пояса, сохранить дату, затем возвратиться. Аналогично при получении даты не забывайте добавлять смещение часового пояса.

0
ответ дан 18 December 2019 в 09:10
поделиться

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 может потребовать дополнительной конфигурации. проверьте руководство

0
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: