| Version: | 1.0.1 | 
| Type: | Package | 
| Title: | Multiple Random Dot Product Graphs | 
| Description: | Fits the Multiple Random Dot Product Graph Model and performs a test for whether two networks come from the same distribution. Both methods are proposed in Nielsen, A.M., Witten, D., (2018) "The Multiple Random Dot Product Graph Model", arXiv preprint <doi:10.48550/arXiv.1811.12172> (Submitted to Journal of Computational and Graphical Statistics). | 
| License: | GPL-2 | 
| Encoding: | UTF-8 | 
| LazyData: | true | 
| RoxygenNote: | 6.0.1 | 
| NeedsCompilation: | no | 
| Packaged: | 2018-11-30 16:37:58 UTC; agni | 
| Author: | Agnes Martine Nielsen [aut, cre], Daniela Witten [aut] | 
| Maintainer: | Agnes Martine Nielsen <agni@dtu.dk> | 
| Repository: | CRAN | 
| Date/Publication: | 2018-12-09 13:40:03 UTC | 
Calculates positive semi-definite part of a matrix
Description
aplusfun calculates the positive semidefinite part of a matrix
Usage
aplusfun(Amat)
Arguments
| Amat | A symmetric matrix | 
Value
Returns positive semidefinite part of Amat
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
calculateLRstat calculates the likelihood ratio statistic
Description
calculateLRstat calculates the likelihood ratio statistic
Usage
calculateLRstat(A, null, alt)
Arguments
| A | List of symmetric A matrices | 
| null | Model fitted under the null | 
| alt | Model fitted under the alternative | 
Value
Value of the likelihood ratio statistic
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
calculateobjfun calculates the objective function
Description
calculateobjfun calculates the objective function
Usage
calculateobjfun(Aplus, Lambda, U)
Arguments
| Aplus | List of positive semi definite part of A matrices | 
| Lambda | List of Lambdas | 
| U | U matrix that contains the othogonal vectors | 
Value
Returns the value of the objective function, sum(||Aplus-U Lambda U^T||_F^2)
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
Fitting Multiple Random Dot Product Graphs
Description
multiRDPG is used to fit Multiple Random Dot Product Graphs from a set of adjacency matrices.
Usage
multiRDPG(A, d, maxiter = 100, tol = 1e-06)
Arguments
| A | List of adjacency matrices representing graphs. Each matrix must be symmetric. All matrices of the same size n x n. | 
| d | Dimension of latent space. d<= n. | 
| maxiter | Maximal number of iterations. Default is 100. | 
| tol | Tolerance for update of the objective function. Default is 1e-6. | 
Value
Returns a list of the following:
| U | Matrix of the joint vectors. n x d. | 
| Lambda | List of diagonal matrices. One for each graph. d x d. | 
| Converged | Represent of the algorithm converged. 1 if converged, 0 if not. | 
| iter | Number of iterations | 
| maxiter | Maximal number of iterations.Default is 100. | 
| objfun | Value of the objective function. sum_k ||A^k - U Lambda U^T||_F^2 | 
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
Examples
#simulate data
U <- matrix(0, nrow=20, ncol=3)
U[,1] <- 1/sqrt(20)
U[,2] <- rep(c(1,-1), 10)/sqrt(20)
U[,3] <- rep(c(1,1,-1,-1), 5)/sqrt(20)
L<-list(diag(c(11,6,2)),diag(c(15,4,1)))
A <- list()
for(i in 1:2){
  P <- U%*%L[[i]]%*%t(U)
  A[[i]] <-apply(P,c(1,2),function(x){rbinom(1,1,x)})
  A[[i]][lower.tri(A[[i]])]<-t(A[[i]])[lower.tri(A[[i]])]
}
#fit model
multiRDPG(A,3)
Performs test based on Multiple Random Dot Product Graph
Description
multiRDPG_test calculates the likelihood ratio test for whether a set of graphs
comes from the same disribution.
Usage
multiRDPG_test(A, d, maxiter = 100, tol = 1e-06, B = 1000)
Arguments
| A | List of symmetric A matrices | 
| d | Dimension of the latent space | 
| maxiter | Maximum number of iterations in the fit of multiRDPG. Default is 100. | 
| tol | Tolerance for the step in the objective function in multiRDPG. Default is 1e-6. | 
| B | Number of permutation iterations. Default is 1000. | 
Value
Returns a list of the following elements:
| pvalue | Estimated p-values | 
| Tval | Value of the test statistic | 
| Tstar | Vector of the test statistic for each permutation iteration | 
| nullmodel | Model fit under the null | 
| altmodel | Modelfit under the alternative | 
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
Examples
#simulate data
U <- matrix(0, nrow=20, ncol=3)
U[,1] <- 1/sqrt(20)
U[,2] <- rep(c(1,-1), 10)/sqrt(20)
U[,3] <- rep(c(1,1,-1,-1), 5)/sqrt(20)
L<-list(diag(c(11,6,2)),diag(c(15,4,1)))
A <- list()
for(i in 1:2){
  P <- U%*%L[[i]]%*%t(U)
  A[[i]] <-apply(P,c(1,2),function(x){rbinom(1,1,x)})
  A[[i]][lower.tri(A[[i]])]<-t(A[[i]])[lower.tri(A[[i]])]
}
#perform test
multiRDPG_test(A,3,B=100)
nullestimation calculates the estimation under the null hypothesis
Description
nullestimation calculates the estimation under the null hypothesis
Usage
nullestimation(A, d)
Arguments
| A | List of symmetric A matrices | 
| d | Dimension of the latent space | 
Value
Returns a list of the following
| U | The common latent space vectors. U in R^n x d | 
| Lambda | List of Lambdas. Each is a positive diagonal matrix of size d x d. | 
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
Examples
#simulate data
U <- matrix(0, nrow=20, ncol=3)
U[,1] <- 1/sqrt(20)
U[,2] <- rep(c(1,-1), 10)/sqrt(20)
U[,3] <- rep(c(1,1,-1,-1), 5)/sqrt(20)
L<-list(diag(c(11,6,2)),diag(c(15,4,1)))
A <- list()
for(i in 1:2){
  P <- U%*%L[[i]]%*%t(U)
  A[[i]] <-apply(P,c(1,2),function(x){rbinom(1,1,x)})
  A[[i]][lower.tri(A[[i]])]<-t(A[[i]])[lower.tri(A[[i]])]
}
#fit model
nullestimation(A,3)
Plots object from multiRDPG
Description
Plots object from multiRDPG
Usage
## S3 method for class 'multiRDPGfit'
plot(x, ...)
Arguments
| x | multiRDPGfit object from function  | 
| ... | further arguments passed to or from other methods | 
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
Plots object from multiRDPG_test
Description
Plots histogram of permutation test statistics and indicates test statistic value with red line.
Usage
## S3 method for class 'multiRDPGtest'
plot(x, ...)
Arguments
| x | multiRDPGtest object from function  | 
| ... | further arguments passed to or from other methods | 
Details
Red line indicates the value of the test statistics with a red line.
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
Print object from multiRDPG
Description
Print object from multiRDPG
Usage
## S3 method for class 'multiRDPGfit'
print(x, ...)
Arguments
| x | multiRDPGfit object from function  | 
| ... | further arguments passed to or from other methods | 
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
Print object from multiRDPG_test
Description
Print object from multiRDPG_test
Usage
## S3 method for class 'multiRDPGtest'
print(x, ...)
Arguments
| x | multiRDPGtest object from function  | 
| ... | further arguments passed to or from other methods | 
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
See Also
swapA swaps the elements of A at random
Description
swapA swaps the elements of A at random
Usage
swapA(A)
Arguments
| A | List of symmetric A matrices | 
Value
Returns list of matrices with elements swapped
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
updateL updates all Lambda
Description
updateL updates all Lambda
Usage
updateL(Aplus, U, d)
Arguments
| Aplus | List of positive definite parts of A | 
| U | Current U matrix | 
| d | Dimension of latent space | 
Value
Returns list of updated Lambdas
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)
updateU calculates the U update
Description
updateU calculates the U update
Usage
updateU(AA, Lambda, Uold)
Arguments
| AA | All Aplus matrices column binded | 
| Lambda | List of Lambdas | 
| Uold | U found in past iteration | 
Value
Returns updated U
Author(s)
Agnes Martine Nielsen (agni@dtu.dk)