opt.random.par {blockmodeling} | R Documentation |
The function optimizes a set partitions based on the value of a criterion function (see crit.fun
for details on the criterion function) for a given network and blockmodel for Generalized blockmodeling (Žiberna, 2006) based on other parameters (see below).
The optimization is done through local optimization, where the neighborhood of a partition includes all partitions that can be obtained by moving one unit from one cluster to another or by exchanging two units (from different clusters).
A list of paritions can be specified (opt.these.par
) or the number of clusters and a number of partitions to generate (opt.random.par
).
opt.random.par(M, k, n = NULL, rep, seed = NULL, return.all = FALSE, return.err = TRUE, maxiter = 50, m = NULL, approach, trace.iter = FALSE, switch.names = TRUE, save.initial.param = TRUE, skip.par = NULL, save.checked.par = TRUE, merge.save.skip.par = any(!is.null(skip.par), save.checked.par), skip.allready.checked.par = TRUE, check.skip = "iter", print.iter = FALSE, max.iden = 10, mingr = 1, maxgr = Inf, genPajekPar = TRUE, ...) opt.these.par(M, partitions, return.all = FALSE, return.err = TRUE, skip.allready.checked.par = TRUE, maxiter = 50, m = NULL, approach, trace.iter = FALSE, switch.names = TRUE, save.initial.param = TRUE, skip.par = NULL, save.checked.par = !is.null(skip.par), merge.save.skip.par = all(!is.null(skip.par), save.checked.par), check.skip = "never", print.iter = FALSE, ...)
M |
A matrix representing the (usually valued) network. For now, only one-relational networks are supported. The network can have one or more modes (diferent kinds of units with no ties among themselvs. If the network is not two-mode, the matrix must be square. |
k |
The number of clustrs used in generation of partitions. |
n |
The vector of the number of units in each mode (only necessary if mode is larger than 2. |
rep |
The number of repetitions/different starting partitions to check. |
seed |
Optional. The seed for random generation of partitions. |
partitions |
A list of partitions. Each unique value represents one cluster. If the nework is one-mode, than this should be a vector, else a list of vectors, one for each mode. |
return.all |
If FALSE , solution for only the best (one or more) partition/s is/are returned. |
return.err |
Should the error for each optimized partition be returned |
maxiter |
Maximum number of iterations |
m |
Suficient value for individual cells for valued approach. Can be a number or a character string giving the name of a function. Set to "max" for implicit approach. |
approach |
One of the approaches described in Žiberna (2006). Possible values are: "bin" - binary blockmodeling, "val" - valued blockmodeling, "imp" - implicit blockmodeling, "ss" - sum of squares homogenity blockmodeling, and "ad" - absolute deviations homogenity blockmodeling. |
trace.iter |
Should the result of each iteration (and not only of the best one) be saved |
switch.names |
Should partitions that differ only in diferent names of positions be treated as different. It should be set to TRUE only if a asymetric blockmodel via BLOCKS is specified. |
save.initial.param |
Should the inital parameters (approach ,...) be saved |
skip.par |
The partitions that are not allowed or were already checked and should therfire be skiped. |
save.checked.par |
Should the checked partitions be saved. For example, so that they can be used in the next call as skip.par |
merge.save.skip.par |
Should the checked partitions be merged with skiped ones? |
skip.allready.checked.par |
If TRUE ,the partitions that were already checked when runing opt.par form different statrting points will be skiped. |
check.skip |
When should the check be preformed: "all" - before every call to 'crit.fun' (Time demanding) "iter" - at the end of eack iteratiton "opt.par" - before every call to opt.par , when starting the optimization of a new partition."never" - never |
print.iter |
Should the progress of each iteration be printed? |
max.iden |
The maximum number of results that should be saved (in case there are more than max.iden results with minimal error, only the first max.iden will be saved). |
mingr |
Minimal alowed group size |
maxgr |
Maximal alowed group size |
genPajekPar |
Should the partitions be generated as in Pajek (Batagelj and Mrvar, 2006). If FALSE , all partitions are selected completly at random while making sure that the partitions have the required number of clusters |
... |
Argumets passed to other functions, see crit.fun |
M |
The matrix of the network analyzed |
res |
If return.all = TRUE - A list of results the same as best - one best for each partition optimized |
best |
A list of results from crit.fun.tmp with the same elements as the result of crit.fun , only without M |
err |
If return.err = TRUE - The vector of errors or inconsistencies of the emplirical network with the ideal network for a given blockmodel (model,approach,...) and parititions |
checked.par |
If selected - A list of checked parititions. If merge.save.skip.par is TRUE , this list also includs the partitions in skip.par . |
call |
The call used to call the function. |
initial.param |
If selected - The inital parameters used. |
This function can be extremly slow. The time complexity is incrising with the number od units and the number of clusters. It is advaisable to firtst time the function on a smaller network.
Aleš Žiberna
ŽIBERNA, Aleš (2006): Generalized Blockmodeling of Valued Networks. Social Networks (in press). http://dx.doi.org/10.1016/j.socnet.2006.04.002.
DOREIAN, Patrick, BATAGELJ, Vladimir, FERLIGOJ, Anuška (2005): Generalized blockmodeling, (Structural analysis in the social sciences, 25). Cambridge [etc.]: Cambridge University Press, 2005. XV, 384 p., ISBN 0-521-84085-6.
BATAGELJ, Vladimir, MRVAR, Andrej (2006): Pajek 1.11, http://vlado.fmf.uni lj.si/pub/networks/pajek/ (accessed January 6, 2006).
crit.fun
,check.these.par
,opt.par
,plot.opt.more.par
n<-8 #if larger, the number of partitions increases dramaticaly, as does if we increase the number of clusters net<-matrix(NA,ncol=n,nrow=n) clu<-rep(1:2,times=c(3,5)) tclu<-table(clu) net[clu==1,clu==1]<-rnorm(n=tclu[1]*tclu[1],mean=0,sd=1) net[clu==1,clu==2]<-rnorm(n=tclu[1]*tclu[2],mean=4,sd=1) net[clu==2,clu==1]<-rnorm(n=tclu[2]*tclu[1],mean=0,sd=1) net[clu==2,clu==2]<-rnorm(n=tclu[2]*tclu[2],mean=0,sd=1) #we select a random parition and then optimise it all.par<-nkpartitions(n=n, k=length(tclu)) #forming the partitions all.par<-lapply(apply(all.par,1,list),function(x)x[[1]]) # to make a list out of the matrix #optimizing one partition res<-opt.par(M=net,clu=all.par[sample(1:length(all.par),size=1)],approach="ss",blocks="com") plot(res) #Hopefully we get the original partition #optimizing 10 random chosen partitions which are suplied to opt.these.par res<-opt.these.par(M=net,partitions=all.par[sample(1:length(all.par),size=10)],approach="ss",blocks="com") plot(res) #Hopefully we get the original partition #optimizing 10 random chosen partitions with opt.random.par res<-opt.random.par(M=net,k=2,npar=10,approach="ss",blocks="com") plot(res) #Hopefully we get the original partition