У меня была хорошая функция, которую я использовал несколько лет назад. Он печатает S-образную предсказанную ~ линеаризованную и отображает несоответствия моделей по цвету и элементу по весу в модели:
library(dplyr); library(ggplot2);
#create your model
m1 <- glm(C(prog25) ~ C(sex) + ageB + gfrB + mapB + C(M) + C(E) + C(S) + C(T) + C(CRESC) + C(cat0) + tlr4l , data=df10, family=binomial(link=logit))
#extract data for plot
df10$predicted <- predict(m1, type="response")
df10$residuals <- residuals(m1, type = "response")
df10$linearized <- m1$linear.predictors
df10$weights <- m1$weights
#reinterpret as numeric
df10$prog25 <- as.numeric(df10$prog25)
#assign id to know the model "mismatched"
df10$id <- seq(1,nrow(df10))
mism <- df10 %>% filter(prog25 != round(predicted))
for (i in 1:nrow(df10)) {
if (!is.na(match(df10$id[i],mism$id))) m <- 1
else m <- 0
df10$mismatched[i] <- m
}
#then remove ID
df10$id <- NULL
#define a function to plot the model
gra.tot <- function(dat, varLin, varY, varP, group, fitModel, devModel, dfModel, devNull, dfNull, aicModel, nameX, nameY) {
ggplot(dat, aes(x = varLin, y = varY)) +
geom_point(aes(size=varP, color=as.factor(group)), alpha=.3) +
scale_colour_manual(name="mismatched", values = c("grey30", "red3")) +
geom_text(x= min(varLin) + (0.1 * (max(varLin) - min(varLin))) , y=0.5, hjust=0, label=paste( 'predicted ~ linearized', "\nmismatched: ",sum(group),"/",length(fitModel), '\nres. deviance: ', round(devModel,2) , ' (df: ', round(dfModel,2),')', '\nnull deviance: ', round(devNull,2), ' (df: ', round(dfNull,2),')', '\nAIC: ', round(aicModel,2) ), col='grey40', size=3, fontface='italic') +
xlab(as.character(nameX)) +
ylab(as.character(nameY)) +
theme_bw()
}
#plot the model
tot <- gra.tot(df10, df10$linearized, df10$predicted, df10$weights, df10$mismatched, m1$fitted, m1$deviance, m1$df.residual, m1$null.deviance, m1$df.null, m1$aic, 'linearized_predictors', 'logit_risk')
Это должно дать вам такой результат:
Надеюсь, это поможет!
Да, SQL Server
время раундов к 3.(3)
миллисекунды:
SELECT CAST(CAST('2009-01-01 00:00:00.000' AS DATETIME) AS BINARY(8))
SELECT CAST(CAST('2009-01-01 00:00:01.000' AS DATETIME) AS BINARY(8))
0x00009B8400000000
0x00009B840000012C
Как Вы видите, они DATETIME
отличайтесь 1
во-вторых, и их двоичные представления отличаются 0x12C
, это 300
в десятичном числе.
Это вызвано тем, что SQL Server
хранилища time
часть DATETIME
как много 1/300
вторые галочки с полуночи.
Если Вы хотите больше точности, необходимо сохранить a TIME
часть как отдельное значение. Как, время хранилища, округленное к секунде как a DATETIME
, и миллисекунды или безотносительно точности Вам нужно как INTEGER
в другом столбцы.
Это позволит Вам использовать комплекс DATETIME
арифметика, как включение месяцев или нахождение недельных дней DATETIME
и можно просто добавить или substract миллисекунды и связать результат как .XXXXXX+HH:MM
стать допустимым XML
представление.
Из-за проблем точности, упомянутых Quassnoi, если у Вас есть опция использовать SqlServer 2008 использования, можно рассмотреть использование datetime2 типа данных или если Вы только обеспокоены частью времени, можно использовать тип данных времени
Типы данных даты и времени - перечисляют все типы и их точность
В SQL-сервере 2005, если бы мне была нужна точность 1 миллисекунды, я добавил бы, миллисекунда дополнительного столбца интервала типа, чтобы сохранить количество миллисекунд и удалить часть миллисекунд из столбца даты и времени (установите его на 000). То предположение, что Вам нужна информация о дате также.