# spm1d.stats¶

Statistics module.

This module contains functions for conducting classical hypothesis testing on a set of 1D continua.

For all tests the dependent variable Y must be a NumPy array, with dimensions:

```* J :  number of observations
* Q :  number of field nodes
* I :  number of vector components
```

Specifically:

• Univariate 0D tests: Y should be ( J x 1 )
• Multivariate 0D tests: Y should be ( J x I )
• Univariate 1D tests: Y should be ( J x Q )
• Multivariate 1D tests: Y should be ( J x Q x I )

## anova1¶

`spm1d.stats.``anova1`(Y, A=None, equal_var=False, roi=None)[source]

One-way ANOVA.

Parameters (Option 1):

• Y — A list or tuple of (J x Q) numpy arrays
• equal_var — If True, equal group variance will be assumed
Parameters (Option 2):

• Y — (J x Q) numpy array
• A — (J x 1) vector of integer group labels
• equal_var — If True, equal group variance will be assumed
Returns:
• F : An spm1d._spm.SPM_F instance
Example:
```>>> F = spm1d.stats.anova1((Y0,Y1,Y2))
>>> Fi = F.inference(alpha=0.05)
>>> Fi.plot()
```

## anova1rm¶

`spm1d.stats.``anova1rm`(Y, A, SUBJ, equal_var=True, roi=None, _force_approx0D=False)[source]

One-way repeated-measures ANOVA.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer group labels SUBJ — (J x 1) vector of subject labels equal_var — If True, equal group variance will be assumed F : An spm1d._spm.SPM_F instance
```>>> Y = np.random.randn(9, 101)
>>> A = np.array([1,1,1, 2,2,2, 3,3,3])
>>> SUBJ = np.array([1,2,3, 1,2,3, 1,2,3])
>>> F = spm1d.stats.anova1(Y, A, SUBJ)
>>> Fi = F.inference(alpha=0.05)
>>> Fi.plot()
```

## anova2¶

`spm1d.stats.``anova2`(Y, A, B, equal_var=True, roi=None)[source]

Two-way ANOVA.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B equal_var — If True, equal group variance will be assumed List of three spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Interaction AB

## anova2nested¶

`spm1d.stats.``anova2nested`(Y, A, B, equal_var=True, roi=None)[source]

Two-way nested ANOVA.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B (nested in A) equal_var — If True, equal group variance will be assumed List of two spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B there is no interaction term in nested designs.

## anova2rm¶

`spm1d.stats.``anova2rm`(Y, A, B, SUBJ, equal_var=True, roi=None, _force_approx0D=False)[source]

Two-way repeated-measures ANOVA.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B SUBJ — (J x 1) vector of integer subject labels equal_var — If True, equal group variance will be assumed List of three spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Interaction AB Non-sphericity correction not implemented. Equal variance must be assumed by setting “equal_var=True”.

## anova2onerm¶

`spm1d.stats.``anova2onerm`(Y, A, B, SUBJ, equal_var=True, roi=None, _force_approx0D=False)[source]

Two-way ANOVA with repeated-measures on one factor.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B (the repeated-measures factor) SUBJ — (J x 1) vector of integer subject labels equal_var — If True, equal group variance will be assumed List of three spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Interaction AB Non-sphericity correction not implemented. Equal variance must be assumed by setting “equal_var=True”.

## anova3¶

`spm1d.stats.``anova3`(Y, A, B, C, equal_var=True, roi=None)[source]

Three-way ANOVA.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B C — (J x 1) vector of integer labels for Factor C equal_var — If True, equal group variance will be assumed List of seven spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Main effect C Interaction AB Interaction AC Interaction BC Interaction ABC

## anova3nested¶

`spm1d.stats.``anova3nested`(Y, A, B, C, equal_var=True, roi=None)[source]

Three-way fully nested ANOVA.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B (nested in A) C — (J x 1) vector of integer labels for Factor C (nested in B) equal_var — If True, equal group variance will be assumed List of three spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Main effect C there are no interaction terms in fully-nested designs.

## anova3tworm¶

`spm1d.stats.``anova3tworm`(Y, A, B, C, SUBJ, equal_var=True, roi=None, _force_approx0D=False)[source]

Three-way ANOVA with repeated-measures on two factors.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B (a repeated-measures factor) C — (J x 1) vector of integer labels for Factor C (a repeated-measures factor) SUBJ — (J x 1) vector of integer subject labels equal_var — If True, equal group variance will be assumed List of seven spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Main effect C Interaction AB Interaction AC Interaction BC Interaction ABC Non-sphericity correction not implemented. Equal variance must be assumed by setting “equal_var=True”.

## anova3onerm¶

`spm1d.stats.``anova3onerm`(Y, A, B, C, SUBJ, equal_var=True, roi=None, _force_approx0D=False)[source]

Three-way ANOVA with repeated-measures on one factor.

Parameters: Y — (J x Q) numpy array A — (J x 1) vector of integer labels for Factor A B — (J x 1) vector of integer labels for Factor B C — (J x 1) vector of integer labels for Factor C (the repeated-measures factor) SUBJ — (J x 1) vector of integer subject labels equal_var — If True, equal group variance will be assumed List of seven spm1d._spm.SPM_F instances in the following order: Main effect A Main effect B Main effect C Interaction AB Interaction AC Interaction BC Interaction ABC Non-sphericity correction not implemented. Equal variance must be assumed by setting “equal_var=True”.

## cca¶

`spm1d.stats.``cca`(Y, x, roi=None)[source]

Canonical correlation analysis (CCA).

Parameters: Y — A list or tuple of (J x Q) numpy arrays x — (J x 1) list or array (independent variable) X2 : An spm1d._spm.SPM_X2 instance Currently only a univariate 0D independent variable (x) is supported.

## hotellings¶

`spm1d.stats.``hotellings`(Y, mu=None, roi=None)[source]

One-sample Hotelling’s T2 test.

Parameters: Y — (J x Q x I) numpy array mu — scalar or (Q x I) array (datum) T2 : An spm1d._spm.SPM_T2 instance

## hotellings_paired¶

`spm1d.stats.``hotellings_paired`(YA, YB, roi=None)[source]

Paired Hotelling’s T2 test.

Parameters: YA — (J x Q x I) numpy array YB — (J x Q x I) numpy array T2 : An spm1d._spm.SPM_T2 instance A paired Hotelling’s test on (YA,YB) is equivalent to a one-sample Hotelling’s test on (YB-YA)

## hotellings2¶

`spm1d.stats.``hotellings2`(YA, YB, equal_var=True, roi=None)[source]

Two-sample Hotelling’s T2 test.

Parameters: YA — (J x Q x I) numpy array YB — (J x Q x I) numpy array T2 : An spm1d._spm.SPM_T2 instance Non-sphericity correction not implemented. Equal variance must be assumed by setting “equal_var=True”.

## glm¶

`spm1d.stats.``glm`(Y, X, c, Q=None, roi=None)[source]

General linear model (for t contrasts).

• Y — (J x Q) numpy array (dependent variable)
• X — (J x B) design matrix (J responses, B parameters)
• c — B-component contrast vector (list or array)
• Q — non-sphericity specifiers (not currently supported for glm)

Note

Non-sphericity estimates are not supported for spm1d.stats.glm

• An spm1d._spm.SPM_T object.
```>>> t  = spm1d.stats.glm(Y, X, (-1,1))
>>> ti = t.inference(alpha=0.05, two_tailed=True)
>>> ti.plot()
```

## manova1¶

`spm1d.stats.``manova1`(Y, A, equal_var=True, roi=None)[source]

Two-way repeated-measures ANOVA.

Parameters: Y — (J x Q x I) numpy array A — (J x 1) vector of integer labels for Factor A equal_var — If True, equal group variance will be assumed X2 : An spm1d._spm.SPM_X2 instance Non-sphericity correction not implemented. Equal variance must be assumed by setting “equal_var=True”.

## regress¶

`spm1d.stats.``regress`(Y, x, roi=None)[source]

Simple linear regression.

• Y — (J x Q) numpy array (dependent variable)
• x — J-component list or array (independent variable)
• An spm1d._spm.SPM_T object.
```>>> Y  = np.random.rand(10, 101)
>>> Y  = spm1d.util.smooth(Y, fwhm=10)
>>> x  = np.random.rand(10)
>>> t  = spm1d.stats.regress(Y, x)
>>> ti = t.inference(alpha=0.05)
>>> ti.plot()
```
Notes: the correlation coefficient is retrievable as “t.r” where “t” is the output from spm1d.stats.regress statistical inferences are based on t, not on r

## ttest¶

`spm1d.stats.``ttest`(Y, y0=None, roi=None)[source]

One-sample t test.

• Y — (J x Q) data array (J responses, Q nodes)
• y0 — optional Q-component datum array (default is the null continuum)
• An spm1d._spm.SPM_T object.
```>>> Y  = np.random.randn(8, 101)
>>> Y  = spm1d.util.smooth(Y, fwhm=15)
>>> t  = spm1d.stats.ttest(Y)
>>> ti = t.inference(alpha=0.05, two_tailed=True)
>>> ti.plot()
```

## ttest_paired¶

`spm1d.stats.``ttest_paired`(YA, YB, roi=None)[source]

Paired t test.

• YA — (J x Q) data array (J responses, Q nodes)
• YB — (J x Q) data array (J responses, Q nodes)
• An spm1d._spm.SPM_T object.
```>>> YA,YB  = np.random.randn(8, 101), np.random.randn(8, 101)
>>> YA,YB  = spm1d.util.smooth(Y, fwhm=10), spm1d.util.smooth(Y, fwhm=10)
```
```>>> t      = spm1d.stats.ttest_paired(YA, YB)
>>> ti = t.inference(alpha=0.05)
>>> ti.plot()
```

## ttest2¶

`spm1d.stats.``ttest2`(YA, YB, equal_var=False, roi=None)[source]

Two-sample t test.

• YA — (J x Q) data array (J responses, Q nodes)
• YB — (J x Q) data array (J responses, Q nodes)
• equal_var — If True, equal group variance will be assumed
• An spm1d._spm.SPM_T object.
```>>> YA,YB  = np.random.randn(8, 101), np.random.randn(8, 101)
>>> YA,YB  = spm1d.util.smooth(Y, fwhm=10), spm1d.util.smooth(Y, fwhm=10)
```
```>>> t  = spm1d.stats.ttest2(YA, YB)
>>> ti = t.inference(alpha=0.05)
>>> ti.plot()
```