Learn R Programming

rem (version 1.1.1)

fourCycleStat: Calculate four cycle statistics

Description

Calculate the endogenous network statistic fourCycle that measures the tendency for events to close four cycles in two-mode event sequences.

Usage

fourCycleStat(data, time, sender, target, halflife, 
    weight = NULL, 
    eventtypevar = NULL, 
    eventtypevalue = 'standard', 
    eventattributevar = NULL, 
    eventattributeAB = NULL, eventattributeAJ = NULL, 
    eventattributeIB = NULL, eventattributeIJ = NULL,
    variablename = 'fourCycle',
    returnData = FALSE,
    showprogressbar = FALSE)

Arguments

data
A data frame containing all the variables.
time
Numeric variable that represents the event sequence. The variable has to be sorted in ascending order.
sender
A string (or factor or numeric) variable that represents the sender of the event.
target
A string (or factor or numeric) variable that represents the target of the event.
halflife
A numeric value that is used in the decay function. The vector of past events is weighted by an exponential decay function using the specified halflife. The halflife parameter determins after how long a period the event weigth should be halved. E.g. if
weight
An optional numeric variable that represents the weigth of each event. If weight = NULL each event is given an event weigth of 1.
eventtypevar
An optional variable that represents the type of the event. Use eventtypevalue to specify how the eventtypevar should be used to filter past events.
eventtypevalue
An optional value (or set of values) used to specify how paste events should be filtered depending on their type. 'standard', 'positive' or 'negative' may be used. Default set to 'standard'. 'stand
eventattributevar
An optinoal variable that represents an attribute of the event. It can be a sender attribute, a target attribute, time or dyad attribute. Use eventattributeAB, eventattributeAJ, eventattributeIB or eventattribu
eventattributeAB
An optional value used to specify how paste events should be filtered depending on their attribute. Each distinct edge that form a four cycle can be filtered. eventattributeAB refers to the current event. eventattributeAJ refers
eventattributeAJ
see eventattributeAB.
eventattributeIB
see eventattributeAB.
eventattributeIJ
see eventattributeAB.
variablename
An optional value (or values) with the name the four cycle statistic variable should be given. To be used if returnData = TRUE.
returnData
TRUE/FALSE. Set to FALSE by default. The new variable(s) are bound directly to the data.frame provided and the data frame is returned in full.
showprogressbar
TRUE/FALSE. To be implemented.

Details

The fourCycleStat()-function calculates an endogenous statistic that measures whether events have a tendency to form four cycles.

The effect is calculated as follows:

$$G_t = G_t(E) = (A, B, w_t),$$

$G_t$ represents the network of past events and includes all events $E$. These events consist each of a sender $a \in A$ and a target $b \in B$ and a weight function $w_t$:

$$w_t(i, j) = \sum_{e:a = i, b = j} | w_e | \cdot e^{-(t-t_e)\cdot\frac{ln(2)}{T_{1/2}}} \cdot \frac{ln(2)}{T_{1/2}},$$

where $w_e$ is the event weight (usually a constant set to 1 for each event), $t$ is the current event time, $t_e$ is the past event time and $T_{1/2}$ is a halflife parameter.

For the four-cylce effect, the past events $G_t$ are filtered to include only events where the current event closes an open four-cycle in the past.

$$fourCycle(G_t , a , b) = \sqrt[3]{\sum_{i \in A \& j \in B} w_t(a, j) \cdot w_t(i, b) \cdot w_t(i, j)}$$

An exponential decay function is used to model the effect of time on the endogenous statistics. The further apart the past event is from the present event, the less weight is given to this event. The halflife parameter in the fourCycleStat()-function determins at which rate the weights of past events should be reduced. Therefore, if the one (or more) of the three events in the four cycle have ocurred further in the past, less weight is given to this four cycle because it becomes less likely that the two senders reacted to each other in the way the four cycle assumes.

The eventtypevar- and eventattributevar-options help filter the past events more specifically. How they are filtered depends on the eventtypevalue- and eventattributevalue-option.

See Also

rem-package

Examples

Run this code
# create some data two-mode network event sequence data with
# a 'sender', 'target' and a 'time'-variable
sender <- c('A', 'B', 'A', 'C', 'A', 'D', 'F', 'G', 'A', 'B',
            'B', 'C', 'D', 'E', 'F', 'B', 'C', 'D', 'E', 'C', 
            'A', 'F', 'E', 'B', 'C', 'E', 'D', 'G', 'A', 'G', 
            'F', 'B', 'C')
target <- c('T1', 'T2', 'T3', 'T2', 'T1', 'T4', 'T6', 'T2', 
            'T4', 'T5', 'T5', 'T5', 'T1', 'T6', 'T7', 'T2', 
            'T3', 'T1', 'T1', 'T4', 'T5', 'T6', 'T8', 'T2',
            'T7', 'T1', 'T6', 'T7', 'T3', 'T4', 'T7', 'T8', 'T2')
time <- c('03.01.15', '04.01.15', '10.02.15', '28.02.15', '01.03.15', 
          '07.03.15', '07.03.15', '12.03.15', '04.04.15', '28.04.15',
          '06.05.15', '11.05.15', '13.05.15', '17.05.15', '22.05.15', 
          '09.08.15', '09.08.15', '14.08.15', '16.08.15', '29.08.15',
          '05.09.15', '25.09.15', '02.10.15', '03.10.15', '11.10.15', 
          '18.10.15', '20.10.15', '28.10.15', '04.11.15', '09.11.15', 
          '10.12.15', '11.12.15', '12.12.15')
type <- sample(c('con', 'pro'), 33, replace = TRUE)
important <- sample(c('important', 'not important'), 33,
                    replace = TRUE)

# combine them into a data.frame
dt <- data.frame(sender, target, time, type, important)

# create event sequence and order the data
dt <- eventSequence(datevar = dt$time, dateformat = '%d.%m.%y', 
                    data = dt, type = 'continuous', 
                    byTime = 'daily', returnData = TRUE,
                    sortData = TRUE)

# calculate closing four-cycle statistic
dt$fourCycle <- fourCycleStat(data = dt, 
                              time = dt$event.seq.cont, 
                              sender = dt$sender, 
                              target = dt$target, 
                              halflife = 20)

# plot closing four-cycles over time:
library("ggplot2")
ggplot(dt, aes ( event.seq.cont, fourCycle) ) +
  geom_point()+ geom_smooth() 

# calculate positive closing four-cycles: general support
dt$fourCycle.pos <- fourCycleStat(data = dt, 
                                  time = dt$event.seq.cont, 
                                  sender = dt$sender, 
                                  target = dt$target, 
                                  halflife = 20, 
                                  eventtypevar = dt$type, 
                                  eventtypevalue = 'positive')

# calculate negative closing four-cycles: general opposition
dt$fourCycle.neg <- fourCycleStat(data = dt, 
                                  time = dt$event.seq.cont, 
                                  sender = dt$sender, 
                                  target = dt$target, 
                                  halflife = 20, 
                                  eventtypevar = dt$type, 
                                  eventtypevalue = 'negative')

Run the code above in your browser using DataLab