coherence {cna} | R Documentation |

## Calculate the coherence of complex solution formulas

### Description

Calculates the coherence measure of complex solution formulas (csf).

### Usage

```
coherence(x, ...)
## Default S3 method:
coherence(x, ct, type, ..., tt)
```

### Arguments

`x` |
Character vector specifying an asf or csf. |

`ct` |
Data frame or |

`type` |
Character vector specifying the type of |

`...` |
Arguments passed to methods. |

`tt` |
Argument |

### Details

Coherence is a measure for model fit that is custom-built for complex solution formulas (csf). It measures the degree to which the atomic solution formulas (asf) combined in a csf cohere, i.e. are instantiated together in `x`

rather than independently of one another. More concretely, coherence is the ratio of the number of cases satisfying all asf contained in a csf to the number of cases satisfying at least one asf in the csf. For example, if the csf contains the three asf asf1, asf2, asf3, coherence amounts to | asf1 * asf2 * asf3 | / | asf1 + asf2 + asf3 |, where |...| expresses the cardinality of the set of cases in `x`

instantiating the corresponding expression. For asf, `coherence`

returns 1. For boolean conditions (see `condition`

), the coherence measure is not defined and `coherence`

hence returns `NA`

. For multiple csf that do not have a factor in common, `coherence`

returns the minimum of the separate coherence scores.

### Value

Numeric vector of coherence values to which `cond`

is appended as a "names" attribute. If `cond`

is a *csf* "asf1*asf2*asf3" composed of asf that do not have a factor in common, the *csf* is rendered with commas in the "names" attribute: "asf1, asf2, asf3".

### See Also

`cna`

, `condition`

, `selectCases`

, `allCombs`

, `full.ct`

, `condTbl`

### Examples

```
# Perfect coherence.
dat1 <- selectCases("(A*b <-> C)*(C + D <-> E)")
coherence("(A*b <-> C)*(C + D <-> E)", dat1)
csf(cna(dat1, details = "coherence"))
# Non-perfect coherence.
dat2 <- selectCases("(a*B <-> C)*(C + D <-> E)*(F*g <-> H)")
dat3 <- rbind(ct2df(dat2), c(0,1,0,1,1,1,0,1))
coherence("(a*B <-> C)*(C + D <-> E)*(F*g <-> H)", dat3)
csf(cna(dat3, con = .88, details = "coherence"))
```

*cna*version 3.6.2 Index]