[Rsiena-commits] r288 - in pkg: RSiena RSiena/R RSiena/inst/doc RSiena/man RSiena/src RSiena/src/model/effects RSiena/src/model/effects/generic RSiena/tests RSienaTest RSienaTest/R RSienaTest/data RSienaTest/doc RSienaTest/inst/doc RSienaTest/man RSienaTest/src RSienaTest/src/model/effects RSienaTest/src/model/effects/generic RSienaTest/tests
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sat Jul 18 16:54:38 CEST 2015
Author: tomsnijders
Date: 2015-07-18 16:54:37 +0200 (Sat, 18 Jul 2015)
New Revision: 288
Added:
pkg/RSiena/src/model/effects/DoubleDegreeBehaviorEffect.cpp
pkg/RSiena/src/model/effects/DoubleDegreeBehaviorEffect.h
pkg/RSiena/src/model/effects/DoubleRecDegreeBehaviorEffect.cpp
pkg/RSiena/src/model/effects/DoubleRecDegreeBehaviorEffect.h
pkg/RSiena/src/model/effects/HomCovariateActivityEffect.cpp
pkg/RSiena/src/model/effects/HomCovariateActivityEffect.h
pkg/RSiena/src/model/effects/MixedNetworkEffect.cpp
pkg/RSiena/src/model/effects/MixedNetworkEffect.h
pkg/RSiena/src/model/effects/TwoNetworkDependentBehaviorEffect.cpp
pkg/RSiena/src/model/effects/TwoNetworkDependentBehaviorEffect.h
pkg/RSienaTest/src/model/effects/DoubleDegreeBehaviorEffect.cpp
pkg/RSienaTest/src/model/effects/DoubleDegreeBehaviorEffect.h
pkg/RSienaTest/src/model/effects/DoubleRecDegreeBehaviorEffect.cpp
pkg/RSienaTest/src/model/effects/DoubleRecDegreeBehaviorEffect.h
pkg/RSienaTest/src/model/effects/HomCovariateActivityEffect.cpp
pkg/RSienaTest/src/model/effects/HomCovariateActivityEffect.h
pkg/RSienaTest/src/model/effects/MixedNetworkEffect.cpp
pkg/RSienaTest/src/model/effects/MixedNetworkEffect.h
pkg/RSienaTest/src/model/effects/TwoNetworkDependentBehaviorEffect.cpp
pkg/RSienaTest/src/model/effects/TwoNetworkDependentBehaviorEffect.h
Modified:
pkg/RSiena/ChangeLog
pkg/RSiena/DESCRIPTION
pkg/RSiena/R/effects.r
pkg/RSiena/R/effectsDocumentation.r
pkg/RSiena/R/phase3.r
pkg/RSiena/R/sienaGOF.r
pkg/RSiena/R/sienaRI.r
pkg/RSiena/R/sienaeffects.r
pkg/RSiena/R/sienatable.r
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/sienaRI.Rd
pkg/RSiena/src/model/effects/AllEffects.h
pkg/RSiena/src/model/effects/EffectFactory.cpp
pkg/RSiena/src/model/effects/SameCovariateTransitiveTripletsEffect.cpp
pkg/RSiena/src/model/effects/SameCovariateTransitiveTripletsEffect.h
pkg/RSiena/src/model/effects/generic/InStarsTimesDegreesFunction.h
pkg/RSiena/src/siena07internals.cpp
pkg/RSiena/tests/parallel.Rout.save
pkg/RSienaTest/ChangeLog
pkg/RSienaTest/DESCRIPTION
pkg/RSienaTest/R/effects.r
pkg/RSienaTest/R/effectsDocumentation.r
pkg/RSienaTest/R/phase3.r
pkg/RSienaTest/R/sienaBayes.r
pkg/RSienaTest/R/sienaRI.r
pkg/RSienaTest/R/sienaeffects.r
pkg/RSienaTest/R/sienatable.r
pkg/RSienaTest/data/allEffects.csv
pkg/RSienaTest/doc/HowToCommit.pdf
pkg/RSienaTest/doc/HowToCommit.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/sienaBayes.Rd
pkg/RSienaTest/man/sienaRI.Rd
pkg/RSienaTest/src/model/effects/AllEffects.h
pkg/RSienaTest/src/model/effects/EffectFactory.cpp
pkg/RSienaTest/src/model/effects/SameCovariateTransitiveTripletsEffect.cpp
pkg/RSienaTest/src/model/effects/SameCovariateTransitiveTripletsEffect.h
pkg/RSienaTest/src/model/effects/generic/InStarsTimesDegreesFunction.h
pkg/RSienaTest/src/siena07internals.cpp
pkg/RSienaTest/tests/parallel.Rout.save
Log:
New version 1.1-288 for RSiena and RSienaTest
Modified: pkg/RSiena/ChangeLog
===================================================================
--- pkg/RSiena/ChangeLog 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/ChangeLog 2015-07-18 14:54:37 UTC (rev 288)
@@ -1,3 +1,27 @@
+2015-07-18 R-Forge Revision 288
+Changes in RSiena and RSienaTest:
+ * New effects homXOutAct, FFDeg, BBDeg, RFDeg, diffXTransTrip.
+ * sameXInPop and diffXInPop also added for two-mode networks;
+ but they are not dyadic!
+ * In names of behavior effects and statistics dropped the
+ (redundant) parts "behavior" and "beh.".
+ * plot.sienaRI: new parameter "actors";
+ proportions with piechart improved; function of parameter radius changed.
+ * fra2 constructed only if findiff (phase3.r).
+ * siena.table does no more produce the double minus sign in html output.
+Changes in RSiena:
+ * Correction of error for two-mode networks in sienaGOF.
+Changes in RSienaTest:
+ * sienaBayes: new parameter nSampRates;
+ correction in use of prevBayes (with extra createStores());
+ more efficient calculation of multivariate normal density.
+ * Small changes in HowToCommit.tex.
+
+2015-06-02 R-Forge Revision 286
+(Version number was kept the same...)
+Changes in RSienaTest:
+ * Correction of error for two-mode networks in sienaGOF.
+
2015-05-21 R-Forge Revision 286
Changes in RSiena and RSienaTest:
* test11 dropped from \tests\parallel.R.
@@ -30,7 +54,7 @@
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 effects: outOutActIntn, sharedTo, 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
@@ -49,6 +73,8 @@
* z$positivized changed from matrix to vector (not important enough
for so much memory use).
* test7 renamed test 5, test6 and new test7 added in \tests\parallel.R
+Changes in RSienaTest:
+ * Small changes in HowToCommit.tex.
2015-04-02 R-Forge Revision 284
Changes in RSiena and RSienaTest:
Modified: pkg/RSiena/DESCRIPTION
===================================================================
--- pkg/RSiena/DESCRIPTION 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/DESCRIPTION 2015-07-18 14:54:37 UTC (rev 288)
@@ -1,8 +1,8 @@
Package: RSiena
Type: Package
Title: Siena - Simulation Investigation for Empirical Network Analysis
-Version: 1.1-286
-Date: 2015-05-21
+Version: 1.1-288
+Date: 2015-07-18
Author: Ruth Ripley, Krists Boitmanis, Tom A.B. Snijders
Depends: R (>= 2.15.0), utils
Imports: Matrix, tcltk, lattice, parallel, MASS
Modified: pkg/RSiena/R/effects.r
===================================================================
--- pkg/RSiena/R/effects.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/effects.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -39,7 +39,7 @@
effects <- RSiena::allEffects[RSiena::allEffects$effectGroup == effectGroup, ]
if (nrow(effects) == 0)
{
- stop("empty effect group")
+ stop("empty effect group", effectGroup)
}
if (any(is.na(effects$effectName)))
{
@@ -474,6 +474,29 @@
varname, depvarname, name=varname,
groupName=groupName, group=group,
netType=netType)
+ tmpObjEffects2 <- NULL
+ for (k in seq(along=xx$depvars))
+ {
+ if ((j != k) && (types[k] == "oneMode") &&
+ (attr(xx$depvars[[k]], "symmetric")) &&
+ (attr(xx$depvars[[k]], "nodeSet") == nodeSet))
+ {
+ othervarname <- names(xx$depvars)[k]
+ tmpObjEffects3 <-
+ createEffects("behaviorSymSymObjective",
+ varname, depvarname, othervarname,
+ name=varname,
+ groupName=groupName, group=group,
+ netType=netType)
+ tmpObjEffects3$functionName <-
+ paste(tmpObjEffects3$functionName,
+ " (", depvarname, ",", othervarname, ")", sep="")
+ tmpObjEffects3$effectName <-
+ paste(tmpObjEffects3$effectName,
+ " (", depvarname, ",", othervarname, ")", sep = "")
+ tmpObjEffects2 <- rbind(tmpObjEffects2, tmpObjEffects3)
+ }
+ }
tmpRateEffects <-
createEffects("behaviorSymmetricRate",
varname, depvarname, name=varname,
@@ -487,6 +510,48 @@
varname, depvarname, name=varname,
groupName=groupName, group=group,
netType=netType)
+ tmpObjEffects2 <- NULL
+ for (k in seq(along=xx$depvars))
+ {
+ if ((k != j) && (types[k] == "oneMode") &&
+ (!attr(xx$depvars[[k]], "symmetric")) &&
+ (attr(xx$depvars[[k]], "nodeSet") == nodeSet))
+ {
+ othervarname <- names(xx$depvars)[k]
+ tmpObjEffects3 <-
+ createEffects("behaviorOneOneModeObjective",
+ varname, depvarname, othervarname,
+ name=varname,
+ groupName=groupName, group=group,
+ netType=netType)
+ tmpObjEffects3$functionName <-
+ paste(tmpObjEffects3$functionName,
+ " (", depvarname, ",", othervarname, ")", sep="")
+ tmpObjEffects3$effectName <-
+ paste(tmpObjEffects3$effectName,
+ " (", depvarname, ",", othervarname, ")", sep = "")
+ tmpObjEffects2 <- rbind(tmpObjEffects2, tmpObjEffects3)
+ }
+ if ((types[k] == "oneMode") &&
+ (attr(xx$depvars[[k]], "symmetric")) &&
+ (attr(xx$depvars[[k]], "nodeSet") == nodeSet))
+ {
+ othervarname <- names(xx$depvars)[k]
+ tmpObjEffects3 <-
+ createEffects("behaviorOneModeSymObjective",
+ varname, depvarname, othervarname,
+ name=varname,
+ groupName=groupName, group=group,
+ netType=netType)
+ tmpObjEffects3$functionName <-
+ paste(tmpObjEffects3$functionName,
+ " (", depvarname, ",", othervarname, ")", sep="")
+ tmpObjEffects3$effectName <-
+ paste(tmpObjEffects3$effectName,
+ " (", depvarname, ",", othervarname, ")", sep = "")
+ tmpObjEffects2 <- rbind(tmpObjEffects2, tmpObjEffects3)
+ }
+ }
tmpRateEffects <-
createEffects("behaviorOneModeRate",
varname, depvarname, name=varname,
@@ -509,7 +574,7 @@
" (", depvarname, ")", sep = "")
}
- objEffects <- rbind(objEffects, tmpObjEffects)
+ objEffects <- rbind(objEffects, tmpObjEffects, tmpObjEffects2)
rateEffects <- rbind(rateEffects, tmpRateEffects)
}
if (types[j] == 'bipartite' &&
@@ -521,6 +586,30 @@
varname, depvarname, name=varname,
groupName=groupName, group=group,
netType=netType)
+ tmpObjEffects2 <- NULL
+ for (k in seq(along=xx$depvars))
+ {
+ if ((k != j) && (types[k] == "bipartite") &&
+ (attr(xx$depvars[[k]], "nodeSet")[1] == nodeSet) &&
+ (attr(xx$depvars[[j]], "nodeSet")[2] ==
+ attr(xx$depvars[[k]], "nodeSet")[2]))
+ {
+ othervarname <- names(xx$depvars)[k]
+ tmpObjEffects3 <-
+ createEffects("behaviorBipBipObjective",
+ varname, depvarname, othervarname,
+ name=varname,
+ groupName=groupName, group=group,
+ netType=netType)
+ tmpObjEffects3$functionName <-
+ paste(tmpObjEffects3$functionName,
+ " (", depvarname, ",", othervarname, ")", sep="")
+ tmpObjEffects3$effectName <-
+ paste(tmpObjEffects3$effectName,
+ " (", depvarname, ",", othervarname, ")", sep = "")
+ tmpObjEffects2 <- rbind(tmpObjEffects2, tmpObjEffects3)
+ }
+ }
tmpRateEffects <-
createEffects("behaviorBipartiteRate",
varname, depvarname, name=varname,
@@ -542,7 +631,7 @@
" (", depvarname, ")", sep = "")
}
- objEffects <- rbind(objEffects, tmpObjEffects)
+ objEffects <- rbind(objEffects, tmpObjEffects, tmpObjEffects2)
rateEffects <- rbind(rateEffects, tmpRateEffects)
}
}
@@ -878,9 +967,11 @@
name=varname,
groupName=groupName, group=group,
netType=netType)
+ # restrict to covariates on first node set
covObjEffects <-
covObjEffects[covObjEffects$shortName %in%
- c("egoX", "altInDist2", "totInDist2", "simEgoInDist2"), ]
+ c("egoX", "altInDist2", "totInDist2",
+ "simEgoInDist2", "sameXInPop", "diffXInPop"), ]
covRateEffects <- createEffects("covarBipartiteRate", covarname,
name=varname,
groupName=groupName, group=group,
@@ -892,9 +983,10 @@
name=varname,
groupName=groupName, group=group,
netType=netType)
+ # restrict to covariates on second node set
covObjEffects <-
covObjEffects[covObjEffects$shortName %in%
- c("altX", "altSqX"), ]
+ c("altX", "altSqX", "homXOutAct"), ]
if (!moreThan2)
{
covObjEffects <-
Modified: pkg/RSiena/R/effectsDocumentation.r
===================================================================
--- pkg/RSiena/R/effectsDocumentation.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/effectsDocumentation.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -90,6 +90,10 @@
"behaviorOneModeObjective",
"behaviorSymmetricObjective",
"behaviorBipartiteObjective",
+ "behaviorOneOneModeObjective",
+ "behaviorSymSymObjective",
+ "behaviorOneModeSymObjective",
+ "behaviorBipBipObjective",
"covarBehaviorObjective",
"covarBehaviorNetObjective",
"covarABehaviorBipartiteObjective",
@@ -122,7 +126,7 @@
order2 <- match(myorder, x[, 2])
order3 <- as.vector(mytab[myorder])
order4 <- unlist(apply(cbind(order2, order3), 1,
- function(x)x[1]:(x[1] + x[2] -1)))
+ function(x)x[1]:(max(x[1] + x[2] -1,1))))
y <- x[order4, -2]
}
else
Modified: pkg/RSiena/R/phase3.r
===================================================================
--- pkg/RSiena/R/phase3.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/phase3.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -611,7 +611,10 @@
{
fra <- colSums(zz$fra)
fra <- fra - z$targets
+ if (z$FinDiff.method)
+ {
fra2 <- zz$fra
+ }
z$sf[z$nit, ] <- fra
z$sf2[z$nit, , ] <- zz$fra
z$sims[[z$nit]] <- zz$sims
@@ -628,8 +631,11 @@
z$sf2[z$nit + (i - 1), , ] <- zz[[i]]$fra
z$sims[[z$nit + (i - 1)]] <- zz[[i]]$sims
}
+ if (z$FinDiff.method)
+ {
fra2 <- t(sapply(zz, function(x)x$fra))
dim(fra2) <- c(int, nrow(zz[[1]]$fra), z$pp)
+ }
fra <- t(sapply(zz, function(x) colSums(x$fra)))
}
if (x$maxlike)
Modified: pkg/RSiena/R/sienaGOF.r
===================================================================
--- pkg/RSiena/R/sienaGOF.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/sienaGOF.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -883,6 +883,7 @@
sparseMatrixExtraction <-
function(i, obsData, sims, period, groupName, varName){
# require(Matrix)
+ isBipartite <- "bipartite" == attr(obsData[[groupName]]$depvars[[varName]], "type")
dimsOfDepVar<- attr(obsData[[groupName]]$depvars[[varName]], "netdims")
if (attr(obsData[[groupName]]$depvars[[varName]], "sparse"))
{
@@ -919,7 +920,7 @@
returnValue <- changeToStructural(returnValue,
Matrix(obsData[[groupName]]$depvars[[varName]][,,period]))
}
- diag(returnValue) <- 0 # not guaranteed by data input
+ if(!isBipartite) diag(returnValue) <- 0 # not guaranteed by data input
}
else
{
Modified: pkg/RSiena/R/sienaRI.r
===================================================================
--- pkg/RSiena/R/sienaRI.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/sienaRI.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -6,7 +6,7 @@
# * File: sienaRI.r
# *
# * Description: Used to determine, print, and plots relative importances of effects
-# * in for potential desicions of actors at observation moments.
+# * for potential decisions of actors at observation moments.
# *****************************************************************************/
##@sienaRI
@@ -24,15 +24,19 @@
}
if(!is.null(algorithm)||!is.null(theta)||!is.null(effects))
{
- warning(paste("some information are multiply defined \n results will be based on 'theta', 'algorithm', and 'effects' stored in 'ans' (as 'ans$theta', 'ans$x', 'ans$effects')", sep=""))
+ warning(paste("some information are multiply defined \n",
+ "results will be based on 'theta', 'algorithm', and 'effects'\n",
+ "stored in 'ans' (as 'ans$theta', 'ans$x', 'ans$effects')\n", sep=""))
}
if (sum(ans$effects$include==TRUE &
(ans$effects$type =="endow"|ans$effects$type =="creation")) > 0)
{
stop("sienaRI does not yet work for models that contain endowment or creation effects")
}
- contributions <- getChangeContributions(algorithm = ans$x, data = data, effects = ans$effects)
- RI <- expectedRelativeImportance(conts = contributions, effects = ans$effects, theta =ans$theta)
+ contributions <- getChangeContributions(algorithm = ans$x, data = data,
+ effects = ans$effects)
+ RI <- expectedRelativeImportance(conts = contributions,
+ effects = ans$effects, theta =ans$theta)
}else{
if (!inherits(algorithm, "sienaAlgorithm"))
{
@@ -43,7 +47,8 @@
{
stop(paste("effects is not a legitimate Siena effects object", sep=""))
}
- if(sum(effects$include==TRUE & (effects$type =="endow"|effects$type =="creation")) > 0)
+ if(sum(effects$include==TRUE &
+ (effects$type =="endow"|effects$type =="creation")) > 0)
{
stop("sienaRI does not yet work for models containinf endowment or creation effects")
}
@@ -58,18 +63,23 @@
{
stop("theta is not a legitimate parameter vector \n number of parameters has to match number of effects")
}
- warning("length of theta does not match the number of objective function effects\n theta is treated as if containing rate parameters")
+ warning(paste("length of theta does not match the number of objective function effects\n",
+ "theta is treated as if containing rate parameters"))
paras <- theta
## all necessary information available
## call getChangeContributions
- contributions <- getChangeContributions(algorithm = algo, data = data, effects = effs)
- RI <- expectedRelativeImportance(conts = contributions, effects = effs, theta = paras)
+ contributions <- getChangeContributions(algorithm = algo,
+ data = data, effects = effs)
+ RI <- expectedRelativeImportance(conts = contributions,
+ effects = effs, theta = paras)
}else{
paras <- theta
## all necessary information available
## call getChangeContributions
- contributions <- getChangeContributions(algorithm = algo, data = data, effects = effs)
- RI <- expectedRelativeImportance(conts = contributions, effects = effs, theta = paras)
+ contributions <- getChangeContributions(algorithm = algo,
+ data = data, effects = effs)
+ RI <- expectedRelativeImportance(conts = contributions,
+ effects = effs, theta = paras)
}
}
RI
@@ -137,7 +147,8 @@
ans
}
-expectedRelativeImportance <- function(conts, effects, theta, effectNames = NULL)
+expectedRelativeImportance <- function(conts, effects, theta,
+ effectNames = NULL)
{
waves <- length(conts[[1]])
effects <- effects[effects$include == TRUE,]
@@ -194,20 +205,26 @@
currentDepEffectContributions <- conts[[1]][[w]][currentDepEffs]
currentDepEffectContributions <-
sapply(lapply(currentDepEffectContributions, unlist),
- matrix, nrow=actors, ncol=choices, byrow=TRUE, simplify="array")
+ matrix, nrow=actors, ncol=choices, byrow=TRUE,
+ simplify="array")
distributions <-
apply(apply(currentDepEffectContributions, c(2,1), as.matrix),
3, calculateDistributions, theta[which(currentDepEffs)])
distributions <-
lapply(apply(distributions, 2, list),
- function(x){matrix(x[[1]], nrow=effNumber+1, ncol=choices, byrow=F)})
+ function(x){matrix(x[[1]], nrow=effNumber+1,
+ ncol=choices, byrow=F)})
- entropy_vector <- unlist(lapply(distributions,function(x){entropy(x[1,])}))
- ## If one wishes another measure than the L^1-difference between distributions,
- ## here is the right place to call some new function instead of "L1D".
- RIs_list <- lapply(distributions,function(x){L1D(x[1,], x[2:dim(x)[1],])})
- RIs_matrix <-(matrix(unlist(RIs_list),nrow=effNumber, ncol=actors, byrow=F))
+ entropy_vector <- unlist(lapply(distributions,
+ function(x){entropy(x[1,])}))
+ ## If one wishes another measure than the
+ ## L^1-difference between distributions, here is
+ ## the right place to call some new function instead of "L1D".
+ RIs_list <- lapply(distributions,function(x){L1D(x[1,],
+ x[2:dim(x)[1],])})
+ RIs_matrix <-(matrix(unlist(RIs_list),nrow=effNumber,
+ ncol=actors, byrow=F))
# RIs <- RIs_matrix
entropies <- entropy_vector
@@ -250,7 +267,9 @@
}
if(depNumber>1)
{
- warning("more than one dependent variable\n return value is therefore not of class 'sienaRI'\n but a list of objects of class 'sienaRI'")
+ warning(paste("more than one dependent variable\n",
+ "return value is therefore not of class 'sienaRI'\n",
+ "but a list of objects of class 'sienaRI'\n"))
}
RI
}
@@ -262,13 +281,15 @@
effectContributions[effectContributions=="NaN"]<-0
distributions <- array(dim = c(effects+1,choices))
distributions[1,] <-
- exp(colSums(theta*effectContributions))/sum(exp(colSums(theta*effectContributions)))
+ exp(colSums(theta*effectContributions))/
+ sum(exp(colSums(theta*effectContributions)))
for(eff in 1:effects)
{
t <- theta
t[eff] <- 0
distributions[eff+1,] <-
- exp(colSums(t*effectContributions))/sum(exp(colSums(t*effectContributions)))
+ exp(colSums(t*effectContributions))/
+ sum(exp(colSums(t*effectContributions)))
}
distributions
}
@@ -284,16 +305,19 @@
{
if(is.vector(distributions))
{
- kld <- (referenz %*% (log(referenz)-log(distributions)))/log(length(referenz))
+ kld <- (referenz %*%
+ (log(referenz)-log(distributions)))/log(length(referenz))
}
else
{
- kld <- colSums(referenz *(log(referenz)-t(log(distributions))))/log(length(referenz))
+ kld <- colSums(referenz *
+ (log(referenz)-t(log(distributions))))/log(length(referenz))
}
kld
}
-## calculates the L^1-differenz between distribution "reference" (which is a vector of length n)
+## calculates the L^1-differenz between distribution "reference"
+## (which is a vector of length n)
## and each row of distributions (which is a matrix with n columns)
L1D <- function(referenz = NULL, distributions = NULL)
{
@@ -326,7 +350,8 @@
effs <- length(x$effectNames)
colNames = paste("wave ", 1:waves, sep="")
line1 <- format("", width =63)
- line2 <- paste(format(1:effs,width=3), '. ', format(x$effectNames, width = 56),sep="")
+ line2 <- paste(format(1:effs,width=3), '. ',
+ format(x$effectNames, width = 56),sep="")
line3 <- line2
line4 <- format(" Entropy", width = 61)
for(w in 1:length(colNames))
@@ -372,8 +397,8 @@
##@plot.sienaRI Methods
-plot.sienaRI <- function(x, col = NULL, addPieChart = FALSE,
- radius = NULL, width = NULL, height = NULL, legend = TRUE,
+plot.sienaRI <- function(x, actors = NULL, col = NULL, addPieChart = FALSE,
+ radius = 1, width = NULL, height = NULL, legend = TRUE,
legendColumns = NULL, legendHeight = NULL, cex.legend = NULL,
cex.names = NULL, ...)
{
@@ -382,7 +407,21 @@
stop("not a legitimate Siena relative importance of effects object")
}
waves <- length(x$expectedRI)
- actors <- dim(x$RIActors[[1]])[2]
+ if (is.null(actors))
+ {
+ nactors <- dim(x$RIActors[[1]])[2]
+ actors <- (1:nactors)
+ }
+ else
+ {
+ if ((!inherits(actors,"integer")) ||
+ (min(actors) < 1) || (max(actors) > dim(x$RIActors[[1]])[2]))
+ {
+ stop(paste("parameter <actors> must be a set of integers from 1 to",
+ dim(x$RIActors[[1]])[2]))
+ }
+ nactors <- length(actors)
+ }
if(legend)
{
if(!is.null(legendColumns))
@@ -397,7 +436,7 @@
}
if(is.null(legendColumns))
{
- legendColumns <-floor((actors+2)/11)
+ legendColumns <-floor((nactors+2)/11)
}
if(!is.null(legendHeight))
{
@@ -411,7 +450,8 @@
}
if(is.null(legendHeight))
{
- legendHeight <- max(0.8,ceiling(length(x$effectNames)/legendColumns)*0.2)
+ legendHeight <-
+ max(0.8,ceiling(length(x$effectNames)/legendColumns)*0.2)
}
}
if(!is.null(height))
@@ -426,12 +466,7 @@
}
if(is.null(height))
{
- if(legend)
- {
- height <- (2*waves+2*legendHeight)*1
- }else{
- height <- (2*waves)*1
- }
+ height <- 1
}
if(!is.null(width))
@@ -448,9 +483,9 @@
{
if(addPieChart)
{
- width = (actors/3+4)
+ width = (nactors/3+4)
}else{
- width = (actors/3+3)
+ width = (nactors/3+3)
}
}
@@ -496,7 +531,7 @@
}
if(is.null(radius))
{
- rad <- 4
+ rad <- 1
}
if(!is.null(col))
@@ -536,45 +571,52 @@
{
if(legend)
{
- layoutMatrix <- matrix(c(1:(2*waves+1),(2*waves+1)), byrow= TRUE, ncol=2, nrow=(waves+1))
- layout(layoutMatrix,widths=c((actors/3),2),heights=c(rep(1,waves),legendHeight))
+ layoutMatrix <- matrix(c(1:(2*waves+1),(2*waves+1)), byrow= TRUE,
+ ncol=2, nrow=(waves+1))
+ layout(layoutMatrix,widths= c((nactors/6)+10,3.5+2.5*(rad^2)),
+ heights=c(rep(height,waves),legendHeight))
}else{
- layoutMatrix <- matrix(c(1:(2*waves)), byrow= TRUE, ncol=2, nrow=waves)
- layout(layoutMatrix,widths=c((actors/3),2),heights=rep(1,waves))
+ layoutMatrix <- matrix(c(1:(2*waves)), byrow= TRUE,
+ ncol=2, nrow=waves)
+ layout(layoutMatrix,widths = c((nactors/6)+10,7+2.5*(rad^2)),
+ heights=rep(height,waves))
}
-# par( oma = c( 0, 0, 2, 0 ),
-# mar = par()$mar+c(4.1, 4.1, 1.1, 0.1), xpd=T , cex = 0.75, no.readonly = TRUE )
}else{
if(legend)
{
- layoutMatrix <- matrix(c(1:(waves+1)), byrow= TRUE, ncol=1, nrow=(waves+1))
- layout(layoutMatrix,widths=c((actors/3)),heights=c(rep(1,waves),legendHeight))
+ layoutMatrix <- matrix(c(1:(waves+1)), byrow= TRUE,
+ ncol=1, nrow=(waves+1))
+ layout(layoutMatrix)
}else{
layoutMatrix <- matrix(c(1:waves), byrow= TRUE, ncol=1, nrow=waves)
- layout(layoutMatrix,widths=c((actors/3)),heights=rep(1,waves))
+ layout(layoutMatrix, heights=2*rep(height,waves))
+ # no widths, because these are only relative numbers,
+ # so requiring constant widths is redundant
}
-# par( oma = c( 0, 0, 2, 0 ),mar = par()$mar+c(4.1,4.1,1.1,3), xpd=T ,
-# cex = 0.75, no.readonly = TRUE )
+ par( oma = c( 1, 1, 2, 1 ), xpd=T , cex = 0.75, no.readonly = TRUE )
}
+par(mar = c(3,3,1,1))
for(w in 1:waves)
{
- barplot(cbind(x$RIActors[[w]], x$expectedRI[[w]]),
- space=c(rep(0.1,actors),1.5),width=c(rep(1,actors),1),
+ barplot(cbind(x$RIActors[[w]][,actors], x$expectedRI[[w]]),
+ space=c(rep(0.1,nactors),1.5),width=c(rep(1,nactors),1),
beside =FALSE, yaxt = "n", xlab="Actor", cex.names = cex.names,
ylab=paste("wave ", w, sep=""),border=bordergrey,
- col = cl, names.arg=c(1:actors,"exp. rel. imp."))
+ col = cl, names.arg=c(actors,"exp. rel. imp."))
axis(2, at=c(0,0.25,0.5,0.75,1),labels=c("0","","0.5","","1"))
axis(4, at=c(0,0.25,0.5,0.75,1),labels=c("0","","0.5","","1"))
if(addPieChart)
{
- pie(x$expectedRI[[w]], col = cl, labels=NA, border = bordergrey, radius = rad)
+ pie(x$expectedRI[[w]], col = cl, labels=NA, border = bordergrey,
+ radius = rad)
mtext("exp. rel. imp.",side = 1, line = 1, cex=cex.names*0.75)
}
}
if(legend)
{
plot(c(0,1), c(0,1), col=rgb(0,0,0,0),axes=FALSE, ylab = "", xlab = "")
- legend(0, 1, x$effectNames, fill=cl, ncol = legendColumns, bty = "n", cex=cex.legend)
+ legend(0, 1, x$effectNames, fill=cl, ncol = legendColumns,
+ bty = "n", cex=cex.legend)
}
invisible(cl)
}
Modified: pkg/RSiena/R/sienaeffects.r
===================================================================
--- pkg/RSiena/R/sienaeffects.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/sienaeffects.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -57,6 +57,7 @@
cat(paste("interaction2 = <",interaction2,">, ", sep=""))
cat(paste("and type = <",type,">, \n", sep=""))
cat(paste("for dependent variable",name,".\n"))
+ cat("See effectsDocumentation() for this effects object.\n")
}
else
{
Modified: pkg/RSiena/R/sienatable.r
===================================================================
--- pkg/RSiena/R/sienatable.r 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/R/sienatable.r 2015-07-18 14:54:37 UTC (rev 288)
@@ -124,14 +124,24 @@
{
if (tcsplit[1] == "0")
{
+ if (type=='tex')
+ {
tcsplit[1] <- "--0"
}
else
{
+ tcsplit[1] <- "-0"
+ }
+ }
+ else
+ {
+ if (type=='tex')
+ {
tcsplit[1] <- paste(c("-",tcsplit[1]),sep="",collapse="")
}
}
}
+ }
else
{
tcsplit <- c("N","A.")
@@ -144,7 +154,7 @@
tcsplit
}
- ## mydf creates a data.frame; these will be binded together to form the table
+ ## mydf creates a data.frame; these will be bound together to form the table
mydf <- function(pp)
{
@@ -268,8 +278,11 @@
ruleTable <- tableSection("")
footnote <- c(paste(" <TR> <TD colspan=9 align=left>
all convergence t ratios < ",
- max.t,".</TD> </TR> <TR> </TR>",sep="",collapse=""),
- "</TABLE>")
+ max.t,".</TD> </TR> <TR> </TR>",
+ " <TR> <TD colspan=9 align=left>
+ Overall maximum convergence ratio ",
+ maxlincomb.t,".</TD> </TR> <TR> </TR>",
+ sep="",collapse=""),"</TABLE>")
if (sig == TRUE)
{
footnote <- c("<TR> <TD colspan=4 align=left> † p < 0.1;
Modified: pkg/RSiena/inst/doc/RSiena.bib
===================================================================
--- pkg/RSiena/inst/doc/RSiena.bib 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/inst/doc/RSiena.bib 2015-07-18 14:54:37 UTC (rev 288)
@@ -4528,7 +4528,8 @@
booktitle = {Simulating Social Phenomena},
pages = {493--512},
year=1997,
- publisher = {Berlin: Springer},
+ publisher = {Springer},
+ address = {Berlin},
editor = {R. Conte and R. Hegselmann and P. Terna}}
Modified: pkg/RSiena/inst/doc/RSiena_Manual.pdf
===================================================================
--- pkg/RSiena/inst/doc/RSiena_Manual.pdf 2015-06-02 14:39:37 UTC (rev 287)
+++ pkg/RSiena/inst/doc/RSiena_Manual.pdf 2015-07-18 14:54:37 UTC (rev 288)
@@ -56,24 +56,24 @@
endstream
endobj
535 0 obj <<
-/Length 1322
+/Length 1325
/Filter /FlateDecode
>>
stream
-xÚWKÛ6¾ûW¨7y&bÄ(ª=mMg6M³nMzàÊ\/Yr$yú×kí:I¦³3&EààÈÍM'/ùWÆ'«Åã¼Lb¥)y²ºID®Y®x¢uÎT²Z'ïÒKÛ.
N÷¶Yf2éM×/ÿZýæTsÍ4,å¤õöÊ»Ö Ê®TZ `¦+¦E1&9âûñÌÃ9Ç2}ëw; $3¬@
-"¢Z-H»-É^°'´¯Zÿ÷ÚõCÐy]¹ÞÃû\È¥ªò´{seÉÂnÁ°¶t`ÁÊÏ/ÚuTµ©ýñYêa4UÚ-yJGg<gùY
7KаûÆ·À¾é]ííºû/JUEAQâð¡ é¢ ¿·þ~ÄÉ,u74þú²³þq)Y¤ÏÜÎöãÖµ(8
-éÕhGÐföxêëá'Úz½¸h׬Iãi×4nãW\TLIð
-ð.Òãàâ$çª<àÜóÕÃ|MxY0
-fDÉ®¤Þ.>.dؤ߰0IÇ
Ç/¶<yÖ-~¿û¶'Ñl²dfW¬ÒB®@D$.Y1¹sq=½Ç³àÁ81q-C 2.Þ1ÍW¯¿¾ a éÌùTïó"?ÒÌ(¯
-D¹+¿Ý7ª®
¸*¾jïÜ0úÍq©z\
-ö´ÿ|»ó½¯CÂçkXò %Hìm\´¶9~xS ÐJàä¤á:ÎÒgÝmwûÑÅcw}ï
¬(%ò¹LV6½ÅJ5:oíH³Úö½whÔi·§}G
-+°no'·QåÖ·X¹&]¹!V£xnÕÝ
H4ûÉN¬¨@A6Á|îB41ý8A"µu
-õæÛ
-}ÎÃ
õ¡µ[_Ó*°ªë³¼nÑÊà®ioòÂ5ô
-¨Y^AK¿J%ý&y°ööå"y;í~GÒ=÷6¡s~ÏVúè{¡â¾!¤Ö7»£»¬TêBä¤a÷ýÇíïô¿<;SnvýÁ@$§°[ý¿°ynÏáKRËV·>îcì¨@`ak7é²ó=JÂÕÍóêÜ]?k%üØJ¦ Q
aFðyBë*£÷×Ð[ðâ*ÝÙ?,Èíqr*
-7 8LæýÃè¶glÉ<'&ðqk¸äÔ´ÏÈÜ«Fì{ÛÆðºã&½ýp©C_é¶j½Û5¶v±Gæi=ù®éèNo]³ÃY oÈÖPì¡Oà2òkùÎnôѱ}[c~ÀçB=Ô@Ä¡£³¦tXßF³¡. ~êý8ºdíïúGño¸6æy&oJ.Ë9ï`ã<ïb
>fîËmɱ
-K¡ße)·Ú5nèôKîEØýyïÀe.} ÞuÖ}oçìkJz¿A·fl
-è¶fÂÌÝzÛ#U-"ÞbnÓĽ³« gJ±hå½±a¼éÝÇ}$fs µý.¾k¡Äs8nw-ÍTê[Z±ñßÁ48j)ZFb=(UÀGø¨0½Ï¸Ò»ÖQøÖtøùlêë¤,_H7ÇSáU+·X4ïô*¯Â0$°5±JF¨óë¯ÿAbF
+xÚWKsÛ6¾ëW°7j&DA°=9Ï&3NÓXí¡I0Ëh(R!)§>õ¯wª¢Çg»ûí{çÉ&É×üõÙjñô/¡XiJ¬®k+h3¬ÖÉÇôܶK¡Ó½mÌEzÕõË?WoAÒKr®£¤>\x×ZbTyÂJdÌtÅ´( cóȾ¯ô3\Ëôß5îÌ°hÕjiDÚm÷=c$}Ñú¿Ö®ðëÒÌåþ>åB.U§Ý§+KϺeËÚµëþ jûýBêa5UÚ-yJª3³|2YÂû%HØ}ã[Kƾï]ííºû/JUEAQâð¡X/
+ÓEA¿µþQÀC?âæº+Zù²³þq)Y¤/ÜÎöãÖµÈ83éÅhG¬Í8Ðxêëá'"½ÛC\´kÖ$ñ¼k·qÁ+. u¥ ·*Vĸ¼Ý7ÑnÈyü÷
+îåjÁa&¼,CÙð¤Þ.¾,d Òo8¸ãÁÓW[¼è¿Âß]ì5³#èPéPÖ«´Ð¡ÐKpÅ`L±
+Ï.±·õxÒx G ×)ÔÃÔqEo^¾;£|#f ¹ÌùÔò"?tÑWL@þ#ß
ßîÈS×B\Nß´7nýæpTB3.
I{¢¿Üî|ïëШðùÎ
ùÄögmn?Ü·S¡8²H¥ÏºÛîö£jw}QÑ#XQJ,^,dBÙôÛÔèt¼¶#íjÛ÷Þ!¨)Ón?NtG«<%Wà ÝÞNn£Èo±mMºvXÉ
+4²`ç¨î&D¢ÙO8±y önl'ùÜ
#ib$ûÏ A"µu
+ÍæÛ
+}®ôáÁú¶µ[_Ó)TU×gxÝ"ÊÌ]mòÂ5ô
+V
dyó4þ*ôäÞÙ×äcPw<úEh*TÜ#1¡s~+}ò=PqKë`wrrp7JP9iØ]ÿüþ§ÍÎ+ ]?6hɱÙE4[ý¿fóܲnH
+U¶ºöQ¹±£
+µI7=NÏ( ÷6Ï«SýlVòÃ(FsBÁç ;êÞ_ÂlÁÛ«tgk<ü¼, ·´ËÐiH$Ãa3xp;n{rÀLÀ[b2þ¾Ý)©&:#¸7#8÷·-<àuÇMzæص¦>s
+¸Û.õn×ØÚÅK¦õä»&=Ñ^»f»<ߣÎí¾Oà2ò¡|Àd7úàØÕ¾q?à[¡j(Ä¡#]S:¬o£³¡,1~íý8ºxíïú'ñï¸6æy&oJ.ËyÝátÝÅ
+}ÈÜ·/Úb>¾Â¼d)Ú%nIû¹
+÷"PÞûl<ç>ÞµuѬú>Üγ/)éýÝq4 Û 3wÿùu¥jÑ")á!æ6MÔÄè¥XÝ<M+ïô¨MëUï¾ìcaíwñQí¦I¼0¹ki§RßÒ:|rÛਥhý TudÎ<Âé|Â޵·&姳]HVªZ°\~#Ý
+3§<ëV3±ô*¯Â¿/$p4Á(>Øç×<^ÿËEÐ
endstream
endobj
525 0 obj <<
@@ -207,91 +207,91 @@
/Filter /FlateDecode
>>
stream
-xÚí[MsH½ûWp[Tµ°ÌÃäd·ÊIU¬=il³A äÄÿ~{ÄYfYÞKd[F¯_w¿~3 k'pÎNóúj~òÇJD}BCì̯HøA9< >"¡3_:Ý×y6#Ȥ~)gÏÿ: ü(¤NàÃÅ s
-¸gÿoïÏÔ#|âPÝ?p<}Î"}k4ófîÌd§3DÄM²«¼XÅUdVë|ôH at Qè] |CäÆ°YïË^ÁùÌCpdɪ^gî¹þ¦EÞ_ ©ÜèZ ÖRÇÓ+2(ø
-0vÏÛ$»EâòJÞp³rêYöÄ`9þÌcAðS_¨¿â±c/=@
-¥û~Tõl¨0
-ÂbKتÒÂU\Tr©~¡îפºQOávØõXèÛ\¾}ÙYdïáXp?@örñÂyráåpC¹ùT|£n_'M½üJ¿^VùÌÃþ¹ËJ_@Ý*/¼wE5ÞÒß>p¡¯_ÊtÀT¢C¡ÓeÄ^q ¬
-±ÑEºóæîÝPá*{kð~.tU²Â÷úñü ±æ;aÍáºIH
-è¢`?xl¸Edÿ«øw
-èí
n\$ñçTcLÜ8[ê÷ä§ ¹¨ïðñ¾iô8¤[&éw*M2Ù%¯º&]ÿ¾.år]«ß7=Ðvç×ÐEl2\©ÁõÍǦ¨nd¡1Üòj×5¶È5E#Éƺ
-%>Úv÷P#â^[i÷ùT¹ü ÑHðý"áaÕáO½`ÓÏ3häiªÚúé0ôoúñ{}EZ¢Ù÷Uõ Ù¿'z±
-·W¿Æ-fûÄç¼ib"ý¡2|1O/,жaQjo43 ÜJ°_î3"~DØOó!´°ÑpGûZƸojâ}ú-^S9ÖÔÇß5ËE¬+£0`HÕùºÈvè
->½ÞSÈyúÅ}9ÇL.+¹6ÎàJ`©Eþ¥7®ìd\nÒª|_2®\lªñFFýd4pG´ò¯¯\8;°<4,ÌúZ;bKmêÞÈtñ¯g\«ú@s¯Âª÷¦Wíë6t|©Ænè¹S5ÕRåoÚ¢ZŵGµÓcåØÅä±6]Ëõ Úõ°Y ¢î
-`5ZáÔõëÔ$úÀ¥ôNõÃϳõ¦Ò_Âè×}
.Ê©MbLãù\Ý _¢æNÛíl¯Æô¡ç
62D·Í":C[Ì[Y)×ä«U^|ÑekH ÃìÙY¨£N2èÒU3WngåÖدÃð¹nð²Î£¯*JRwàª"ùÖ·r×ÒH¤¬×ãU8VÖlyUWüc
Èmë{XKPøÌë,Ö9ÏÉm²ÜÄÆYä ÉXì ã,ð£çX¹
-pfÜ;Eõxiýïpvà$}§?Ú[é5Êù¥÷q̲~itq«BÆÕÊìôôíi£A$Ä7åÜlóñBµÊît;, B;µìnà©Lâß-]ä?Û*³`¯í¶X12!y}ñFÁÊ<Ë«<³¤\J3eKÍÇîN]?Xæ>ÛÎÀ4iq¶~õ`£h[˵ÖÐäSè¢×j 4¤. ý'á1ú0ûßÁ¾Q'¤©ÇU±YTáée7TUÙxÍêt3¤4øMT+HS±/²l\ű¡&âüÿ:°'aoëôë|¥+F^&ÛZaN dײöÔ©ûOì.úg)Rka®*N1vÐÅNr*p?bQ×¢dÚ¢¼hÌPs0l]ÿÞ-Îäpâ#
lëWª04K¶¶ o²jN
-Ïmð£<4¸;iÂéD>kÙ§©\ewæHÍ}G8cÇlâMRúXË
¼¼G*{ÎÖÈD¸ëq
-ÔO=ªmü)ÆP8QWg±óyCARSìÂZ£âvp¬4<*W G¶õwlÛ/ªØ9z~¨Oª¦FãöOMvÏ:¨iµAm=ûö¦Ê]¯EùB}ÑgÒkzþPÖrÿáNÒGÚg¯m4äØÑúP}è¹f
-7L¡-¦DãL¡øbw¦ôfVÓBЪê&DZ±UùBöÿ8´?y:?ùq/·"
+xÚí[MsH½ûWp[Tµ°óÉ@nIÖqi«TÅÎ)ÙÆ*@Nüï·A|9±e6å½D¶
`ôúu÷ë7ä\;È9;AæõÕåÉou0ó)syåPèÄ|Lçré|t_çÙb·ú¥ý}ù× òÃ9ÈO(w
+¸gÿoïÏÔ°ùQ@uäxøúÖxæE»g2EÎ<R7É®òbW <¶~YóÑ£áÀ
+º øØ8'f¾¯Àzó1,á<Éu½Áݹþ¦EÞ_ Xºá¶ ¬#ÆO¯È àâ%7Iv
+ Ô-ä,$¼áf3ì.Ô²ì/ÃrüÇú©/,~ÅcÇ^zà(ä6@îûQÕ³¡"*lK,a«J
+[VqQÉ¥ú
¹_j¥7#í°ë°éÛ\ÌOß¾ì,²÷p a{yôÂyråHC¹ËT|cn_'M½üJ¿^TùÌ#!þYÅe¥/`îËEÞ»" oéo8××/e:`jàC¡Óe¢½(ã@X#<ĶF3æ^Îpo7PÙ[÷t) «¼÷Ôï൸֮;d.FûÁ²ÁYbý3®âß5 73¸qÄS1uãl©ß¦rQ
+0¢ßáã-}5ÒøqH·8L
+Òï¶Ud²K^ t5Mºþ}S2ËåºV¿oFìP@»G8¸.æáÊ®ofÐ<¶Eµ
Æp[Ê«mjpÞÔØb×$ë*úx×UÞ_@{m¥Ýhè3Puæò' F#ì ¨FêF8Ï §©jëC¤ÀDÓßë+ÚÐF j¹}_UhE ;É÷$@/VÁîêã×x£ÅlßPcøBô#MM¤?ãAæÈñé
:Ð.,Jíf&
[E¼Ã;â©RþSã|-l4ÜbßpPËôãÍL¼O¿ÅëM*ÇÒù$÷MërQ$Ê(Rue¾nfºúbCO/
GC´§Nöó#}9ÇM.*¹1ÎàJa©Eþ¥7®ìd\nÓª|_q®\l«ñÆú?ÈhàNÔÊ¿¾rüÀòhÒ°`ï'N`íµ»éFã_ϸVõæ^LTïM¯ Ú×mèøRÝÐs§(n<ª¥,Êß´Eµkj§Ær&KÈcmºëAµëa³44AÈÜ5$)%jµÂ©ëשIôKé?éϳͶÒ_Âè×}.*MbBãÐ(ôEts5~;uBTjn·³½ÓGØÈxÝf4ètk0oe¥\¯*VyñE!>zðgg¡µ}1 I[ÄY¹3öë0|®¼¬óè«æ¸ªH¾õåµ4Ò )«F
ÁµÃÄä§`Å'ÃÊ-¯êJ²Á?VÜ$¹Þ¹µÏ¼n
Àú2ólÜ$Ëml¬E®ÚÕÈ.>Î?Êù`+WÎ{«¨/ÿÝ ÎïÁÓ£ï4ð½þX£Ü_z§È,ëFçP·*d\ÍNOQá6úD"R±F±ÌÍ6O/T«ình@¸Uq°É*´ÓXËîÊ$ñÝÒEÿ³¢)1CC¸¬¸xm·Å$è3è¿0
+V¶çY^å%åR±([ðh>vwêúÁ¢ø0÷Ùî
+,EgëW6vµ¹Üh
+½H>!̸VH !uIè§<
+ÑÙüö:¡M=¾¨í¢ÚOo-»¡Ú¬ÌîÄkV§Û!¥EDø8HÑDµ6û<)ËÆUjB!þ¯Ó
[TRUNCATED]
To get the complete diff run:
svnlook diff /svnroot/rsiena -r 288
More information about the Rsiena-commits
mailing list