# ICFTs: Function for calculating interaction contribution frequency... In DoE.base: Full Factorials, Orthogonal Arrays and Base Utilities for DoE Packages

## Description

Function ICFTs calculates interaction contribution frequency tables, function ICFT does the same for an entire (usually small) design with more detail.

## Usage

 ```1 2 3``` ```ICFTs(design, digits = 3, resk.only = TRUE, kmin = NULL, kmax = ncol(design), detail = FALSE, with.blocks = FALSE, conc = TRUE) ICFT(design, digits = 3, with.blocks = FALSE, conc = TRUE, recode=TRUE) ```

## Arguments

 `design` a factorial design. This can either be a matrix or a data frame in which all columns are experimental factors, or a special data frame of class `design`, which may also include response data. In any case, the design should be a factorial design; the functions are not useful for quantitative designs (like e.g. latin hypercube samples). `digits` integer; number of digits to round to `resk.only` logical; if `all` is `TRUE`, should only full resolution projections be considered? Choosing `FALSE` may cause very long run times. `kmin` integer; purpose is to continue an earlier run with additional larger projections `kmax` integer; limit on projection sizes to consider `detail` logical indicating whether calculation details are to be returned (see Groemping 2016). These will not be needed for normal use of the outcome, but may be interesting for special situations. `with.blocks` a logical, indicating whether or not an existing block factor is to be included into word counting. This option is ignored if `design` is not of class `design`. Per default, an existing block factor is ignored. For designs without a block factor, the option does not have an effect. If the design is blocked, and `with.blocks` is `TRUE`, the block factor is treated like any other factor. `conc` logical indicating whether ambiguities should be resolved concentrating the contribution on as few individual values as possible (default) or distributing it as evenly as possible (if `FALSE`) `recode` logical indicating whether or not to recode each column into normalized orthogonal coding with function `contr.XuWu`; if set to FALSE, it is the users responsibility to provide a design in a normalized orthogonal coding of choice

## Details

The functions work for factors only and are not intended for quantitative variables.

Function `ICFTs` decomposes the projected \$a_k\$ values (most often: projected \$a_3\$ values) into single degree of freedom contributions from the respective \$k\$ factor interaction.

Function `ICFT` decomposes the all-factor interaction of the design given to it; it is intended for deep-dive investigations.

The ICFT itself is independent of the choice of normalized orthogonal coding, as are the singular values and the matrix of left singular vectors; in case of several identical singular values, the left singular vectors are not uniquely determined but are subject to arbitrary rotation. The right singular vectors depend on the choice of normalized orthogonal coding. They represent the directions of coefficient vectors for which the interaction contributions indicate the bias potential for the intercept (see Groemping 2016 for the maths behind this).

## Value

Function `ICFTs` returns a list of lists with a component for each projection size considered. Each such component contains the following entries:

 `ICFT` interaction contribution frequency table for the projection size `ICs ` individual interaction contributions (if requested by option `detail`) `sv2s ` squared singular values (if requested by option `detail`) `mean.u2s ` squared column means of left-singular vectors (if requested by option `detail`)

Function `ICFT` returns a list with the following components:

 `ICFT` interaction contribution frequency table for the projection size `ICs ` Average R^2 frequency table for the projection size `sv2s ` squared singular values of the model matrix `mean.u2s ` squared column means of left-singular vectors in the rotated version (concentrated or even) `mm` model matrix of the interaction `u` (left singular vectors corresponding to the rotated version of ICFT (concentrated or even); these do not depend on the coding underlying the model matrix `v` (right singular vectors corresponding to the rotated version of ICFT (concentrated or even); these depend on the coding underlying the model matrix `c.worst` (`v%*%c.worst` is the worst case parameter vector for the model matrix `mm` in terms of bias of the average response for estimation of the intercept caused by the interaction under consideration

## Warning

The functions have been checked on the types of designs for which they are intended (especially orthogonal arrays produced with oa.design). They may produce meaningless results for some other types of designs.

Ulrike Groemping

## References

Groemping, U. (2017). An Interaction-Based Decomposition of Generalized Word Counts Suited to Assessing Combinatorial Equivalence of Factorial Designs. Reports in Mathematics, Physics and Chemistry, Report 1/2017. http://www1.beuth-hochschule.de/FB_II/reports/Report-2017-001.pdf, Department II, Beuth University of Applied Sciences, Berlin.

Groemping, U. (2018). Coding Invariance in Factorial Linear Models and a New Tool for Assessing Combinatorial Equivalence of Factorial Designs. Journal of Statistical Planning and Inference 193, 1-14. https://doi.org/10.1016/j.jspi.2017.07.004.

See also `GWLP` and `generalized.word.length`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ``` oa24.bad <- oa.design(L24.2.13.3.1.4.1, columns=c(1,2,14,15)) oa24.good <- oa.design(L24.2.13.3.1.4.1, columns=c(3,10,14,15)) ## resolution is III in both cases, but the bad one has more words of length 3 GWLP(oa24.bad)[4:5] ICFTs(oa24.bad) ICFTs(oa24.bad, conc=FALSE) GWLP(oa24.good)[4:5] ICFTs(oa24.good) ICFTs(oa24.good, conc=FALSE) ICFTs(oa24.good, resk.only=FALSE) ICFT(L18[,c(1,4,6)]) ICFT(L18[,c(1,4,6)], conc=FALSE) ```