[Rsiena-commits] r285 - in pkg: RSiena RSiena/R RSiena/data RSiena/inst/doc RSiena/man RSiena/src RSiena/src/data RSiena/src/model/effects RSiena/src/model/effects/generic RSiena/src/model/tables RSiena/tests RSienaTest RSienaTest/R RSienaTest/data RSienaTest/doc RSienaTest/inst/doc RSienaTest/man RSienaTest/src RSienaTest/src/data RSienaTest/src/model/effects RSienaTest/src/model/effects/generic RSienaTest/src/model/tables RSienaTest/tests
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Wed May 20 21:25:54 CEST 2015
Author: tomsnijders
Date: 2015-05-20 21:25:53 +0200 (Wed, 20 May 2015)
New Revision: 285
Added:
pkg/RSiena/src/model/effects/generic/InStarsTimesDegreesFunction.cpp
pkg/RSiena/src/model/effects/generic/InStarsTimesDegreesFunction.h
pkg/RSiena/src/model/effects/generic/MixedThreeCyclesFunction.cpp
pkg/RSiena/src/model/effects/generic/MixedThreeCyclesFunction.h
pkg/RSiena/src/model/effects/generic/OutActDistance2Function.cpp
pkg/RSiena/src/model/effects/generic/OutActDistance2Function.h
pkg/RSienaTest/src/model/effects/generic/InStarsTimesDegreesFunction.cpp
pkg/RSienaTest/src/model/effects/generic/InStarsTimesDegreesFunction.h
pkg/RSienaTest/src/model/effects/generic/MixedThreeCyclesFunction.cpp
pkg/RSienaTest/src/model/effects/generic/MixedThreeCyclesFunction.h
pkg/RSienaTest/src/model/effects/generic/OutActDistance2Function.cpp
pkg/RSienaTest/src/model/effects/generic/OutActDistance2Function.h
Modified:
pkg/RSiena/ChangeLog
pkg/RSiena/DESCRIPTION
pkg/RSiena/R/effects.r
pkg/RSiena/R/effectsDocumentation.r
pkg/RSiena/R/initializeFRAN.r
pkg/RSiena/R/phase1.r
pkg/RSiena/R/phase2.r
pkg/RSiena/R/phase3.r
pkg/RSiena/R/print01Report.r
pkg/RSiena/R/robmon.r
pkg/RSiena/R/siena07.r
pkg/RSiena/R/sienaDataCreate.r
pkg/RSiena/R/sienaModelCreate.r
pkg/RSiena/R/sienaprint.r
pkg/RSiena/R/sienatable.r
pkg/RSiena/R/sienautils.r
pkg/RSiena/data/allEffects.csv
pkg/RSiena/inst/doc/RSiena.bib
pkg/RSiena/inst/doc/RSiena_Manual.pdf
pkg/RSiena/inst/doc/RSiena_Manual.tex
pkg/RSiena/man/RSiena-package.Rd
pkg/RSiena/man/coCovar.Rd
pkg/RSiena/man/siena07.Rd
pkg/RSiena/man/sienaAlgorithmCreate.Rd
pkg/RSiena/man/varCovar.Rd
pkg/RSiena/src/data/Covariate.cpp
pkg/RSiena/src/data/Covariate.h
pkg/RSiena/src/data/NetworkLongitudinalData.cpp
pkg/RSiena/src/data/NetworkLongitudinalData.h
pkg/RSiena/src/model/effects/AltersDist2CovariateAverageEffect.cpp
pkg/RSiena/src/model/effects/AltersInDist2CovariateAverageEffect.cpp
pkg/RSiena/src/model/effects/CovariateAndNetworkBehaviorEffect.cpp
pkg/RSiena/src/model/effects/CovariateDependentBehaviorEffect.cpp
pkg/RSiena/src/model/effects/CovariateDependentBehaviorEffect.h
pkg/RSiena/src/model/effects/EffectFactory.cpp
pkg/RSiena/src/model/effects/HigherCovariateEffect.cpp
pkg/RSiena/src/model/effects/generic/CovariateDistance2AlterNetworkFunction.cpp
pkg/RSiena/src/model/effects/generic/CovariateDistance2EgoAltSimNetworkFunction.cpp
pkg/RSiena/src/model/effects/generic/CovariateDistance2InAlterNetworkFunction.cpp
pkg/RSiena/src/model/effects/generic/CovariateDistance2NetworkFunction.cpp
pkg/RSiena/src/model/effects/generic/CovariateDistance2NetworkFunction.h
pkg/RSiena/src/model/effects/generic/CovariateDistance2SimilarityNetworkFunction.cpp
pkg/RSiena/src/model/effects/generic/CovariateNetworkAlterFunction.cpp
pkg/RSiena/src/model/effects/generic/CovariateNetworkAlterFunction.h
pkg/RSiena/src/model/effects/generic/MixedNetworkAlterFunction.cpp
pkg/RSiena/src/model/effects/generic/MixedNetworkAlterFunction.h
pkg/RSiena/src/model/tables/TwoNetworkCache.cpp
pkg/RSiena/src/model/tables/TwoNetworkCache.h
pkg/RSiena/src/siena07internals.cpp
pkg/RSiena/tests/parallel.R
pkg/RSiena/tests/parallel.Rout.save
pkg/RSienaTest/ChangeLog
pkg/RSienaTest/DESCRIPTION
pkg/RSienaTest/NAMESPACE
pkg/RSienaTest/R/algorithms.r
pkg/RSienaTest/R/effects.r
pkg/RSienaTest/R/effectsDocumentation.r
pkg/RSienaTest/R/initializeFRAN.r
pkg/RSienaTest/R/phase1.r
pkg/RSienaTest/R/phase2.r
pkg/RSienaTest/R/phase3.r
pkg/RSienaTest/R/print01Report.r
pkg/RSienaTest/R/robmon.r
pkg/RSienaTest/R/siena07.r
pkg/RSienaTest/R/sienaDataCreate.r
pkg/RSienaTest/R/sienaModelCreate.r
pkg/RSienaTest/R/sienaprint.r
pkg/RSienaTest/R/sienatable.r
pkg/RSienaTest/R/sienautils.r
pkg/RSienaTest/data/allEffects.csv
pkg/RSienaTest/doc/RSIENAspec.tex
pkg/RSienaTest/doc/Siena_algorithms.tex
pkg/RSienaTest/inst/doc/RSiena.bib
pkg/RSienaTest/inst/doc/RSiena_Manual.pdf
pkg/RSienaTest/inst/doc/RSiena_Manual.tex
pkg/RSienaTest/man/RSiena-package.Rd
pkg/RSienaTest/man/coCovar.Rd
pkg/RSienaTest/man/siena07.Rd
pkg/RSienaTest/man/sienaAlgorithmCreate.Rd
pkg/RSienaTest/man/varCovar.Rd
pkg/RSienaTest/src/data/Covariate.cpp
pkg/RSienaTest/src/data/Covariate.h
pkg/RSienaTest/src/data/NetworkLongitudinalData.cpp
pkg/RSienaTest/src/data/NetworkLongitudinalData.h
pkg/RSienaTest/src/model/effects/AltersDist2CovariateAverageEffect.cpp
pkg/RSienaTest/src/model/effects/AltersInDist2CovariateAverageEffect.cpp
pkg/RSienaTest/src/model/effects/AverageAlterDist2Effect.cpp
pkg/RSienaTest/src/model/effects/CovariateAndNetworkBehaviorEffect.cpp
pkg/RSienaTest/src/model/effects/CovariateDependentBehaviorEffect.cpp
pkg/RSienaTest/src/model/effects/CovariateDependentBehaviorEffect.h
pkg/RSienaTest/src/model/effects/EffectFactory.cpp
pkg/RSienaTest/src/model/effects/HigherCovariateEffect.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateDistance2AlterNetworkFunction.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateDistance2EgoAltSimNetworkFunction.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateDistance2InAlterNetworkFunction.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateDistance2NetworkFunction.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateDistance2NetworkFunction.h
pkg/RSienaTest/src/model/effects/generic/CovariateDistance2SimilarityNetworkFunction.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateNetworkAlterFunction.cpp
pkg/RSienaTest/src/model/effects/generic/CovariateNetworkAlterFunction.h
pkg/RSienaTest/src/model/effects/generic/MixedNetworkAlterFunction.cpp
pkg/RSienaTest/src/model/effects/generic/MixedNetworkAlterFunction.h
pkg/RSienaTest/src/model/tables/TwoNetworkCache.cpp
pkg/RSienaTest/src/model/tables/TwoNetworkCache.h
pkg/RSienaTest/src/siena07internals.cpp
pkg/RSienaTest/tests/parallel.R
pkg/RSienaTest/tests/parallel.Rout.save
Log:
New version 1.1-285; extensive changes.
Modified: pkg/RSiena/ChangeLog
===================================================================
--- pkg/RSiena/ChangeLog 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/ChangeLog 2015-05-20 19:25:53 UTC (rev 285)
@@ -1,3 +1,42 @@
+2015-05-20 R-Forge Revision 285
+Changes in RSiena and RSienaTest:
+ * tmax added to sienaFit objects and tconv.max mentioned in print.sienaFit().
+ * sienaAlgorithmCreate() has new arguments n2start,
+ truncation, doubleAveraging, standardizeVar;
+ this leads to various changes in phase2.r.
+ * Diagonalization corrected (matrix transpose) (phase2.r).
+ * Truncation based on multivariate deviation if
+ diagonalize < 1 (phase2.r).
+ * When there are missings in constant or changing monadic covariates,
+ and centered=FALSE for their creation by coCovar() or
+ varCovar(), the mean will be imputed (used to be 0, which was an error).
+ For changing covariates, this is the global mean.
+ * In coCovar() and varCovar() there is a new argument imputationValues,
+ which are used (if given) for imputation of missing values.
+ Like all missings, they are not used for the calculation
+ of the target statistics in the Method of Moments,
+ but only for the simulations.
+ * For non-centered covariates, averageAlter and averageInAlter
+ values for zero degrees were replaced by the observed covariate mean.
+ * New effects: outOutActIntn, toDist2, from.w.ind
+ * New effectGroup tripleNetworkObjective (allEffects.csv, effects.r)
+ (see the manual or effects.r for its characteristics).
+ * In the target statistic for the 'higher' effect, contributions for
+ value(ego)=value(alter) are now set appropriately at 0.5 (was 0).
+ * Decent error message when there are (almost) all NA in the dependent
+ behavioural variable (effects.r, function getBehaviorStartingVals()).
+ * The centering within effects for similarity variables at distance 2
+ now is done by the same similarity means just as for the simX effect
+ (attr(mydata$cCovars$mycov, "simMean"), etc.).
+ (Background: this was done earlier by "simMeans",
+ the implementation of which contained an error;
+ but the differentiation between "simMean" and "simMeans" is not important,
+ so "simMeans" was dropped for simplicity.)
+ The object "simMeans" was not yet dropped from the data structure
+ transmitted to C++ (siena07internals.cpp. initializeFRAN.r)
+ * z$positivized changed from matrix to vector (not important enough
+ for so much memory use).
+
2015-04-02 R-Forge Revision 284
Changes in RSiena and RSienaTest:
* New effects: simEgoDist2, simEgoInDist2, simEgoDist2W, simEgoInDist2W,
Modified: pkg/RSiena/DESCRIPTION
===================================================================
--- pkg/RSiena/DESCRIPTION 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/DESCRIPTION 2015-05-20 19:25:53 UTC (rev 285)
@@ -1,8 +1,8 @@
Package: RSiena
Type: Package
Title: Siena - Simulation Investigation for Empirical Network Analysis
-Version: 1.1-284
-Date: 2015-04-02
+Version: 1.1-285
+Date: 2015-05-20
Author: Ruth Ripley, Krists Boitmanis, Tom A.B. Snijders
Depends: R (>= 2.15.0), utils
Imports: Matrix, tcltk, lattice, parallel, MASS
@@ -10,6 +10,7 @@
SystemRequirements: GNU make, tcl/tk 8.5, Tktable
Maintainer: Tom A.B. Snijders <tom.snijders at nuffield.ox.ac.uk>
Description: Statistical modelling for longitudinal network data
+ using stochastic actor-oriented models.
License: GPL (>= 3)
LazyLoad: yes
LazyData: yes
Modified: pkg/RSiena/R/effects.r
===================================================================
--- pkg/RSiena/R/effects.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/effects.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -259,6 +259,35 @@
netType=netType))
}
}
+
+ for (k in seq(along=xx$depvars))
+ {
+ # This is an effect group that can be used
+ # for any three dependent networks, provided the first is one-mode;
+ # the receiver sets of the second and third networks
+ # must be the same.
+ # Note that some or all of the three networks may be the same.
+ if ((types[j] == "bipartite") && (types[k] == "bipartite"))
+ {
+ suitable <- (attr(xx$depvars[[j]], 'nodeSet')[2] ==
+ attr(xx$depvars[[k]], 'nodeSet')[2])
+ }
+ else
+ {
+ suitable <-
+ ((types[j] == "oneMode") && (types[k] == "oneMode"))
+ }
+ if (suitable)
+ {
+ thirdName <- names(xx$depvars)[k]
+ objEffects <-
+ rbind(objEffects,
+ createEffects("tripleNetworkObjective",
+ otherName, thirdName, name=varname,
+ groupName=groupName, group=group,
+ netType=netType))
+ }
+ }
if (types[j] == 'bipartite' &&
(attr(xx$depvars[[j]], 'nodeSet')[1] == nodeSet))
{
@@ -1344,6 +1373,10 @@
## dif2<- nactors/(nactors-1)*(sum(sqrdif,na.rm=TRUE)/nactors-dif^2)
dif1 <- mean(dif, na.rm=TRUE)
dif2 <- var(as.vector(dif), na.rm=TRUE)
+ if (is.na(dif2))
+ {
+ stop('Too little information in the dependent variable')
+ }
if (abs(dif1) < 0.9 * dif2)
{
tendency <- 0.5 * sign(dif1) * log((abs(dif1)+dif2)/(dif2-abs(dif1)))
Modified: pkg/RSiena/R/effectsDocumentation.r
===================================================================
--- pkg/RSiena/R/effectsDocumentation.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/effectsDocumentation.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -71,6 +71,7 @@
"nonSymmetricSymmetricObjective",
"nonSymmetricBipartiteObjective",
"covarNetNetObjective",
+ "tripleNetworkObjective",
"symmetricObjective",
"dyadObjective",
Modified: pkg/RSiena/R/initializeFRAN.r
===================================================================
--- pkg/RSiena/R/initializeFRAN.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/initializeFRAN.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -321,8 +321,6 @@
# is defined in x and may have changed.
# Therefore here we copy the corresponding lines
# from phase1.r.
- if (!x$diagg)
- {
# Partial diagonalization of derivative matrix
# for use if 0 < x$diagonalize < 1.
temp <- (1-x$diagonalize)*z$dfra +
@@ -332,7 +330,7 @@
diag(temp)[z$fixed] <- 1.0
# Invert this matrix
z$dinvv <- solve(temp)
- }
+
z$sf <- prevAns$sf
# check for backward compatibility with pre-1.1-220 versions:
if (is.null(prevAns$regrCoef))
Modified: pkg/RSiena/R/phase1.r
===================================================================
--- pkg/RSiena/R/phase1.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/phase1.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -222,8 +222,6 @@
fchange <- as.vector(dinv %*% z$mnfra)
z$dinv <- dinv
}
- if (!x$diagg)
- {
# Partial diagonalization of derivative matrix
# for use if 0 < x$diagonalize < 1.
temp <- (1-x$diagonalize)*z$dfra + x$diagonalize*diag(diag(z$dfra))
@@ -232,7 +230,7 @@
diag(temp)[z$fixed] <- 1.0
# Invert this matrix
z$dinvv <- solve(temp)
- }
+
Report('dfra :\n', cf)
## browser()
PrtOutMat(z$dfra, cf)
Modified: pkg/RSiena/R/phase2.r
===================================================================
--- pkg/RSiena/R/phase2.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/phase2.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -37,8 +37,20 @@
tkconfigure(z$tkvars$subphaselabel,state='normal')
}
z$Deriv <- FALSE
+ msf <- as.matrix(cov(z$sf)) # as.matrix() just in case z$pp = 1
+# z$sd <- sqrt(diag(msf))
+# Instead of the preceding line,
+# the following is used for equality with earlier versions.
z$sd <- sqrt(apply(z$sf, 2, function(x) sum(x^2) / nrow(z$sf) - mean(x)^2))
z$sd[z$fixed] <- 0
+ z$standardization <-
+ 1/sqrt(diag(as.matrix(z$dinvv %*% msf %*% t(z$dinvv))))
+ Report(paste("standardization = ", round(z$standardization,4)), cf)
+ if (sum(z$fixed) < z$pp)
+ {
+ z$sf.invcov <-
+ solve(msf[!z$fixed, !z$fixed] + 0.0001 * diag(z$pp - sum(z$fixed)))
+ }
Report(paste('\nPhase 2 has', x$nsub, 'subphases.\n'), cf)
z$gain <- x$firstg
z$reduceg <- x$reduceg
@@ -58,7 +70,7 @@
z
}
##@proc2subphase siena07 Do one subphase of phase 2
-proc2subphase <- function(z, x, subphase, useAverage=TRUE, ...)
+proc2subphase <- function(z, x, subphase, ...)
{
## init subphase of phase 2
z <- AnnouncePhase(z, x, subphase)
@@ -78,7 +90,7 @@
{
z$repeatsubphase <- z$repeatsubphase + 1
z$truncated <- rep(FALSE, z$n2max)
- z$positivized <- matrix(FALSE, nrow = z$n2max, ncol = z$pp)
+ z$positivized <- rep(0, z$pp)
z$ctime <- proc.time()[3]
z$time1 <- proc.time()[3]
z$thav <- z$theta
@@ -108,16 +120,19 @@
Report(msg, cf)
Report(which(z$truncated), cf, fill=80)
}
- if (any(z$positivized))
+ if (any(z$positivized >= 1))
{
msg <- paste('Intervention 2.',subphase,
'.2: positivity restriction:\n ',sep='')
Report(msg,cf)
- subs <- which(rowSums(z$positivized) > 0)
- msg<- sapply(subs, function(i, y)
- paste('Observation:', i, 'Coordinate(s):',
- paste((1:z$pp)[y[i,]], collapse = ' ')),
- y = z$positivized)
+ subs <- which((z$positivized) > 0)
+ msg <- paste('Positivized: ',
+ paste((1:z$pp)[subs], ': ', z$positivized[subs], '; ',
+ collapse=' '))
+# msg<- sapply(subs, function(i, y)
+# paste('Observation:', i, 'Coordinate(s):',
+# paste((1:z$pp)[y[i,]], collapse = ' ')),
+# y = z$positivized)
Report(msg, cf, fill=80)
}
if ((subphase >= 1) && (z$maxacor >= sqrt(2.0 / (z$nit + 1))))
@@ -145,28 +160,13 @@
{
Report('The user asked for early end of phase 2.\n', outf)
}
- if (useAverage)
- {
- z$theta <- z$thav / z$thavn # z$thavn = (z$nit + 1)
- }
- else
- {
- cat('\n')
- cat('Regression\n')
- ## use regression
- cat(z$thav / z$thavn, '; ') #(z$nit + 1)
- stop('Regression not implemented; revive z$thetaStore if you wish')
-# mylm <- lm(z$sf[1:z$nit, ] ~ z$thetaStore[1:z$nit, ])
-# coefs <- coef(mylm)[-1, ]
-# newvals <- solve(t(coefs), - mylm$coef[1, ])
-# z$theta <- newvals
- cat(z$theta, '\n')
- }
- DisplayThetaAutocor(z)
## cat('it',z$nit,'\n')
##recalculate autocor using -1 instead of -2 as error
ac <- ifelse (z$prod0 > 1e-12, z$prod1 / z$prod0, -1)
maxacor <- max(-99, ac[!z$fixed]) ##note -1 > -99
+ z$theta <- z$thav / z$thavn # z$thavn = (z$nit + 1)
+
+ DisplayThetaAutocor(z)
Report(paste('Phase ', z$Phase,'.', subphase, ' ended after ', z$nit,
' iterations.\n', sep = ''), cf)
if (x$checktime)
@@ -179,7 +179,7 @@
}
if ((maxacor >= sqrt(2 / (z$nit + 1))) && (subphase >= 1))
{
- Report('Warning. Autocorrelation criterion not satisfied.\n', cf)
+ Report('Note. Autocorrelation criterion not satisfied.\n', cf)
}
WriteOutTheta(z)
if (EarlyEndPhase2Flag())
@@ -217,6 +217,7 @@
xsmall <- NULL
zsmall <- makeZsmall(z)
z$returnDeps <- FALSE
+ sumfra <- 0.0
repeat
{
z$n <- z$n+1
@@ -336,34 +337,86 @@
# due to a misunderstanding.
# In version 1.1-244 it was changed back to the old Siena 3 way.
# Except now the threshold is 5 instead of 10.
-# For the case !x$diagg it might be better
-# to base truncation on some multivariate norm of z$dfra.
+# In version 1.1-285 the threshold is made a parameter from sienaModelCreate,
+# still with default 5;
+# and for the case !x$diagg, a multivariate truncation is used.
+
+ if (x$diagg)
+ {
maxRatio <- max(ifelse(z$fixed, 1.0, abs(fra)/ z$sd), na.rm=TRUE)
+ # note: this is a number, not a vector
+ }
+ else
+ {
+ if (z$pp > sum(z$fixed))
+ {
+ maxRatio <-
+ sqrt((t(fra[!z$fixed]) %*% z$sf.invcov %*% fra[!z$fixed]) /
+ (z$pp-sum(z$fixed)))
+ }
+ else
+ {
+ maxRatio <- 1.0
+ }
+ }
if ((is.na(maxRatio)) || (is.nan(maxRatio)))
{
maxRatio <- 1.0
}
+ if (maxRatio > x$truncation)
+ {
+ fra <- x$truncation*fra/maxRatio
+ z$truncated[z$nit] <- TRUE
+ }
+ if (subphase > x$doubleAveraging)
+ {
+ sumfra <- sumfra + fra
+ fra <- sumfra
+ }
+ if (x$standardizeVar)
+ {
+ if (x$diagg)
+ {
+ changestep <- fra / z$sd
+ }
+ else
+ {
+ if (x$standardizeWithTruncation)
+ {
+ changestep <- (as.vector(z$dinvv %*% fra))*pmin(z$standardization, 1)
+ }
+ else
+ {
+ changestep <- (as.vector(z$dinvv %*% fra))*z$standardization
+ }
+ }
+ }
+ else
+ {
if (x$diagg)
{
changestep <- fra / diag(z$dfra)
}
else
{
- changestep <- as.vector(fra %*% z$dinvv)
+ changestep <- as.vector(z$dinvv %*% fra)
+ }
}
changestep[z$fixed] <- 0.0
- if (maxRatio > 5)
- {
- changestep <- 5*changestep/maxRatio
- z$truncated[z$nit] <- TRUE
- }
fchange <- as.vector(z$gain * changestep)
## check positivity restriction
- z$positivized[z$nit, ] <- z$posj & (fchange > z$theta)
+ z$positivized[fchange > z$theta] <- z$positivized[fchange > z$theta] +1
+ z$positivized[!z$posj] <- 0
fchange <- ifelse(z$posj & (fchange > z$theta), z$theta * 0.5, fchange)
+ if (subphase > x$doubleAveraging)
+ {
+ zsmall$theta <- (z$thav/z$thavn) - fchange
+ }
+ else
+ {
zsmall$theta <- zsmall$theta - fchange
+ }
z$theta <- zsmall$theta
-# z$thetaStore[z$nit,] <- z$theta
z$thav <- z$thav + zsmall$theta
z$thavn <- z$thavn + 1
if (x$maxlike && !is.null(x$moreUpdates) && x$moreUpdates > 0)
@@ -381,8 +434,8 @@
if (!(is.na(z$minacor) || is.na(z$maxacor)))
{
if ((z$nit >= z$n2min && z$maxacor < 1e-10)||
- (z$nit >= z$n2max)||
- ((z$nit >= 50) && (z$minacor < -0.8) &&
+ (z$nit >= z$n2max)
+ || ((z$nit >= 50) && (z$minacor < -0.8) &&
(z$repeatsubphase < z$maxrepeatsubphase)))
{
break
Modified: pkg/RSiena/R/phase3.r
===================================================================
--- pkg/RSiena/R/phase3.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/phase3.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -148,15 +148,13 @@
##calculate t-ratios
dmsf <- diag(z$msf)
sf <- colMeans(z$sf)
- # TS: I wonder why "use" and "use2" are the names in the following lines;
- # the coordinates with "use" are <<not>> used.
- use <- dmsf < 1e-20 * z$scale * z$scale
- use2 <- abs(sf) < 1e-10 * z$scale
- dmsf[use] <- 1e-20 * z$scale[use] * z$scale[use]
+ toosmall <- dmsf < 1e-20 * z$scale * z$scale
+ toosmall2 <- abs(sf) < 1e-10 * z$scale
+ dmsf[toosmall] <- 1e-20 * z$scale[toosmall] * z$scale[toosmall]
tstat <- rep(NA, z$pp)
- tstat[!use]<- sf[!use] / sqrt(dmsf[!use])
- tstat[use & use2] <- 0
- tstat[use & !use2] <- NA # was 999
+ tstat[!toosmall]<- sf[!toosmall] / sqrt(dmsf[!toosmall])
+ tstat[toosmall & toosmall2] <- 0
+ tstat[toosmall & !toosmall2] <- NA
z$tstat <- tstat
# tconv.max = Maximum value of t-ratio for convergence,
# for any linear combination.
@@ -168,7 +166,7 @@
if (inherits(try(thisproduct <- solve(cov.dev, mean.dev), silent=TRUE),
"try-error"))
{
- Report('Maximum t-ratio for convergence not computable.\n', outf)
+ Report('Overall maximum t-ratio for convergence not computable.\n', outf)
}
else
{
@@ -184,10 +182,12 @@
PrtOutMat(as.matrix(mymess), outf)
PrtOutMat(as.matrix(mymess1), bof)
## Report(mymess1, bof, fill=80)
- tmax <- max(abs(tstat)[!z$fixed & !z$BasicRateFunction & z$resist > 0.9])
+ tmax <- max(abs(tstat)[!z$fixed])
z$tconv <- tstat
- error <- (abs(tmax) > 4.0 / sqrt(z$Phase3nits)) && (abs(tmax) > 0.3)
- if (tmax >= 0.4)
+ z$tmax <- tmax
+ error <- (is.na(tmax)) ||
+ (abs(tmax) > 4.0 / sqrt(z$Phase3nits)) && (abs(tmax) > 0.3)
+ if ((is.na(tmax)) || (tmax >= 0.4))
{
z$error <- TRUE
}
@@ -197,6 +197,8 @@
Report('of non-fixed parameters ', outf)
}
Report('being close to zero.\n', outf)
+ Report(c('\nOverall maximum convergence ratio = ',
+ round(z$tconv.max, digits=4), '.\n'), outf)
if (z$Phase3nits < 100)
{
Report(c('(Since the diagnostic checks now are based only on ',
@@ -206,7 +208,8 @@
if (error) ## also test subphase here but not relevant to phase 3, I think
{
Report('One or more of the t-statistics are rather large.\n', outf)
- if (tmax > 0.5)
+ doubts <- ifelse(is.na(tmax), TRUE, tmax > 0.5)
+ if (doubts)
{
Report('Convergence of the algorithm is doubtful.\n', outf)
}
Modified: pkg/RSiena/R/print01Report.r
===================================================================
--- pkg/RSiena/R/print01Report.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/print01Report.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -1370,101 +1370,6 @@
}
}
}
- ## report on alter similarity means
- Report(c("\nFor the distance-2 similarity variable calculated from",
- "each actor \ncovariate, the mean is also subtracted.\n",
- "These means are:\n"), outf)
- if (nData == 1) ## ie we may have constant covariates
- {
- sims <- cCovarSim2[[1]]
- for (i in seq(along=sims))
- {
- if (atts$cCovarPoszvar[i])
- {
- Report(c("Distance-2 Similarity ",
- format(atts$cCovars[i], width=12),
- ':', format(names(sims[[i]]), width=12,
- justify="right"), '\n'), sep="", outf)
- Report(c(rep(" ", 35),
- format(round(sims[[i]], 4), width=12, nsmall=4),
- '\n'), sep="", outf)
- }
- }
- }
- for (i in seq(along=atts$netnames))
- {
- if (atts$types[i] == "behavior" && atts$bPoszvar[i])
- {
- if (nData > 1)
- {
- thisSim <- lapply(behSim2, function(x)x[[netnames[i]]])
- Report(c("Distance-2 Similarity ",
- format(atts$netnames[i], width=12), ":\n"),
- sep="", outf)
- Report(c(rep(" ", 24),
- format(names(thisSim[[1]]),
- width=12, justify="right"), "\n"), sep="",
- outf)
- mystr <- format(paste(" Subproject ", 1:nData, " <",
- atts$names, "> ", sep=""))
- for (j in seq(along=thisSim))
- {
- Report(c(mystr[j], format(round(thisSim[[j]], 4),
- nsmall=4, width=12), "\n"),
- sep="", outf)
- }
- Report("\n", outf)
- }
- else
- {
- sims <- behSim2[[1]]
- Report(c("Distance-2 Similarity ", format(atts$netnames[i],
- width=12),
- ':', format(names(sims[[i]]), width=12), '\n'),
- sep="", outf)
- Report(c(rep(" ", 35), format(round(sims[[i]], 4), width=12,
- nsmall=4), '\n'), sep="", outf)
- }
- }
- }
- for (i in seq(along=atts$vCovars))
- {
- covarnames <- atts$vCovars
- if (atts$vCovarPoszvar[i])
- {
- if (nData > 1)
- {
- thisSim <- lapply(vCovarSim2, function(x)x[[covarnames[i]]])
- Report(c("Distance-2 Similarity ", format(covarnames[i],
- width=12),
- ":\n"), sep="", outf)
- Report(c(rep(" ", 24), format(names(thisSim[[1]]),
- width=12, justify="right"),
- "\n"), sep="", outf)
- mystr <- format(paste(" Subproject ", 1:nData, " <",
- atts$names, "> ", sep=""))
- for (j in seq(along=thisSim))
- {
- Report(c(mystr[j], format(round(thisSim[[j]], 4),
- nsmall=4, width=12), "\n"),
- sep="", outf)
- }
- Report("\n", outf)
- }
- else
- {
- sims <- vCovarSim2[[1]]
- Report(c("Distance-2 Similarity", format(atts$vCovars[i],
- width=12),
- ':', format(names(sims[[i]]), width=12,
- justify="right"),
- '\n'), outf)
- Report(c(rep(" ", 35), format(round(sims[[i]], 4), width=12,
- nsmall=4), '\n'), sep="",
- outf)
- }
- }
- }
}
## report on constraints
if (any(atts$anyHigher) || any(atts$anyDisjoint) || any(atts$anyAtLeastOne))
Modified: pkg/RSiena/R/robmon.r
===================================================================
--- pkg/RSiena/R/robmon.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/robmon.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -146,7 +146,6 @@
z$theta0 <- z$theta
## store starting value without any conditioning variables
z$anyposj <- any(z$posj)
- z$resist <- rep(1, z$pp)
z$n1 <- 7 + 3 * z$pp
if (x$dolby){z$n1 <- max(z$n1, 50)}
if (any(!z$fixed))
Modified: pkg/RSiena/R/siena07.r
===================================================================
--- pkg/RSiena/R/siena07.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/siena07.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -274,7 +274,8 @@
## 2.5198421 = 2^(4/3); this gives a gain parameter of order n^(-3/4) ##
if (x$nsub > 0)
{
- z$n2minimum[1] <- trunc(z$n2min0 * 2.52)
+ z$n2minimum[1] <-
+ ifelse(is.null(x$n2start), trunc(z$n2min0 * 2.52), x$n2start)
z$n2maximum[1] <- z$n2minimum[1] + 200
if (x$nsub > 1)
{
Modified: pkg/RSiena/R/sienaDataCreate.r
===================================================================
--- pkg/RSiena/R/sienaDataCreate.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/sienaDataCreate.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -50,6 +50,10 @@
attr(x, "name") <- name
attr(x, "vartotal") <- vartotal
attr(x, "nonMissingCount") <- nonMissingCount
+ if ((!is.null(attr(x, "imputationValues"))) && (attr(x, "centered")))
+ {
+ attr(x, "imputationValues") <- attr(x, "imputationValues") - varmean
+ }
x
}
@@ -88,6 +92,10 @@
attr(x, 'name') <- name
attr(x, "vartotal") <- vartotal
attr(x, "nonMissingCount") <- nonMissingCount
+ if ((!is.null(attr(x, "imputationValues"))) && (attr(x, "centered")))
+ {
+ attr(x, "imputationValues") <- attr(x, "imputationValues") - varmean
+ }
x
}
##@addAttributes.coDyadCovar DataCreate
Modified: pkg/RSiena/R/sienaModelCreate.r
===================================================================
--- pkg/RSiena/R/sienaModelCreate.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/sienaModelCreate.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -20,14 +20,15 @@
sienaModelCreate <-
function(fn,
projname="Siena", MaxDegree=0, useStdInits=FALSE,
- n3=1000, nsub=4, dolby=TRUE,
+n3=1000, nsub=4, n2start = NULL, dolby=TRUE,
maxlike=FALSE, diagonalize=1.0*!maxlike,
condvarno=0, condname='',
firstg=0.2, reduceg=0.5, cond=NA, findiff=FALSE, seed=NULL,
pridg=0.05, prcdg=0.05, prper=0.2, pripr=0.3, prdpr=0.3,
prirms=0.05, prdrms=0.05, maximumPermutationLength=40,
minimumPermutationLength=2, initialPermutationLength=20,
- modelType=1, mult=5, simOnly=FALSE, localML=FALSE)
+modelType=1, mult=5, simOnly=FALSE, localML=FALSE,
+truncation=5, doubleAveraging=nsub, standardizeVar=(diagonalize<1))
{
model <- NULL
model$projname <- projname
@@ -37,7 +38,6 @@
model$firstg <- firstg
model$reduceg <- reduceg
model$maxrat <- 1.0
-# model$maxmaxrat <- 10.0
model$maxlike <- maxlike
model$simOnly <- simOnly
model$localML <- localML
@@ -83,6 +83,7 @@
}
model$FinDiff.method <- findiff
model$nsub <- nsub
+model$n2start <- n2start
model$dolby <- (dolby && (!maxlike))
if (diagonalize < 0) {diagonalize <- 0}
if (diagonalize > 1) {diagonalize <- 1}
@@ -102,6 +103,24 @@
model$minimumPermutationLength <- minimumPermutationLength
model$initialPermutationLength <- initialPermutationLength
model$mult <- mult
+model$truncation <- truncation
+model$doubleAveraging <- doubleAveraging
+model$standardizeWithTruncation <- standardizeVar
+model$standardizeVar <- standardizeVar
+# The difference between these two is a hidden, non-documented option,
+# perhaps for being tried out
+# by later modification of the sienaAlgorithm object.
+model$noAggregation <- FALSE
+# This also is a hidden, non-documented option, perhaps for being tried out.
+# \item{noAggregation}{Logical:
+# do not replace current parameter value after subphase 1
+# by the mean over subphase 1, if some quasi-autocorrelation
+# then is larger than .5. May be helpful if initial value was very far away.
+# The two options model$noAggregation and model$standardizeWithTruncation
+# are used only in phase2.r.
+model$browse1 <- FALSE # non-documented options for browsing in phase 2.
+model$browse2 <- FALSE
+model$browse3 <- FALSE
class(model) <- "sienaAlgorithm"
model
}
@@ -110,4 +129,4 @@
##@sienaAlgorithmCreate AlgoritmCreate
-sienaAlgorithmCreate <- sienaModelCreate
\ No newline at end of file
+sienaAlgorithmCreate <- sienaModelCreate
\ No newline at end of file
Modified: pkg/RSiena/R/sienaprint.r
===================================================================
--- pkg/RSiena/R/sienaprint.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/sienaprint.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -306,6 +306,11 @@
rep('\n',x$pp), sep='')
cat(as.matrix(mymess1),'\n', sep='')
}
+ else
+ {
+ cat(c("\nOverall maximum convergence ratio: ",
+ sprintf("%8.4f", x$tconv.max), "\n\n"))
+ }
try(if (x$errorMessage.cov > '')
{cat('\nWarning:', x$errorMessage.cov, '\n')}, silent=TRUE)
@@ -342,8 +347,6 @@
stop("not a legitimate summary of a Siena model fit")
}
print.sienaFit(x)
-# cat(c("Overall maximum convergence ratio: ",
-# sprintf("%8.4f", x$tconv.max), "\n\n"))
if (x$maxlike)
{
Modified: pkg/RSiena/R/sienatable.r
===================================================================
--- pkg/RSiena/R/sienatable.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/sienatable.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -34,17 +34,18 @@
ses <- sqrt(diag(x$covtheta))
ses[x$fixed] <- NA
max.t1 <- max(abs(x$tstat[!x$fixed]))
- max.t <- round(max.t1, digits = d)
+ dd <- 2
+ max.t <- round(max.t1, digits = dd)
if (max.t < max.t1)
{
- max.t <- max.t + 10^{-d} #needs to be rounded up
+ max.t <- max.t + 10^{-dd} #needs to be rounded up
}
-# maxlincomb.t1 <- x$tconv.max
-# maxlincomb.t <- round(maxlincomb.t1, digits = d)
-# if (maxlincomb.t < maxlincomb.t1)
-# {
-# maxlincomb.t <- maxlincomb.t + 10^{-d} #needs to be rounded up
-# }
+ maxlincomb.t1 <- x$tconv.max
+ maxlincomb.t <- round(maxlincomb.t1, digits = dd)
+ if (maxlincomb.t < maxlincomb.t1)
+ {
+ maxlincomb.t <- maxlincomb.t + 10^{-dd} #needs to be rounded up
+ }
if (length(x$condvarno) == 0)
{
condvarno <- 0
@@ -315,9 +316,9 @@
footnote <- c(paste("\\multicolumn{5}{l}\n ",
"{\\footnotesize{convergence $t$ ratios all $<$ ", max.t,
".}}\\\\\n",
-# "\\multicolumn{5}{l}",
-# "{\\footnotesize{Overall maximum convergence ratio ",
-# maxlincomb.t,".}}",
+ "\\multicolumn{5}{l}",
+ "{\\footnotesize{Overall maximum convergence ratio ",
+ maxlincomb.t,".}}",
sep="",collapse=""),
"\\end{tabular}")
Modified: pkg/RSiena/R/sienautils.r
===================================================================
--- pkg/RSiena/R/sienautils.r 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/R/sienautils.r 2015-05-20 19:25:53 UTC (rev 285)
@@ -122,7 +122,7 @@
}
##@coCovar Create
-coCovar <- function(val, centered=TRUE, nodeSet="Actors")
+coCovar <- function(val, centered=TRUE, nodeSet="Actors", imputationValues=NULL)
{
##vector, numeric or factor
if (!is.vector(val))
@@ -133,14 +133,30 @@
{
stop("val must be numeric or a factor")
}
+ if (!is.null(imputationValues))
+ {
+ if (!(is.numeric(imputationValues) || is.factor(imputationValues)))
+ {
+ stop("imputationValues must be numeric or a factor")
+ }
+ if (anyNA(imputationValues))
+ {
+ stop("imputationValues must not contain any NA values")
+ }
+ if (length(imputationValues) != length(val))
+ {
+ stop("imputationValues must have the same length as val")
+ }
+ }
out <- val
class(out) <- "coCovar"
attr(out, "centered") <- centered
attr(out, "nodeSet") <- nodeSet
+ attr(out, "imputationValues") <- imputationValues
out
}
##@varCovar Create
-varCovar<- function(val, centered=TRUE, nodeSet="Actors")
+varCovar<- function(val, centered=TRUE, nodeSet="Actors", imputationValues=NULL)
{
##matrix, numeric or factor, nrow = nactors and cols = observations-1
if (!is.matrix(val))
@@ -151,10 +167,26 @@
{
stop("val must be numeric or a factor")
}
+ if (!is.null(imputationValues))
+ {
+ if (!(is.numeric(imputationValues) || is.factor(imputationValues)))
+ {
+ stop("imputationValues must be numeric or a factor")
+ }
+ if (any(is.na(imputationValues)))
+ {
+ stop("imputationValues must not contain any NA values")
+ }
+ if (any(dim(imputationValues) != dim(val)))
+ {
+ stop("imputationValues must have the same dimension as val")
+ }
+ }
out <- val
class(out) <- "varCovar"
attr(out, "centered") <- centered
attr(out, "nodeSet") <- nodeSet
+ attr(out, "imputationValues") <- imputationValues
out
}
Modified: pkg/RSiena/data/allEffects.csv
===================================================================
--- pkg/RSiena/data/allEffects.csv 2015-04-02 14:58:39 UTC (rev 284)
+++ pkg/RSiena/data/allEffects.csv 2015-05-20 19:25:53 UTC (rev 285)
@@ -103,28 +103,28 @@
dyadObjective,XW=>X closure of xxxxxx,XW=>X closure1 of xxxxxx,XWX1,FALSE,xxxxxx,,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,,FALSE
dyadObjective,XW=>X closure of xxxxxx,XW=>X closure2 of xxxxxx,XWX2,FALSE,xxxxxx,,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,,FALSE
dyadBipartiteObjective,xxxxxx,Sum of ties x xxxxxx,X,TRUE,xxxxxx,,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,dyadic,FALSE
-covarBehaviorObjective,behavior xxxxxx: effect from yyyyyy,beh. xxxxxx x yyyyyy,effFrom,TRUE,yyyyyy,,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: tot. sim. (zzzzzz) x alter's yyyyyy,beh. xxxxxx tot. sim. (zzzzzz) x alter's yyyyyy,totSimAltX,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: av. sim. (zzzzzz) x alter's yyyyyy,beh. xxxxxx av. sim. (zzzzzz) x alter's yyyyyy,avSimAltX,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: av. alters (zzzzzz) x alter's yyyyyy,beh. xxxxxx av. alters (zzzzzz) x alter's yyyyyy,avAltAltX,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: alter's (zzzzzz) yyyyyy average,beh. xxxxxx alter's (zzzzzz) yyyyyy average,avXAlt,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: alter's (zzzzzz) yyyyyy total,beh. xxxxxx alter's (zzzzzz) yyyyyy total,totXAlt,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: in-alter's (zzzzzz) yyyyyy aver.,beh. xxxxxx in-alter's (zzzzzz) yyyyyy aver.,avXInAlt,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: in-alter's (zzzzzz) yyyyyy total,beh. xxxxxx in-alter's (zzzzzz) yyyyyy total,totXInAlt,TRUE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: dist. 2 alter's (zzzzzz) yyyyyy av.,beh. xxxxxx dist. 2 alter's (zzzzzz) yyyyyy av.,avXAltDist2,FALSE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: dist. 2 alter's (zzzzzz) yyyyyy tot.,beh. xxxxxx dist. 2 alter's (zzzzzz) yyyyyy tot.,totXAltDist2,FALSE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: dist. 2 av. alter's (zzzzzz) yyyyyy tot.,beh. xxxxxx av. dist. 2 alter's (zzzzzz) yyyyyy tot.,avTXAltDist2,FALSE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: dist. 2 tot. alter's (zzzzzz) yyyyyy av.,beh. xxxxxx tot. dist. 2 alter's (zzzzzz) yyyyyy av.,totAXAltDist2,FALSE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
-covarBehaviorNetObjective,behavior xxxxxx: alts (zzzzzz) dist-2 incom. yyyyyy av.,behavior xxxxxx: incom.av. yyyyyy (zzzzzz)alt. dist. 2,avXInAltDist2,FALSE,yyyyyy,zzzzzz,eval,FALSE,FALSE,FALSE,FALSE,FALSE,",",0,0,objective,NA,NA,0,0,0,0,OK,FALSE
[TRUNCATED]
To get the complete diff run:
svnlook diff /svnroot/rsiena -r 285
More information about the Rsiena-commits
mailing list