On this page

Correlation and association

A correlation is one number for how two variables go together. Pearson’s r is the one everybody meets first, and for two continuous variables in a straight-line relationship it is the right one; the correlation module offers twenty more and two automatic presets, because variables come as five-point items, yes/no answers, groups and counts as well as measurements, and because “go together” can mean a straight line, a consistent order, a shared category or any dependence at all. This page is the catalogue: what each family measures, what its number means, and which one a pair of variables calls for. It also covers the two questions that come after a correlation – whether two correlations differ, and what is left of a set of correlations once each pair is cleared of the others – which the module answers as a comparison test and a partial-correlation network. In the app’s roles a correlation is asked of two variables – the left and the right lists of the panel, the same list on both sides for a matrix – with an optional set of control variables and, for a comparison across samples, a grouping variable. The numbers come from the café data, prepared the way that page describes.

Three neighbouring pages hold what this one leans on and does not repeat. Effect sizes has r, point-biserial r, r², η² and Cramér’s V as sizes, with the small–medium–large bands. Parametric and non-parametric has rank correlation, Spearman’s rho, Kendall’s tau and ties. Regression basics has the zero-order, partial and part correlations, which the network below is built from.

Signed, unsigned and directional measures

The module’s method list is in three groups, and the grouping is the first thing to know about a coefficient: what its scale is, and whether the cell for A against B is the same as the cell for B against A.

Signed measure is a coefficient on the −1 to +1 scale, where the sign says which way the relationship runs and 0 is none: overall against taste is r = .55, overall against wait r = −.30 – the longer the wait, the lower the score. Every classical correlation is signed, and so are the latent-normal and the concordance families below; a signed measure reads on the correlation bands, and Pearson’s r squared is a share of variance.

Unsigned measure is a coefficient on the 0 to 1 scale, where 0 is independence and larger is more dependence of whatever shape, with no direction to report – there is none to report when one variable is a set of categories (branch), and none that a single sign could carry when the relationship is a curve. Cramér’s V, the correlation ratio, the information-theoretic family and the three general-dependence detectors are unsigned. Their scales are not r’s: a Cramér’s V of .10 and a distance correlation of .10 and a mutual information of .10 are three different amounts of association, and each family carries its own strength bands in the app.

Directional measure is a coefficient that answers “how well does A predict B?” rather than “how related are A and B?”, so that A against B and B against A are different numbers and the matrix is not symmetric. Three of the module’s methods are directional – Somers’ D, Theil’s U and Chatterjee’s ξ – and the module reads every cell row → column: the row variable is the predictor, the column variable the predicted. Neither automatic preset ever picks one, because a directional cell in an otherwise symmetric matrix would read wrongly.

The latent-normal family

A five-point item is not a measurement of taste satisfaction; it is a measurement rounded to five values. The latent-normal family takes that seriously. Each of its four coefficients assumes that behind an ordered or a yes/no variable there is a continuous, normally distributed quantity – a latent variable – that the observed answers cut into categories at fixed thresholds, and estimates the correlation between the latent quantities rather than between the categories. The estimate is what a factor analysis or an SEM on questionnaire items wants, since the model is about the constructs and not the response format; the app’s Mixed/auto · latent variables preset assembles a whole matrix of them. The price is the assumption, which is stated at the end of the section.

Polychoric correlation is the latent correlation between two ordered variables – two five-point items, or an item and a 0–10 score. taste against fresh gives .56 where Pearson’s r on the raw 1–5 codes gives .51 and Spearman’s ρ .52: coarsening a continuum into five steps loses some of the co-variation, and the polychoric estimate puts it back by asking what correlation between two normal quantities would produce the 5×5 table of answers observed. It is the coefficient for a factor analysis of Likert items with four or more categories, and it is the one the correlation matrix a factor model is fitted to can be built from. Fitting it is a maximum-likelihood search over the pair’s thresholds, so its cost grows with the number of categories, not with the number of rows.

Tetrachoric correlation is the polychoric for two yes/no variables – the 2×2 case. It assumes each binary is a continuum cut at one threshold, and that is where it can go wrong: recommend against branch gives a tetrachoric of −.17 where the phi coefficient on the same table is −.10, and the larger number is not a better estimate of anything, because nobody is a little Riverside. A branch is a genuine binary; the coefficient estimates the correlation between two continua of which one does not exist, and it runs larger than φ by construction. Reach for it when the split is artificial – pass/fail on a score, above/below a cut-off, a yes/no that stands for an inclination – and for a genuine binary read φ.

Polyserial correlation is the latent correlation between a continuous variable and an ordered one. overall against taste gives .57 where Pearson’s r gives .55 – a small lift, since overall is already close to a measurement and only one side of the pair is coarsened. It is the mixed-pair member of the family, and the latent preset dispatches it wherever a continuous variable meets an ordinal one.

Biserial correlation is the latent correlation between a continuous variable and a yes/no one that stands for a dichotomised continuum. overall against recommend gives .68 where the point-biserial r – Pearson’s r with yes and no coded 1 and 0 – gives .55. The two answer different questions: the point-biserial says how strongly the answer tracks the score, the biserial estimates how strongly the willingness to recommend would track it had it been measured on a scale, on the assumption that the answer is that willingness cut at a threshold. For recommend that reading is defensible, and the biserial is the larger by the same mechanism as the tetrachoric’s; for a binary that is a category rather than a cut, it is the point-biserial that means something.

Latent bivariate normality is the assumption the four share: the two latent quantities are jointly normal – a bell-shaped hill in two dimensions – so that the thresholds alone turn the hill into the observed table. Unlike the assumptions behind a p-value, this one bites the coefficient itself: if the latent quantities are skewed or the relationship between them is not linear, the estimate is biased, not merely its test. The module’s assumptions card runs the estimator’s own goodness-of-fit test for every latent pair and flags a failure beside the coefficient instead of dropping it, because for two ordinal variables there is no assumption-free coefficient that estimates the same thing – the honest response is to read the estimate with the flag and corroborate it with a rank correlation on the same pair. A 2×2 table has nothing left to test once the thresholds and the correlation are fitted, so a tetrachoric pair reads N/A there, never Pass.

The concordance measures

Kendall’s tau is built from pairs of cases rather than from values, and two relatives of it – both offered by the module – use the same pairs and count the tied ones differently. Understanding the pairs is what makes the three numbers on one dataset make sense together.

Concordant and discordant pairs are what every one of these coefficients counts. Take any two members: if the one who rated the taste higher also rated the freshness higher, the pair is concordant; if the one higher on taste is lower on freshness, it is discordant; if the two members gave the same answer on either item, the pair is tied on that variable and is neither. With 200 members there are 19,900 pairs, and each coefficient is the concordant count minus the discordant count over some denominator. Kendall’s tau, in its τ-b form, divides by a term that counts the pairs untied on each variable – the app’s Kendall’s τ is τ-b, at .44 for taste against fresh – and the two coefficients below differ from it only in what they do with the ties.

Goodman & Kruskal’s γ divides by the concordant count C and the discordant count D alone,

γ=C−DC+D

the tied pairs left out entirely. taste against fresh gives γ = .56 against τ = .44 on the same pairs, and the gap is the ties: on two five-point items most pairs are tied on at least one item, and every pair that γ drops is one that τ’s denominator keeps. γ therefore runs larger than τ as a rule, reaches ±1 whenever the untied pairs all point the same way, and reads directly – of the pairs that can be ordered on both items, 56 percentage points more agree than disagree. Its standard error is built for tied data, so the module’s tie-burden check exempts it.

Somers’ D keeps the ties on one variable and drops them on the other, which makes it the directional member of the family: D(Y | X) divides by the pairs untied on the predictor X, so a pair tied on the outcome Y counts against the association and a pair tied on X does not. taste → fresh gives .43 and fresh → taste .44 – nearly equal here, since the two items have much the same spread, and further apart when one variable has many more ties than the other. Read it as “of the pairs that differ on the predictor, the share that agree on the outcome minus the share that disagree”, and as the ordinal counterpart of a regression slope: it is the coefficient behind the c-statistic of a logistic model, and the module offers it where a mean-comparison measure’s assumptions fail.

Blomqvist’s β, the medial correlation, is the coarsest signed coefficient there is and the hardest to move: split each variable at its median, count the cases that fall on the same side of both medians and the cases that fall on opposite sides, and take the difference as a share. Because it uses only which quadrant a case lands in, no value can pull it however far out it lies. spend_before against spend_after gives β = .49 with the catering order in the file and .49 with it blanked, where Pearson’s r moves from .60 to .69 on that one cell. It is a sanity check rather than a headline coefficient – it throws away the sizes and therefore the power – and the cases that sit exactly on a median are dropped from the count, which is why its n reads 196 on a pair with 199 complete rows.

Contingency-table measures

When one or both variables are categories, association is read off the cross-tabulation, and the chi-square test on that table supplies the p-value. The size measures for a table – Cramér’s V, Cohen’s w, the odds ratio – are on the effect-sizes page; two coefficients that the correlation module adds are here.

Phi coefficient is Pearson’s r computed on two yes/no variables coded 0 and 1 – the signed version of Cramér’s V on a 2×2 table, since |φ|=χ2/n=V there. recommend against branch gives φ = −.10, from χ²(1) = 2.12, p = .145: no evidence that the branches differ in who would recommend. The sign follows the coding order – Riverside before Station, no before yes – so a negative φ says the second branch goes with the first answer, Station members recommending a little less often (62.6% against 72.3%). Report it with its sign and the coding, or drop the sign and say the direction in words. It reads on V’s bands. Note that the correlation module’s own Cramér’s V carries Bergsma’s bias correction and reads .07 on this table where the comparison module’s uncorrected V and |φ| read .10 – the same association, one of them shrunk towards what a table of independent variables would show.

Correlation ratio (ε²) is the share of a continuous variable’s variance that the groups of a categorical one account for – η², the one-way ANOVA’s R² – in a bias-corrected form,

ε2=1−(1−η2)n−1n−k

which takes off the share that k groups explain by chance alone. Branch accounts for η² = .050 of the variance in spend_before; the module reports ε² = .045, with F(1, 198) = 10.32, p = .002 as the test. One symbol serves two measures here: the effect-sizes page’s ε² is the Kruskal–Wallis test’s rank version of the same correction, and its ω² is a different correction of η² that lands at .045 on this pair too. The correlation module treats a categorical variable, or a numeric one with ten or fewer distinct values, as the grouping side; overall, a 0–10 score with ten distinct values in the file, therefore counts as a grouping against branch, and a pair that is two groupings falls back to Cramér’s V – which is why the instance here is spend_before and not the satisfaction score.

The information-theoretic family

Correlation asks whether two variables move together; mutual information asks whether knowing one tells you anything about the other, of any shape, on any kind of variable. The five coefficients in this family are one quantity – the information the variables share – expressed in five ways. All of them read a table: two categorical variables give it directly, and a continuous variable is first cut into bins, so the number depends on the grid.

Entropy is the uncertainty in one variable, measured in nats, with pi the share of the cases at each of its values:

H=−∑ipiln⁡pi

A variable with one value has H = 0 and a variable spread evenly over five values has ln 5 = 1.61. taste has H = 1.52 and fresh 1.48 – almost as spread as five levels allow. A nat is the natural-log unit; one nat is about 1.44 bits. The module prints the two entropies beside the coefficient under Append entropies, with the Miller–Madow correction that offsets the downward bias of a plug-in entropy on a finite sample.

Mutual information is the uncertainty two variables share,

MI=H(X)+H(Y)−H(X,Y)

the amount by which knowing one reduces the uncertainty about the other, in nats, symmetric, 0 under independence and with no upper limit but the smaller entropy. taste and fresh share MI = .15 nats: about a tenth of the uncertainty in either item is removed by knowing the other. It detects any dependence, curved or categorical, and it is what the four coefficients below are built from; Append MI prints it in the matrix. Its analytic p-value reads 2n·MI against a χ² distribution, and a permutation p-value is offered for the sparse tables where that approximation fails.

Normalized mutual information divides MI by the average of the two entropies, so that it runs from 0 to 1 and can be compared across pairs: .10 for taste against fresh, MI = .15 over an average entropy of 1.50. It is the general-purpose “how much do these two share” coefficient, the one the app’s information bands are set for, and the safest default in the family.

Adjusted mutual information subtracts the MI that two independent variables with these margins would show by chance, then divides by the larger entropy less that chance term: .09 for taste against fresh. It sits below NMI for two reasons at once – the chance correction and the stricter denominator – and it is the coefficient to prefer when the pairs in a matrix have very different numbers of categories, since raw MI rises with the number of cells whether or not anything is shared. Under independence it can land slightly below 0, and the app reports that value rather than clamping it.

Rajski’s coherence coefficient divides MI by the joint entropy H(X, Y): .05 for taste against fresh. It is the strictest normalisation – it reaches 1 only when the two variables are the same variable up to relabelling – so it reads low on any real pair, and it is the one to use when “identical” rather than “related” is the question.

Theil’s U divides MI by the entropy of one side, U(Y|X)=MI/H(Y): the share of Y’s uncertainty that knowing X removes. It is directional – the two cells of a pair differ whenever the entropies do – and for taste and fresh, whose entropies almost match, both directions read .10. Read the row → column cell as “how much the row variable tells you about the column variable”.

Discretization is the first step every member of the family takes with a continuous variable: it is cut into equal-frequency bins, and the bins are the categories the table counts. The number of bins follows a rule – roughly the cube root of N by default, alternatively Rice’s or Sturges’ rule or a fixed count – capped at the number of distinct values, and a variable with ten or fewer distinct values is coded level for level with no binning, which is why the two five-point items above needed none. The grid is a choice that changes the number: a finer grid resolves more structure but scatters the cases over more cells, and a sparse table inflates the shared information itself, not only its p-value. The module’s assumptions card reports the grid a run will use and the smallest expected cell count on it, and the manual’s display options hold the rule.

Dependence beyond a monotone trend

Every coefficient above the information family answers a question about a line or an order. A relationship that rises and then falls – a U, an inverted U, a cycle – gives Pearson’s r and the rank coefficients a number near 0, because the rising half cancels the falling half, and a scatterplot with obvious structure reads as “no relationship”. Three coefficients are built to see it. Their common property is that they are 0 only under independence, so any dependence at all – linear, curved, cyclic – makes them positive; the cost is that their numbers are not on r’s scale and do not say what shape the dependence has.

The café has no such pair by design: every relationship in it is a noisy monotone one, which is what the three coefficients below are shown on, so their café values illustrate their scales against r’s rather than their reason for existing. The case they exist for looks like this: a plant’s growth against the water it gets rises to an optimum and falls past it, so that r over the whole range is near 0 while the dependence is total; a shop’s takings against the temperature peak on a mild day; a learner’s performance against arousal follows the inverted U textbooks draw. On any of those the detectors read clearly positive where r reads nothing.

Hoeffding’s D is the oldest test of independence against any alternative: it compares the joint distribution of the ranks with what independence would produce, over the whole plane, and is 0 under independence and positive under dependence of any shape. Its scale is its own – roughly −.5 to 1, with strong dependence rarely above .3 – so the app gives it its own bands: taste against fresh reads D = .07, overall against taste .08, overall against wait .04, every one of them significant, and none comparable to the r beside it. It assumes continuous data, and ties attenuate it – two identical five-level items give D ≈ .57, not 1 – so on ordinal data read it as a lower bound and prefer the two coefficients below.

Chatterjee’s ξ measures how far Y is a function of X: it is 1 when Y is determined by X, however curved the function, and 0 under independence, and it is directional, since Y can be a function of X without X being a function of Y. overall → taste gives ξ = .16 and taste → overall .14; overall → wait .14 and wait → overall .07. The values are low because a noisy relationship is far from a function – ξ saturates only near determinism – so it too carries its own bands, well below the information family’s. Ties in the predictor are broken at random under the app’s seed, so on a five-point predictor the value is one draw from a small family the data supports, reproducible from run to run and flagged in the matrix wherever the predictor carries ties.

Distance correlation is 0 if and only if the two variables are independent, and positive otherwise, whatever the dependence looks like; it is built from the distances between every pair of cases on each variable rather than from values or ranks. On the café’s monotone pairs it runs close to |r| – .48 for taste against fresh, .49 for overall against taste, .33 for overall against wait – which is its virtue: it reads on the 0–1 scale a correlation reader expects, and departs from |r| exactly where a monotone coefficient misses something. The module reports the square root of the bias-corrected estimator, clamped at 0, which is what puts it on that scale; it also uses it as the screen that tests every pair’s residuals from a monotone fit, so that a curved relationship is flagged even when Pearson’s is the method chosen.

Range restriction

Range restriction is a sample that covers only part of a variable’s range, and it shrinks every correlation through that variable – the relationship is still there, but the sample holds too little of the spread on one side to show it. The classic case is a selected sample: an admissions test correlates weakly with later grades among the admitted, because everyone admitted scored high on the test, and the correlation over all applicants would be far larger. A floor or a ceiling does the same thing – an item most people answer 5 has nowhere to vary – and so does a dominant value. It is a cousin of attenuation: both make an observed correlation understate a true one, one through error and the other through selection. The module’s assumptions card reports each variable’s Max value share, the largest share of the cases that a single value holds, and fails the Adequate spread row when one value holds more than half of them; the café’s variables all pass – taste’s commonest answer holds 28.5% of the members, overall’s 21% – so the flag is described here rather than shown. When it fires, no coefficient corrects it; the honest reading is that the correlation is a lower bound for this sample, and the honest fix is a sample with the full range in it.

Comparing two correlations

A correlation on its own is often not the question. Does satisfaction track the taste more closely than the freshness? Is the link between before-spend and after-spend the same at both branches? Two coefficients that look different may be one number seen twice through sampling variability, and whether they share a sample decides how the difference is tested. The module’s comparison card chooses the test from the structure of the comparison; the concepts behind the choice are these.

Independent correlations come from two separate samples – the same pair of variables in two groups of a grouping variable, which the module calls Between groups and asks for under Compare across (variable). Nothing links the two coefficients, so the test is the plainest: transform each to Fisher’s z, take the difference, and divide by 1/(n1−3)+1/(n2−3). spend_before against spend_after is r = .71 at Riverside (n = 101) and .66 at Station (n = 98): Δr = .05, z = 0.69, p = .49, with an interval for the difference from −.10 to .21. The gap the eye sees is comfortably inside what two samples of a hundred would produce from one true correlation.

Dependent correlations come from the same sample, and the test has to allow for the fact that the two coefficients are themselves correlated. They come in two kinds. Overlapping correlations share a variable – overall~taste against overall~fresh, both anchored on overall – and the module’s row-wise, column-wise and reference structures produce them; non-overlapping correlations share only the sample – taste~fresh against quick~slow – and arise in the reference structure when the chosen cell shares no variable with the compared one. The classic tests are Williams’ t for the overlapping case and Steiger’s z for the non-overlapping one; the module’s default variant runs the same comparison with the covariance evaluated at a back-transformed average of the two coefficients (Dunn & Clark’s z as Hittner, May & Silver modified it), and the two agree to two decimals on the café. Either way, the allowance for the shared variable is what a naive test of two r’s would miss. overall tracks taste at .55 and fresh at .53 on the 193 members with a score: Δr = .02, Williams’ t(190) = 0.29, p = .77, the interval for the difference −.10 to .13 – the two items are, as far as this sample can tell, equally close to the overall score. The sample size the test runs at is the rows complete on every variable in the comparison, which under pairwise deletion sits below either cell’s own n.

Fisher’s z transformation is

z=atanh⁡(r)=12ln⁡1+r1−r

and it exists because r has an awkward sampling distribution: bounded at ±1, it is squeezed and skewed as it approaches either end, so that a difference of .05 means much more at .90 than at .10. On the z scale the distribution is close to normal with a standard error of 1/n−3 whatever the true value, and every test and interval for a correlation is done there and mapped back with tanh. It is why the interval around r = .71 above is asymmetric – .60 to .79 – and why a correlation of exactly ±1 has no test: its z is infinite. The transformation is exact for Pearson’s r under normality and a plug-in approximation for Spearman’s, Kendall’s and the point-biserial.

Δr is the difference between two correlations, r(A) − r(B), in the order the comparison lists them, and the number to report with a comparison alongside its p-value. Its confidence interval is the reading that matters: an interval that excludes 0 is a difference the sample supports at that level, one that straddles 0 – as both café intervals do – says the two coefficients are compatible with being one. The module builds the interval by Zou’s method from the two coefficients’ own Fisher-z intervals, or by a bootstrap, and the bootstrap path is the only one for the coefficients that have no closed-form test.

Joint pattern test asks one question of a whole matrix instead of a question per pair: are all these correlations equal (compound symmetry), are the correlations within each row of the matrix equal, or – across groups – is the whole correlation matrix the same in every group. One statistic, a χ² with as many degrees of freedom as there are constraints, answers it, and the module then lists the component comparisons so that a significant pattern can be traced to the cells that break it. It is the correlation counterpart of an omnibus ANOVA before its post-hoc tests, and the reason to run it first is the same: a matrix of pairwise tests, read one at a time, finds differences by chance as surely as any family of tests does.

The partial-correlation network

A correlation matrix of the six survey items and the overall score holds 21 numbers, and most of them are large: every item correlates with every other, because each of them is partly food satisfaction, partly service satisfaction and partly a general disposition to be pleased. The matrix cannot say which pairs are connected directly and which only through the rest. A partial-correlation network can.

Partial-correlation network is the set of partial correlations among a set of variables in which every pair is cleared of all the others at once, drawn as a graph: one node per variable, one edge per pair, the edge’s thickness the size of the partial correlation and its colour the sign. An edge survives only where two variables still go together among cases alike on everything else in the set; a correlation carried by a third variable collapses. On the six items and overall (193 members complete on all seven), taste and friendly correlate at .21 in the plain matrix and at −.08 in the network – nothing direct links the food item to the service item, and the .21 was the two factors both feeding the overall disposition; taste–fresh goes from .51 to .24 and taste–overall from .55 to .31, direct links that shrink but stay. The model behind the picture is the Gaussian graphical model, the network is one model over all its nodes – so it is fitted on the cases complete on every node, not pairwise – and any control variables in the run become nodes, since a network conditions on everything it contains.

Gaussian graphical model is the statistical model a partial-correlation network is: the variables are taken to be jointly normal, and the graph records which pairs are conditionally independent – unrelated once every other variable is held fixed – as the pairs with no edge. Its parameters are the entries of the inverse of the covariance matrix, each of which, rescaled, is a partial correlation, so the whole network is estimated in one step from the correlation matrix. It is the model the psychology network literature works in, where the nodes are symptoms or items and the question is which ones sustain each other directly.

Node is a variable in the network – one of the selected variables or a control. The centrality table lists one row per node, ordered by strength.

Edge is a pair’s partial correlation drawn as a line between two nodes: positive edges in one colour, negative edges in another, thicker for larger. Under the unregularised estimator every pair is an edge with a coefficient, a p-value and degrees of freedom; under the regularised one an edge that was shrunk to zero is absent, and its absence is a stronger claim than a non-significant test – the model selected it out.

Graphical lasso is the regularised estimator: it fits the Gaussian graphical model with an L1 penalty on the inverse covariance – the LASSO’s penalty, applied to a network rather than a regression – which shrinks small partial correlations to exactly 0 and leaves a sparse graph. The penalty’s weight is chosen by the extended Bayesian information criterion, whose tuning parameter γ sets how strongly it prefers a sparser graph (0.5 by default; 0 keeps more edges, 1 fewer). On the seven café nodes it keeps 12 of the 21 edges at a penalty of .065 – every food–service pair goes – and the surviving edges are a little smaller than their unregularised values, the shrinkage being the price of the selection. It is the estimator for a network large relative to its sample, and the one that makes a network of any size readable; the unregularised estimator is the one for a p-value per edge. The two are answers to different questions, and a report says which was used.

Strength is a node’s centrality as the sum of the absolute partial correlations on its edges: how much of the network’s connection runs through it, sign ignored. overall is the strongest node at 1.56 – it has a direct edge to every item, which is what an overall score should show – and slow the weakest at .66. The module reports strength and expected influence and no other centrality, since closeness and betweenness are the ones the psychometric-network literature finds unstable on a weighted graph; both are raw sums on the coefficient’s own scale, not standardised across nodes, and an edge enters at its coefficient whether or not it is significant.

Expected influence is the same sum taken with the signs: a node whose edges are all positive has expected influence equal to its strength, and a node with strong positive and strong negative edges has high strength and expected influence near 0. The two are read as a pair for exactly that reason. quick has strength .87 and expected influence .08 – it pulls overall up (.27) and is pulled down by slow (−.25), the reverse-keyed item that asks the same thing from the other side – and slow has strength .66 and expected influence −.50, five of its six edges negative because a high score on it is bad service. Neither picture nor strength alone shows that distinction.

Community is a group of nodes that connect more to each other than to the rest, found by a partition of the network that maximises its modularity. The module partitions on the signed edges, so a negative edge counts as a reason to separate two nodes rather than being discarded, and colours the graph’s nodes by the result. On the café network the unregularised estimator finds two communities – the three food items with slow, and friendly, quick and overall – at a modularity of .23, and the graphical lasso finds three, slow on its own, at .24. That the same seven variables give two partitions under two estimators is the point to take: a community describes this network under this estimator, and the count is not a factor count. Community detection is used elsewhere as a dimensionality method, and the temptation to read “two communities” as “two factors” is real; if dimensionality is the question, factor analysis is the tool built to answer it.

Modularity is the score a partition into communities is chosen by: the share of edge weight that falls within communities minus the share that a network with the same node strengths and no group structure would put there. Around 0 the partition has found no more grouping than the strengths alone produce; the café’s .23 is modest structure. The search anneals from a random start, so it runs under the app’s reproducibility seed and the same data returns the same partition.

A doctor: dose → the row variable, response → the column, and ξ or distance correlation for a response that rises and then falls; an HR analyst: the engagement items → the network’s nodes, department → the grouping variable a matrix is compared across; a teacher: attendance and marks → a rank correlation, pass/fail against the mark → a point-biserial, and the admitted class alone → range restriction.

Where this appears in DataSuite

  • Correlation analysis – the Correlation method list is the catalogue on this page in the app’s three groups, with the two Mixed/auto presets that pick a method per pair from the variables’ types; the assumptions card tests latent normality, tie burden, cell counts, range restriction and dependence beyond a monotone trend; the comparison card tests independent and dependent correlations and joint patterns; Estimate a partial-correlation network adds the network.
  • Comparison analysis – the chi-square test and Cramér’s V for a cross-tabulation, and the effect sizes a group comparison pairs with.
  • Regression analysis – zero-order, partial and part correlations for every predictor, and the LASSO the graphical lasso borrows its penalty from.
  • Factor analysis – fitted to a correlation matrix, polychoric where the items are ordinal; the tool for the dimensionality question a network’s communities do not answer.
  • Reliability analysis – inter-item correlations and the attenuation a scale’s error imposes on every correlation through it.
  • Analysis planner – the sample a correlation test needs, and the correlation-attenuation calculator.
  • Settings – the strength bands for the signed coefficients, the information family, Hoeffding’s D and Chatterjee’s ξ; the advisory thresholds for range restriction and tie burden.