| estimate_logL {ERPM} | R Documentation | 
Estimate log likelihood
Description
Function to estimate the log likelihood of a model for an observed partition
Usage
estimate_logL(
  partition,
  nodes,
  effects,
  objects,
  theta,
  theta_0,
  M,
  num.steps,
  burnin,
  thining,
  neighborhoods = c(0.7, 0.3, 0),
  numgroups.allowed = NULL,
  numgroups.simulated = NULL,
  sizes.allowed = NULL,
  sizes.simulated = NULL,
  logL_0 = NULL,
  parallel = FALSE,
  cpus = 1,
  verbose = FALSE
)
Arguments
| partition | observed partition | 
| nodes | node set (data frame) | 
| effects | effects/sufficient statistics (list with a vector "names", and a vector "objects") | 
| objects | objects used for statistics calculation (list with a vector "name", and a vector "object") | 
| theta | estimated model parameters | 
| theta_0 | model parameters if all other effects than "num-groups" are fixed to 0 (basic Dirichlet partition model) | 
| M | number of steps in the path-sampling algorithm | 
| num.steps | number of samples in each step | 
| burnin | integer for the number of burn-in steps before sampling | 
| thining | integer for the number of thining steps between sampling | 
| neighborhoods | = c(0.7,0.3,0) way of choosing partitions | 
| numgroups.allowed | = NULL, # vector containing the number of groups allowed in the partition (now, it only works with vectors like num_min:num_max) | 
| numgroups.simulated | = NULL, # vector containing the number of groups simulated | 
| sizes.allowed | = NULL, vector of group sizes allowed in sampling (now, it only works for vectors like size_min:size_max) | 
| sizes.simulated | = NULL, vector of group sizes allowed in the Markov chain but not necessraily sampled (now, it only works for vectors like size_min:size_max) | 
| logL_0 | = NULL, if known, the value of the log likelihood of the basic dirichlet model | 
| parallel | = FALSE, indicating whether the code should be run in parallel | 
| cpus | = 1, number of cpus required for the parallelization | 
| verbose | = FALSE, to print the current step the algorithm is in | 
Value
List with the log likelihood , AIC, lambda and the draws
Examples
# estimate the log-likelihood and AIC of an estimated model (e.g. useful to compare two models)
# define an arbitrary set of n = 6 nodes with attributes, and an arbitrary covariate matrix
n <- 6
nodes <- data.frame(label = c("A","B","C","D","E","F"),
                    gender = c(1,1,2,1,2,2),
                    age = c(20,22,25,30,30,31)) 
friendship <- matrix(c(0, 1, 1, 1, 0, 0,
                       1, 0, 0, 0, 1, 0,
                       1, 0, 0, 0, 1, 0,
                       1, 0, 0, 0, 0, 0,
                       0, 1, 1, 0, 0, 1,
                       0, 0, 0, 0, 1, 0), 6, 6, TRUE)
# choose the effects to be included (see manual for all effect names)
effects <- list(names = c("num_groups","same","diff","tie"),
objects = c("partition","gender","age","friendship"))
objects <- list()
objects[[1]] <- list(name = "friendship", object = friendship)
# define observed partition 
partition <- c(1,1,2,2,2,3)
# (an exemplary estimation is internally stored in order to save time)
# first: estimate the ML estimates of a simple model with only one parameter 
# for number of groups (this parameter should be in the model!)
likelihood_function <- function(x){ exp(x*max(partition)) / compute_numgroups_denominator(n,x)}
curve(likelihood_function, from=-2, to=0)
parameter_base <- optimize(likelihood_function, interval=c(-2, 0), maximum=TRUE)
parameters_basemodel <- c(parameter_base$maximum,0,0,0)
# estimate logL and AIC
logL_AIC <- estimate_logL(partition,
                          nodes,
                          effects, 
                          objects,
                          theta = estimation$results$est,
                          theta_0 = parameters_basemodel,
                          M = 3,
                          num.steps = 200,
                          burnin = 100,
                          thining = 20)
logL_AIC$logL
logL_AIC$AIC