| Title: | Variable-Lag Time Series Causality Inference Framework | 
| Version: | 0.1.5 | 
| Description: | A framework to infer causality on a pair of time series of real numbers based on variable-lag Granger causality and transfer entropy. Typically, Granger causality and transfer entropy have an assumption of a fixed and constant time delay between the cause and effect. However, for a non-stationary time series, this assumption is not true. For example, considering two time series of velocity of person A and person B where B follows A. At some time, B stops tying his shoes, then running to catch up A. The fixed-lag assumption is not true in this case. We propose a framework that allows variable-lags between cause and effect in Granger causality and transfer entropy to allow them to deal with variable-lag non-stationary time series. Please see Chainarong Amornbunchornvej, Elena Zheleva, and Tanya Berger-Wolf (2021) <doi:10.1145/3441452> when referring to this package in publications. | 
| License: | GPL-3 | 
| URL: | https://github.com/DarkEyes/VLTimeSeriesCausality | 
| BugReports: | https://github.com/DarkEyes/VLTimeSeriesCausality/issues | 
| Language: | en-US | 
| Encoding: | UTF-8 | 
| Depends: | R (≥ 3.5.0), dtw, tseries, RTransferEntropy | 
| Imports: | ggplot2 (≥ 3.0) | 
| Suggests: | knitr, rmarkdown, markdown | 
| VignetteBuilder: | knitr | 
| RoxygenNote: | 7.3.1 | 
| NeedsCompilation: | no | 
| Packaged: | 2024-05-28 02:59:30 UTC; 006005 | 
| Author: | Chainarong Amornbunchornvej | 
| Maintainer: | Chainarong Amornbunchornvej <grandca@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2024-05-28 04:20:02 UTC | 
GrangerFunc
Description
GrangerFunc is a Granger Causality function. It tests whether X Granger-causes Y.
Usage
GrangerFunc(
  Y,
  X,
  maxLag = 1,
  alpha = 0.05,
  autoLagflag = TRUE,
  gamma = 0.5,
  family = gaussian
)
Arguments
| Y | is a numerical time series of effect | 
| X | is a numerical time series of cause | 
| maxLag | is a maximum possible time delay. The default is 1. | 
| alpha | is a significance level of F-test to determine whether  | 
| autoLagflag | is a flag for enabling the automatic lag inference function. The default is true. If it is set to be true, then maxLag is set automatically using cross-correlation. Otherwise, if it is set to be false, then the function takes the maxLag value to infer Granger causality. | 
| gamma | is a parameter to determine whether  | 
| family | is a parameter of family of function for Generalized Linear Models function (glm). The default is  | 
Value
This function returns of  whether X Granger-causes Y.
| ftest | F-statistic of Granger causality. | 
| p.val | A p-value from F-test. | 
| BIC_H0 | Bayesian Information Criterion (BIC) derived from  | 
| BIC_H1 | Bayesian Information Criterion (BIC) derived from  | 
| XgCsY | The flag is true if  | 
| XgCsY_ftest | The flag is true if  | 
| XgCsY_BIC | The flag is true if  | 
| maxLag | A maximum possible time delay. | 
| H0 | glm object of  | 
| H1 | glm object of  | 
| BICDiffRatio |  Bayesian Information Criterion difference ratio:  | 
Examples
# Generate simulation data
TS <- SimpleSimulationVLtimeseries()
# Run the function
out<-GrangerFunc(Y=TS$Y,X=TS$X)
MultipleSimulationVLtimeseries
Description
MultipleSimulationVLtimeseries is a support function for generating a set of time series TS[,1],...TS[,10].
TS[,1],TS[,2],TS[,3] are causes X time series that are generated independently.
The rest of time series are Y time series that are effects of some causes TS[,1],TS[,2],TS[,3].
TS[,1] causes TS[,4],TS[,7],TS[,8], and TS[,10].
TS[,2] causes TS[,5],TS[,7],TS[,9], and TS[,10].
TS[,3] causes TS[,6],TS[,8],TS[,9], and TS[,10].
Usage
MultipleSimulationVLtimeseries(
  n = 200,
  lag = 5,
  YstFixInx = 110,
  YfnFixInx = 170,
  XpointFixInx = 100,
  arimaFlag = TRUE,
  seedVal = -1
)
Arguments
| n | is length of time series. | 
| lag | is a time lag between  | 
| YstFixInx | is the starting point of variable lag part. | 
| YfnFixInx | is the end point of variable lag part. | 
| XpointFixInx | is a point in X s.t.  | 
| arimaFlag | is ARMA model flag. If it is true, then  | 
| seedVal | is a seed parameter for generating random noise. | 
Value
This function returns a list of time series TS.
Examples
# Generate simulation data
TS <- MultipleSimulationVLtimeseries()
SimpleSimulationVLtimeseries
Description
SimpleSimulationVLtimeseries is a support function for generating time series X,Y where X VL-Granger-causes Y.
Usage
SimpleSimulationVLtimeseries(
  n = 200,
  lag = 5,
  YstFixInx = 110,
  YfnFixInx = 170,
  XpointFixInx = 100,
  arimaFlag = TRUE,
  seedVal = -1,
  expflag = FALSE,
  causalFlag = TRUE
)
Arguments
| n | is length of time series. | 
| lag | is a time lag between  | 
| YstFixInx | is the starting point of variable lag part. | 
| YfnFixInx | is the end point of variable lag part. | 
| XpointFixInx | is a point in X s.t.  | 
| arimaFlag | is ARMA model flag. If it is true, then  | 
| seedVal | is a seed parameter for generating random noise.
If it is not -1, then the rnorm is set the random seed with  | 
| expflag | is the flag to set the relation between  | 
| causalFlag | is a flag. If it is true, then  | 
Value
This function returns a list of time series X,Y where X VL-Granger-causes Y.
Examples
# Generate simulation data
TS <- SimpleSimulationVLtimeseries()
TSNANNearestNeighborPropagation
Description
TSNANNearestNeighborPropagation is a function that fills NA values with nearest real values in the past ( or future if the first position of time series is NA), for time series X.
Usage
TSNANNearestNeighborPropagation(X)
Arguments
| X | is a T-by-D matrix numerical time series | 
Value
This function returns a list of following relation variables below.
| Xout | is a T-by-D matrix numerical time series that all NAN have been filled with nearest real values. | 
Examples
# Load example data
z<-1:20
z[2:5]<-NA
z<-TSNANNearestNeighborPropagation(z)
VLGrangerFunc
Description
VLGrangerFunc is a Variable-lag Granger Causality function. It tests whether X VL-Granger-causes Y.
Usage
VLGrangerFunc(
  Y,
  X,
  alpha = 0.05,
  maxLag,
  gamma = 0.5,
  autoLagflag = TRUE,
  family = gaussian
)
Arguments
| Y | is a numerical time series of effect | 
| X | is a numerical time series of cause | 
| alpha | is a significance level of f-test to determine whether  | 
| maxLag | is a maximum possible time delay. The default is 0.2*length(Y). | 
| gamma | is a parameter to determine whether  | 
| autoLagflag | is a flag for enabling the automatic lag inference function. The default is true. If it is set to be true, then maxLag is set automatically using cross-correlation. Otherwise, if it is set to be false, then the function takes the maxLag value to infer Granger causality. | 
| family | is a parameter of family of function for Generalized Linear Models function (glm). The default is  | 
Value
This function returns of  whether X Granger-causes Y.
| ftest | F-statistic of Granger causality. | 
| p.val | A p-value from F-test. | 
| BIC_H0 | Bayesian Information Criterion (BIC) derived from  | 
| BIC_H1 | Bayesian Information Criterion (BIC) derived from  | 
| XgCsY | The flag is true if  | 
| XgCsY_ftest | The flag is true if  | 
| XgCsY_BIC | The flag is true if  | 
| maxLag | A maximum possible time delay. | 
| H0 | glm object of  | 
| H1 | glm object of  | 
| follOut |  is a list of  variables from function  | 
| BICDiffRatio |  Bayesian Information Criterion difference ratio:  | 
Examples
# Generate simulation data
TS <- SimpleSimulationVLtimeseries()
# Run the function
out<-VLGrangerFunc(Y=TS$Y,X=TS$X)
VLTransferEntropy
Description
VLTransferEntropy is a Variable-lag Transfer Entropy function. It tests whether X VL-Transfer-Entropy-causes Y.
Usage
VLTransferEntropy(
  Y,
  X,
  maxLag,
  nboot = 0,
  lx = 1,
  ly = 1,
  VLflag = TRUE,
  autoLagflag = TRUE,
  alpha = 0.05
)
Arguments
| Y | is a numerical time series of effect | 
| X | is a numerical time series of cause | 
| maxLag | is a maximum possible time delay. The default is 0.2*length(Y). | 
| nboot | is a number of times of bootstrapping for RTransferEntropy::transfer_entropy() function. | 
| lx,ly | are lag parameters of RTransferEntropy::transfer_entropy(). | 
| VLflag | is a flag of Transfer Entropy choice: either  | 
| autoLagflag | is a flag for enabling the automatic lag inference function. The default is true. If it is set to be true, then maxLag is set automatically using cross-correlation. Otherwise, if it is set to be false, then the function takes the maxLag value to infer Granger causality. | 
| alpha | is a significant-level threshold for TE bootstrapping by Dimpfl and Peter (2013). | 
Value
This function returns of  whether X (VL-)Transfer-Entropy-causes Y.
| TEratio |  is a Transfer Entropy ratio. If it is greater than one , then  | 
| res | is an object of output from RTransferEntropy::transfer_entropy() | 
| follOut |  is a list of variables from function  | 
| XgCsY_trns | The flag is true if  | 
| pval | It is a p-value for TE bootstrapping by Dimpfl and Peter (2013). | 
Examples
# Generate simulation data
TS <- SimpleSimulationVLtimeseries()
# Run the function
out<-VLTransferEntropy(Y=TS$Y,X=TS$X)
checkMultipleSimulationVLtimeseries
Description
checkMultipleSimulationVLtimeseries is a support function that can compare two adjacency matrices: groundtruth and inferred matrices. It re
Usage
checkMultipleSimulationVLtimeseries(trueAdjMat, adjMat)
Arguments
| trueAdjMat | a groundtruth matrix. | 
| adjMat | an inferred matrix. | 
Value
This function returns a list of precision prec, recall rec, and F1 score F1 of inferred vs. groundtruth matrices.
Examples
## Generate simulation data
#G<-matrix(FALSE,10,10) # groundtruth
#G[1,c(4,7,8,10)]<-TRUE
#G[2,c(5,7,9,10)]<-TRUE
#G[3,c(6,8,9,10)]<-TRUE
#TS <- MultipleSimulationVLtimeseries()
#out<-multipleVLGrangerFunc(TS)
#checkMultipleSimulationVLtimeseries(trueAdjMat=G,adjMat=out$adjMat)
followingRelation
Description
followingRelation is a function that infers whether Y follows X.
Usage
followingRelation(Y, X, timeLagWindow, lagWindow = 0.2)
Arguments
| Y | is a numerical time series of a follower | 
| X | is a numerical time series of a leader | 
| timeLagWindow | is a maximum possible time delay in the term of time steps. | 
| lagWindow | is a maximum possible time delay in the term of percentage of length(X).
If  | 
Value
This function returns a list of following relation variables below.
| follVal |  is a following-relation value s.t. if  | 
| nX |  is a time series that is rearranged from  | 
| optDelay |  is the optimal time delay inferred by cross-correlation of  | 
| optCor |  is the optimal correlation of  | 
| optIndexVec |  is a time series of optimal warping-path from DTW that is corrected by cross correlation.
It is approximately that  | 
| VLval |  is a percentage of elements in  | 
| ccfout |  is an output object of  | 
Examples
# Generate simulation data
TS <- SimpleSimulationVLtimeseries()
# Run the function
out<-followingRelation(Y=TS$Y,X=TS$X)
multipleVLGrangerFunc
Description
multipleVLGrangerFunc is a function that infers Variable-lag Granger Causality of all pairwises of m time series TS[,1],...TS[,m].
Usage
multipleVLGrangerFunc(
  TS,
  maxLag,
  alpha = 0.05,
  gamma = 0.3,
  autoLagflag = TRUE,
  causalFlag = 0,
  VLflag = TRUE,
  family = gaussian
)
Arguments
| TS | is a numerical time series of effect where  | 
| maxLag | is a maximum possible time delay. The default is 0.2*length(Y). | 
| alpha | is a significance level of F-test to determine whether  | 
| gamma | is a parameter to determine whether  | 
| autoLagflag | is a flag for enabling the automatic lag inference function. The default is true. If it is set to be true, then maxLag is set automatically using cross-correlation. Otherwise, if it is set to be false, then the function takes the maxLag value to infer Granger causality. | 
| causalFlag | is a choice of criterion for inferring causality:
 | 
| VLflag | is a flag of Granger causality choice: either  | 
| family | is a parameter of family of function for Generalized Linear Models function (glm). The default is  | 
Value
This function returns of a list of an adjacency matrix of causality where adjMat[i,j] is true if TS[,i] causes TS[,j].
Examples
## Generate simulation data
#TS <- MultipleSimulationVLtimeseries()
## Run the function
#out<-multipleVLGrangerFunc(TS)
multipleVLTransferEntropy
Description
multipleVLTransferEntropy is a function that infers Variable-lag Transfer Entropy of all pairwises of m time series TS[,1],...TS[,m].
Usage
multipleVLTransferEntropy(
  TS,
  maxLag,
  nboot = 0,
  lx = 1,
  ly = 1,
  VLflag = TRUE,
  autoLagflag = TRUE,
  alpha = 0.05
)
Arguments
| TS | is a numerical time series of effect where  | 
| maxLag | is a maximum possible time delay. The default is 0.2*length(Y). | 
| nboot | is a number of times of bootstrapping for RTransferEntropy::transfer_entropy() function. | 
| lx,ly | are lag parameters of RTransferEntropy::transfer_entropy(). | 
| VLflag | is a flag of Granger causality choice: either  | 
| autoLagflag | is a flag for enabling the automatic lag inference function. The default is true. If it is set to be true, then maxLag is set automatically using cross-correlation. Otherwise, if it is set to be false, then the function takes the maxLag value to infer Granger causality. | 
| alpha | is a significant-level threshold for TE bootstrapping by Dimpfl and Peter (2013). | 
Value
This function returns of a list of an adjacency matrix of causality where adjMat[i,j] is true if TS[,i] causes TS[,j].
Examples
## Generate simulation data
#out1<-SimpleSimulationVLtimeseries()
#TS<-cbind(out1$X,out1$Y)
## Run the function
#out2<-multipleVLTransferEntropy(TS,maxLag=1)
plotTimeSeries
Description
plotTimeSeries is a function for visualizing time series
Usage
plotTimeSeries(X, Y, strTitle = "Time Series Plot", TSnames)
Arguments
| X | is a 1st numerical time series | 
| Y | is a 2nd numerical time series. If it is not supplied, the function plots only  | 
| strTitle | is a string of the plot title | 
| TSnames | is a list of legend of  | 
Value
This function returns an object of ggplot class.
Examples
# Generate simulation data
TS <- SimpleSimulationVLtimeseries()
# Run the function
plotTimeSeries(Y=TS$Y,X=TS$X)