R/ModelPrintObjects.R

Defines functions ModelPrintObject.data.frame ModelPrintObject.SummaryStat ModelPrintObject.CoefTest ModelPrintObject.DiscreteEffects ModelPrintObject.tobit ModelPrintObject.boot ModelPrintObject.lmerMod ModelPrintObject.glmerMod ModelPrintObject.selection ModelPrintObject.glm ModelPrintObject.lm ModelPrintObject.plm ModelPrintObject.summary.felm ModelPrintObject.fixest ModelPrintObject.felm ModelPrintObject.ols ModelPrintObject.lrm ModelPrintObject.rdrobust ModelPrintObject.rms ModelPrintObject.default ConvertNewToOldMPO ModelPrintObject

Documented in ConvertNewToOldMPO ModelPrintObject ModelPrintObject.boot ModelPrintObject.CoefTest ModelPrintObject.data.frame ModelPrintObject.default ModelPrintObject.DiscreteEffects ModelPrintObject.felm ModelPrintObject.fixest ModelPrintObject.glmerMod ModelPrintObject.lm ModelPrintObject.lmerMod ModelPrintObject.lrm ModelPrintObject.ols ModelPrintObject.plm ModelPrintObject.rdrobust ModelPrintObject.rms ModelPrintObject.selection ModelPrintObject.summary.felm ModelPrintObject.SummaryStat ModelPrintObject.tobit

#' Extract model information from different classes
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject <- function(x){
  UseMethod('ModelPrintObject', x)
}
#


#' ConvertNewToOldMPO
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ConvertNewToOldMPO <- function(x)
{
  if (!("mmpVers" %in% names(x) && x$mmpVers >= 2))
    return(x)

  x$CoefValues <- array(NA, dim = c(nrow(x$Coefficients$Main),1,6), dimnames = list(rownames(x$Coefficients$Main), 'a', c("Coefficient", "SE", "TStat", "Normal", "PValue", "special")))
  x$CoefValues[,"a", "Coefficient"] <- x$Coefficients$Main$Coef
  if (length(x$Coefficients$Main$SE) > 0) x$CoefValues[,"a", "SE"] <- x$Coefficients$Main$SE
  if (length(x$Coefficients$Main$TStat) > 0) x$CoefValues[,"a", "TStat"] <- x$Coefficients$Main$TStat
  if (length(x$Coefficients$Main$Z) > 0) x$CoefValues[,"a", "Normal"] <- x$Coefficients$Main$ZStat
  if (length(x$Coefficients$Main$PValue) > 0) x$CoefValues[,"a", "PValue"] <- x$Coefficients$Main$PValue

  # CoefTemp <- array(x$Coefficients$Main, dim = c(nrow(x$Coefficients$Main), 1, ncol(x$Coefficients$Main)),
  #                   dimnames = list(rownames(x$Coefficients$Main), "a", colnames(x$Coefficients$Main)))

  x$DependentVariable <- x$DependendVariables$Main
#  browser()
  return(x)
}



#' ModelPrintObject.default
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.default <- function(x)
{
  return(x)
}


#' ModelPrintObject.rms
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.rms <- function(x)
{
  x$Statistics <- append(x$Statistics,
                         list(
                           R2 = x$stats['R2'],
                           LogLik = x$stats['Model L.R.'],
                           G = x$stats['g'],
                           Sigma = x$stats['Sigma']
                         ))
  if (!is.null(x$orig.var) & is.null(x$clusterInfo))
  {
    x$Statistics <- append(x$Statistics,
                           list(
                             StandardErrorInfo = 'SE by robcov()'
                           ))
  }
  if (!is.null(x$clusterInfo))
  {
    x$Statistics <- append(x$Statistics,
                           list(
                             StandardErrorInfo = paste('Clustered on ', x$clusterInfo$name, '; n = ',  x$clusterInfo$n, sep ='')
                           ))
  }
  if (is.null(x$CoefValues))
  {
    CoefTemp     <- cbind(Coefficient = x$coefficients,
                          SE = sqrt(diag(x$var)),                 # Std. Error
                          TStat = NA,
                          Normal= x$coefficients/sqrt(diag(x$var)),  # Normal
                          PValue = NA,
                          SpecialText = NA
    )
    CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'Normal'], GetPValueFromNormal))
    x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  }
  x$DependentVariable <- all.vars(x$terms)[1]
  return(x)
}

#' ModelPrintObject.rdrobust
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.rdrobust <- function(x)
{
  y <- list(Coefficients = list(Main = data.frame(Coef = as.numeric(x$coef),
                                                  SE = as.numeric(x$se),
                                                  ZStat = as.numeric(x$z),
                                                  PValue = as.numeric(x$pv),
                                                  row.names = rownames(x$coef)
                                                  )))
  #y$DependentVariables <- list(Main = x$???)
  y$Statistics <- list(NObs      = sum(x$N),
                       NObsLR    = list(x = x$N,collapse = ", "),
                       EffNObsLR = list(x = x$Nh, collapse = ", "),
                       Kernel    = x$kernel,
                       BWEst     = list(x = x$bws[1, ], collapse = ", "),
                       BWBias    = list(x = x$bws[2, ], collapse = ", "),
                       Rho       = list(x = c(x$bws[1, 1]/x$bws[2, 1], x$bws[1, 2]/x$bws[2, 2]), collapse = ", ")
                      )
  y$ModelType <- "local polynomial RD point estimators with robust bias-corrected confidence intervals"

  # to do: Defaults should be moved to a "GetModelDefaults" function
  y$Defaults <- list(Coefficients = c("Main"),
                     Statistics = c("NObs", "NObsLR", "EffNObsLR", "Kernel", "BWEst", "BWBias", "Rho"))
  y$mmpVers <- 2.0
  return(y)
}

#' ModelPrintObject.lrm
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.lrm <- function(x)
{
  x$Statistics$Freq <- x$freq
  x$Statistics <- append(x$Statistics,
                         list(
                           NObs = x$stats['Obs'],
                           Brier = x$stats['Brier'],
                           Gamma = x$stats['Gamma'],
                           MaxDeriv = x$stats['Max Deriv'],
                           P = x$stats['P'],
                           C = x$stats['C'],
                           Dxy = x$stats['Dxy'],
                           Taua = x$stats['Tau-a'],
                           Gr = x$stats['gr'],
                           Gp = x$stats['gp'],
                           Freq = x$freq,
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))
  x$ModelType <- 'Logistic regression model'
  NextMethod()
}

#' ModelPrintObject.ols
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.ols <- function(x)
{
  x$Statistics <- append(x$Statistics,
                         list(
                           NObs = x$stats['n'],
                           R2 = x$stats['R2'],
                           Sigma = x$stats['Sigma'],
                           DF = x$df.residual,
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))

  x$Statistics$AdjR2 <- 1 - (1-x$Statistics$R2)*(x$Statistics$NObs-1)/(x$Statistics$DF)

  CoefTemp     <- cbind(Coefficient = x$coefficients,
                        SE = sqrt(diag(x$var)),                 # Std. Error
                        TStat = x$coefficients/sqrt(diag(x$var)),
                        Normal= NA,  # Normal
                        PValue = NA,
                        SpecialText = NA
  )

  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'TStat'], GetPValueFromTStat, DF =  x$Statistics$DF ))
  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  x$DependentVariable <- all.vars(x$terms)[1]
  x$ModelType <- 'Ordinary least squares regression model'
  NextMethod()
}

#' ModelPrintObject.felm
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.felm <- function(x)
{
  xsum <- summary(x)

  x$Statistics <- append(x$Statistics,
                         list(
                           NObs =xsum$N,
                           R2 = xsum$r.squared,
                           Sigma = xsum$sigma,
                           DF = xsum$df[[1]],
                           AdjR2 = xsum$adj.r.squared,
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))

  CoefTemp     <- cbind(Coefficient = xsum$coefficients[, 1],
                        SE =  xsum$coefficients[, 2],                 # Std. Error
                        TStat =  xsum$coefficients[, 3],
                        Normal= NA,  # Normal
                        PValue =  xsum$coefficients[, 4],
                        SpecialText = NA
  )
  rownames(CoefTemp) <- rownames(xsum$coefficients)

  if (!is.null(x$fe) && length(x$fe)>0)
  {
    x$FixedEffects <- names(x$fe)
    CoefTemp <- rbind(CoefTemp,  matrix(NA, nrow = length(x$FixedEffects), ncol = 6, dimnames = list(paste0('FE>>', x$FixedEffects), NULL)))
  }

  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  x$DependentVariable <- x$lhs
  if (!is.null(x$clustervar)) x$Statistics$StandardErrorInfo <- paste0('Clustered on: ', paste(names(x$clustervar), collapse = ', '))

  x$ModelType <- 'Ordinary least squares regression model'
  NextMethod()
}




#' ModelPrintObject.fixest
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.fixest <- function(x)
{
  #xsum <- summary(x)
  y <-list()
  y$Statistics <-
                         list(
                           NObs =x$nobs,
                           R2 = fitstat(x, type = "r2", simplify = TRUE),
                           Sigma = x$sigma2,
                           DF = NA,
                           AdjR2 = fitstat(x, type = "ar2", simplify = TRUE),
                           Weights = NA
                         )

  CoefTemp     <- cbind(Coefficient = x$coeftable[, 1],
                        SE =  x$coeftable[, 2],                 # Std. Error
                        TStat =  x$coeftable[, 3],
                        Normal= NA,  # Normal
                        PValue =  x$coeftable[, 4],
                        SpecialText = NA
  )
  rownames(CoefTemp) <- rownames(x$coeftable)

  if (!is.null(x$fixef_vars) && length(x$fixef_vars)>0)
  {
    y$FixedEffects <- x$fixef_vars
    CoefTemp <- rbind(CoefTemp,
                      matrix(NA, nrow = length(x$fixef_vars),
                             ncol = 6,
                             dimnames = list(paste0("FE>>",
                                                    x$fixef_vars),
                                             NULL)))
  }

  y$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  y$DependentVariable <- terms(x$fml_all$linear)[[2]]
  if (!is.null(x$summary_flags) && length(x$summary_flags$cluster) > 0) x$Statistics$StandardErrorInfo <- paste0('Clustered on: ', paste(x$summary_flags$cluster, collapse = ', '))

  y$ModelType <- 'Ordinary least squares regression model'
  return(y)
}








#' ModelPrintObject.felm
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.summary.felm <- function(x)
{
  #xsum <- summary(x)

  x$Statistics <- append(x$Statistics,
                         list(
                           NObs =x$N,
                           R2 = x$r.squared,
                           Sigma = x$sigma,
                           DF = x$df[[1]],
                           AdjR2 = x$adj.r.squared,
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))

  CoefTemp     <- cbind(Coefficient = x$coefficients[, 1],
                        SE =  x$coefficients[, 2],                 # Std. Error
                        TStat =  x$coefficients[, 3],
                        Normal= NA,  # Normal
                        PValue =  x$coefficients[, 4],
                        SpecialText = NA
  )
  rownames(CoefTemp) <- rownames(x$coefficients)

  if (!is.null(x$fe) && length(x$fe)>0)
  {
    x$FixedEffects <- names(x$fe)
    CoefTemp <- rbind(CoefTemp,  matrix(NA, nrow = length(x$FixedEffects), ncol = 6, dimnames = list(paste0('FE>>', x$FixedEffects), NULL)))
  }

  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  x$DependentVariable <- x$lhs
  if (length(grep('obust', colnames(x$coefficients)[2]))>0) x$Statistics$StandardErrorInfo <- 'Robust standard errors'

  if (!is.null(x$clustervar)) x$Statistics$StandardErrorInfo <- paste0('Clustered on: ', paste(names(x$clustervar), collapse = ', '))

  x$ModelType <- 'Ordinary least squares regression model'
  NextMethod()
}


#' ModelPrintObject.plm
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.plm <- function(x)
{
  warning('plm objects are processed slowly and incompletely.')
  xsum <- summary(x)
  x$Statistics <- append(x$Statistics,
                         list(
                           NObs = nobs(x),
                           R2 = as.numeric(xsum$r.squared['rsq']),
                           DF = x$df.residual,
                           FStat = xsum$fstatistic,
                           AdjR2 = as.numeric(xsum$r.squared['adjrsq']),
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))


  CoefTemp     <- cbind(Coefficient = xsum$coefficients[,1],
                        SE = xsum$coefficients[,2],                 # Std. Error
                        TStat =  xsum$coefficients[,3],
                        Normal= NA,  # Normal
                        PValue =  xsum$coefficients[,4],
                        SpecialText = NA
  )
  rownames(CoefTemp) <- rownames(xsum$coefficients)

  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))

  x$DependentVariable <- all.vars(x$formula)[1]
  x$ModelType <- paste0('Panel data:', paste(x$args[unlist(lapply(x$args, function(x)(!is.null(x))))], collapse = '; '))
  NextMethod()
}



#' ModelPrintObject.lm
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.lm <- function(x)
{

  x$Statistics <- append(x$Statistics,
                         list(
                           NObs = length(residuals(summary(x))),
                           R2 = summary(x)$r.squared,
                           AdjR2 = summary(x)$adj.r.squared,
                           Sigma = summary(x)$sigma,
                           DF = summary(x)$df[2],
                           FStat = summary(x)$fstatistic[1],
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))

  # The following might looks complicated. The aim is to make sure that
  # NA variables are not dropped from the model.

  CoefTemp <- as.matrix(x$coefficients)
  CoefTemp <- merge(CoefTemp, summary(x)$coefficients[,c(2,3)], by = 'row.names', all.x = T, sort = F)
  rownames(CoefTemp) <- CoefTemp$Row.names
  CoefTemp$Row.names <- NULL

  loc <- grep("^\\(Intercept\\)$", rownames(CoefTemp), perl = T)
  if (length(loc)>0) rownames(CoefTemp)[loc] <- "Intercept"

  CoefTemp <- cbind(CoefTemp, Normal = NA, PValue = NA,  SpecialText = NA)
  colnames(CoefTemp) <- c('Coefficient', 'SE', 'TStat', 'Normal', 'PValue', 'SpecialText')

  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'TStat'], GetPValueFromTStat, DF =  x$Statistics$DF ))

  x$CoefValues <- array(unlist(CoefTemp), dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  x$DependentVariable <- all.vars(x$terms)[1]
  #bpres <- NA
  #try(bpres <- bptest(m$terms)[4], silent = T)

  if (is.null(x$ModelType))
    x$ModelType <- 'Ordinary least squares regression model'
  NextMethod()
}

ModelPrintObject.glm <- function(x)
{
  warning('Basic glm support: Not all model details are supported.')
  x$qr





  x$ModelType <-  paste('Ordinary least squares regression model: ', x$family$family, '/', x$family$link, sep ='')

  NextMethod()
}

#' ModelPrintObject.selection
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.selection <- function(x)
{
  #x <- a
  xx <- summary(x)
  x$Statistics <- append(x$Statistics,
                         list(
                           NObs = x$param$nObs,
                           R2 = xx$rSquared$R2,
                           Sigma = x$sigma,
                           DF = x$param$df,
                           AdjR2 =  xx$rSquared$R2adj,
                           Mills = x$param$index$Mills,
                           Weights = ifelse(is.null(x$weights),"no", "yes")
                         ))


  CoefTemp     <- cbind(Coefficient = xx$estimate[, 'Estimate'],
                        SE = xx$estimate[, 'Std. Error'],
                        TStat = xx$estimate[, 't value'],
                        Normal= NA,  # Normal
                        PValue = xx$estimate[, 'Pr(>|t|)'],
                        SpecialText = NA
  )
  CoefSelection <- CoefTemp[x$param$index$betaS, ]
  CoefTemp <- CoefTemp[x$param$index$betaO, ]


  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  x$CoefValues.Selection <- array(CoefSelection, dim = c(nrow(CoefSelection),1,6), dimnames = list(rownames(CoefSelection), 'a', colnames(CoefSelection)))

  x$DependentVariable <- NA
  x$ModelType <- 'Heckit'
  return(x)

}



#' ModelPrintObject.glmerMod
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.glmerMod <- function(x)
{
  warning('glmerMod is only partially supported by mmp yet. Only fixed effects are printed.')

  y <- list()
  #  y$Statistics <- append(y$Statistics,
  #                         list(
  #                              R2 = x$stats['R2'],
  #                              LogLik = x$stats['Model L.R.'],
  #                              G = x$stats['g'],
  #                              Sigma = x$stats['Sigma']
  #                             ))

  CoefTemp     <- cbind(Coefficient = fixef(x),
                        SE = sqrt(diag(vcov(x, use.hessian = T))),
                        TStat = NA,
                        Normal= fixef(x)/sqrt(diag(vcov(x, use.hessian = T))),
                        PValue = NA,
                        SpecialText = NA
  )

  loc <- grep("^\\(Intercept\\)$", rownames(CoefTemp), perl = T)
  if (length(loc)>0) rownames(CoefTemp)[loc] <- "Intercept"

  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'Normal'], GetPValueFromNormal))
  y$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))


  y$DependentVariable <- colnames(model.frame(x))[1]
  y$ModelType <- paste('Generalized linear mixed-effects models; link:',family(x)$link, sep =' ')
  return(y)
}

#' ModelPrintObject.lmerMod
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.lmerMod <- function(x)
{
  warning('lmerMod is only partially supported by mmp yet. Only fixed effects are printed.')
  #require(r2glmm)
  library("piecewiseSEM")
  y <- list()
  #  y$Statistics <- append(y$Statistics,
  #                         list(
  #                              R2 = x$stats['R2'],
  #                              LogLik = x$stats['Model L.R.'],
  #                              G = x$stats['g'],
  #                              Sigma = x$stats['Sigma']
  #                             ))

  CoefTemp     <- cbind(Coefficient = fixef(x),
                        SE = sqrt(diag(vcov(x, use.hessian = F))),
                        TStat = NA,
                        Normal= fixef(x)/sqrt(diag(vcov(x, use.hessian = F))),
                        PValue = NA,
                        SpecialText = NA
  )

  loc <- grep("^\\(Intercept\\)$", rownames(CoefTemp), perl = T)
  if (length(loc)>0) rownames(CoefTemp)[loc] <- "Intercept"

  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'Normal'], GetPValueFromNormal))
  y$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))

  y$Statistics <- append(y$Statistics,
                         list(
                           NObs = nobs(x),
                           R2 = paste0(round(rsquared(x)$Marginal, digits=2), ', ', round(rsquared(x)$Conditional, digits=2))
                         ))




  y$DependentVariable <- colnames(model.frame(x))[1]
  y$ModelType <- paste('Linear mixed-effects models; link:',family(x)$link, sep =' ')
  return(y)
}



#' ModelPrintObject.boot
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.boot <- function(x)
{

  warning('Preliminary support for boot only.')


  CoefTemp     <- cbind(Coefficient = x$t0,
                        SE = apply(x$t, 2, sd),
                        TStat = NA,
                        Normal= x$t0/apply(x$t, 2, sd),
                        PValue = NA,
                        SpecialText = NA
  )


  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'Normal'], GetPValueFromNormal))
  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))

  x$ModelType <-'boot object'
  NextMethod()
}

#' ModelPrintObject.boot
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.tobit <- function(x)
{
  warning('Preliminary support for tobit only.')

  x$Statistics <- append(x$Statistics,
                         list(
                           Iterations = x$iter,
                           LogLik = x$loglik[2],
                           Scale = x$scale,
                           DF =x$df
                         ))

  TempSE <- sqrt(diag(x$var))[-nrow(x$var)]
  CoefTemp     <- cbind(Coefficient = x$coefficients,
                        SE = TempSE,
                        TStat = NA,
                        Normal= x$coefficients/TempSE,
                        PValue = NA,
                        SpecialText = NA
  )

  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'Normal'], GetPValueFromNormal))
  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))

  x$DependentVariable <- all.vars(x$terms)[1]
  x$ModelType = 'Tobit Regression'
  NextMethod()
}

#' ModelPrintObject.DiscreteEffects
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.DiscreteEffects <- function(x)
{
  CoefTemp     <- cbind(Coefficient = x$Estimate,
                        SE = x$SE,
                        TStat = NA,
                        Normal= x$Estimate/x$SE,
                        PValue = x$pvalue,
                        SpecialText = NA
  )
  y <- list()
  y$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  rownames(y$CoefValues) <- sub('^DE', "", rownames(x) )
  y$ModelType <- 'Discrete Effect'
  return(y)
}


#' ModelPrintObject.CoefTest
#'
#' @param x
#'
#' @return
#' @export
#'
#' @examples
ModelPrintObject.CoefTest <- function(x)
{
  warning('Untested ModelPrintObject. Probably requires output to be a list.')
  CoefTemp     <- cbind(Coefficient = x$Estimate,
                        SE = x$SE,
                        TStat = NA,
                        Normal= x$Estimate/x$SE,
                        PValue = x$pvalue,
                        SpecialText = NA
  )
  CoefTemp[, 'PValue'] <- unlist(lapply(CoefTemp[, 'Normal'], GetPValueFromNormal))
  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  rownames(x$CoefValues) <- sub('^DE', "", rownames(x) )
  x$ModelType <- 'Coef Test'
  NextMethod()
}

#' ModelPrintObject.SummaryStat
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.SummaryStat <- function(x)
{
  warning('Untested ModelPrintObject. Probably requires output to be a list.')
  CoefTemp     <- cbind(Coefficient = x,
                        SE = NA,
                        TStat = NA,
                        Normal= NA,
                        PValue = NA,
                        SpecialText = NA
  )
  if (is.null(names(x))) rownames(CoefTemp) <- rownames(x)
  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  rownames(x$CoefValues) <- sub('^DE', "", rownames(x) )
  x$ModelType <- 'SummaryStat'
  NextMethod()
}

#' ModelPrintObject.data.frame
#'
#' @param x
#'
#' @return
#' @export
#' @examples
ModelPrintObject.data.frame <- function(x)
{
  #  warning('Untested ModelPrintObject. Probably requires output to be a list.')
  #  CoefTemp     <- cbind(Coefficient = x[,1],
  #                        SE = NA,
  #                        TStat = NA,
  #                        Normal= NA,
  #                        PValue = NA,
  #                        SpecialText = NA
  #                       )
  #  if (is.null(names(x))) rownames(CoefTemp) <- rownames(x)
  #  x$CoefValues <- array(CoefTemp, dim = c(nrow(CoefTemp),1,6), dimnames = list(rownames(CoefTemp), 'a', colnames(CoefTemp)))
  #  rownames(x$CoefValues) <- sub('^DE', "", rownames(x) )
  #  x$ModelType <- 'Generic data.frame'
  NextMethod()
}
MarcoPortmann/mmp documentation built on Aug. 9, 2021, 7:42 a.m.