| Type: | Package | 
| Title: | Graph Prediction from a Graph Time Series | 
| Version: | 0.1.2 | 
| Maintainer: | Sevvandi Kandanaarachchi <sevvandik@gmail.com> | 
| Description: | Predicting the structure of a graph including new nodes and edges using a time series of graphs. Flux balance analysis, a linear and integer programming technique used in biochemistry is used with time series prediction methods to predict the graph structure at a future time point Kandanaarachchi (2025) <doi:10.48550/arXiv.2507.05806>. | 
| License: | GPL (≥ 3) | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| Imports: | dplyr, fable, fabletools, forecast, future, igraph, lpSolve, Matrix, rlang, stats, tibble, tsibble | 
| Suggests: | feasts, knitr, nnet, rmarkdown, urca | 
| URL: | https://sevvandi.github.io/netseer/ | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2025-09-09 23:20:40 UTC; kan092 | 
| Author: | Sevvandi Kandanaarachchi | 
| Repository: | CRAN | 
| Date/Publication: | 2025-09-10 07:50:32 UTC | 
Generates a bigger graph using exponential growth.
Description
Generates a bigger graph using parameters for node and edge growth. If a sequence of graphs are created, the number of nodes in this sequence would exponentially increase.
Usage
generate_graph_exp(
  gr = NULL,
  del_edge = 0.1,
  new_nodes = 0.1,
  edge_increase = 0.1
)
Arguments
| gr | The input graph to generate the next graph. If set to  | 
| del_edge | The proportion of edges deleted from the input graph. Default
set to  | 
| new_nodes | The proportion of nodes added to the input graph. Default
set to  | 
| edge_increase | The proportion of edges added to the input graph. Default
set to  | 
Value
A graph.
Examples
set.seed(1)
gr <- generate_graph_exp()
gr
Generates a bigger graph by linear growth.
Description
Generates a bigger graph using parameters for node and edge growth. If a sequence of graphs are created, the number of nodes would linearly increase.
Usage
generate_graph_linear(
  gr = NULL,
  del_edge = 1,
  new_nodes = 1,
  edge_increase = 1,
  edges_per_new_node = 3
)
Arguments
| gr | The input graph to generate the next graph. If set to  | 
| del_edge | The number of edges deleted from the input graph. Default
set to  | 
| new_nodes | The number of nodes added to the input graph. Default
set to  | 
| edge_increase | The number of edges added to the input graph. Default
set to  | 
| edges_per_new_node | The number of edges added to the new nodes. Default
set to  | 
Value
A graph.
Examples
set.seed(1)
gr <- generate_graph_linear()
gr
Predicts a graph from a time series of graphs.
Description
This function predicts the graph at a future time step using a time series of graphs.
Usage
predict_graph(
  graphlist,
  formulation = 2,
  conf_level1 = NULL,
  conf_level2 = 90,
  dense_opt = 2,
  weights_opt = 8,
  weights_param = 0.001,
  h = 1
)
Arguments
| graphlist | A list of graphs in igraph format. | 
| formulation | Formulation 2 includes an additional condition constraining total
edges by the predicted value. Formulation 1 does not have that constraint. Formulation 2
gives more realistic graphs due to that constraint. Default is set to  | 
| conf_level1 | A value between 50 and 100 denoting the confidence interval
for the number of predicted nodes in the graph. If set to  | 
| conf_level2 | The upper confidence bound for the degree distribution. Default
set to  | 
| dense_opt | If set to  | 
| weights_opt | Weights option ranging from 1 to 6 used for different edge weight
schemes. Weights option 1 uses uniform weights for all edges. Option 2 uses binary
weights. If the edge existed in a past graph, then weight is set to 1. Else set to
0. All possible new edges are assigned weight 1. Option 3 is a more selective
version. Option 4 uses proportional weights according to the history. Option 5 uses
proportional weights, but as the network is more in the past, it gives less weight.
Option 5 uses linearly decaying proportional weights. Option 6 uses harmonically decaying
weights. That is the network at  | 
| weights_param | The weight given for possible edges from new vertices. Default
set to  | 
| h | The prediction time step. Default is  | 
Value
A list of predicted graphs. If conf_level1 is not NULL, then
3 graphs are returned one with the mean number of predicted nodes and the other 2
with the number of nodes equal to the lower and upper bound values of prediction.
If If conf_level1 is NULL, only the mean predicted graph is returned.
Examples
set.seed(2024)
edge_increase_val <- new_nodes_val <- del_edge_val <- 0.1
graphlist <- list()
graphlist[[1]] <- gr <-  igraph::sample_pa(5, directed = FALSE)
for(i in 2:15){
  gr <-  generate_graph_exp(gr,
                        del_edge = del_edge_val,
                        new_nodes = new_nodes_val,
                        edge_increase = edge_increase_val )
  graphlist[[i]] <- gr
}
grpred <- predict_graph(graphlist[1:15], conf_level2 = 90, weights_opt = 6)
grpred