This package provides functions to evaluate moments of ratios (and products) of quadratic forms in normal variables, specifically using recursive algorithms developed by Bao and Kan (2013) and Hillier et al. (2014). Generating functions for these moments are closely related to the top-order zonal and invariant polynomials of matrix arguments.

There exist a couple of `Matlab`

programs developed by
Raymond Kan (available from https://www-2.rotman.utoronto.ca/~kan/), but this
`R`

package is an independent project (not a fork or
translation) and has different functionalities, including evaluation of
moments of multiple ratios of a particular form and scaling to avoid
numerical overflow. This has originally been developed for a biological
application, specifically for evaluating average evolvability measures
in evolutionary quantitative genetics (Watanabe, 2022).

** WARNING** Installation size of this package
can be very large (~130 MB on Linux and macOS; ~3 MB on Windows with

`Rtools42`

), as it involves lots of `RcppEigen`

functions.`install.packages("qfratio")`

```
## Install devtools first:
# install.packages("devtools")
## Recommended installation (pandoc required):
::install_github("watanabe-j/qfratio", dependencies = TRUE, build_vignettes = TRUE)
devtools
## Minimal installation:
# devtools::install_github("watanabe-j/qfratio")
```

```
Imports: Rcpp, MASS
LinkingTo: Rcpp, RcppEigen
Suggests: gsl, mvtnorm, graphics, stats, testthat (>= 3.0.0), rlang (>= 0.4.7),
knitr, rmarkdown
```

If installing from GitHub, you also need `pandoc`

for correctly building
the vignette. For `pandoc < 2.11`

,
`pandoc-citeproc`

is required as well. (Never mind if you use
`RStudio`

, which appears to have them bundled.)

Here are some simple examples:

```
## Simple matrices
<- 4
nv <- diag(1:nv)
A <- diag(sqrt(nv:1))
B
## Expectation of (x^T A x)^2 / (x^T x)^2 where x ~ N(0, I)
qfrm(A, p = 2)
#>
#> Moment of ratio of quadratic forms
#>
#> Moment = 6.666667
#> This value is exact
## Compare with Monte Carlo mean
mean(rqfr(1000, A = A, p = 2))
#> [1] 6.641507
## Expectation of (x^T A x)^1/2 / (x^T x)^1/2
.5 <- qfrm(A, p = 1/2))
(mom_A0#>
#> Moment of ratio of quadratic forms
#>
#> Moment = 1.567224, Error = -6.335806e-19 (one-sided)
#> Possible range:
#> 1.56722381 1.56722381
## Monte Carlo mean
mean(rqfr(1000, A = A, p = 1/2))
#> [1] 1.569643
plot(mom_A0.5)
```

```
## Expectation of (x^T x) / (x^T A^-1 x)
## = "average conditional evolvability"
<- qfrm(diag(nv), solve(A)))
(avr_cevoA #>
#> Moment of ratio of quadratic forms
#>
#> Moment = 2.11678, Error = 2.768619e-15 (one-sided)
#> Possible range:
#> 2.11677962 2.11677962
mean(rqfr(1000, A = diag(nv), B = solve(A), p = 1))
#> [1] 2.071851
plot(avr_cevoA)
```

```
## Expectation of (x^T x)^2 / (x^T A x) (x^T A^-1 x)
## = "average autonomy"
<- qfmrm(diag(nv), A, solve(A), p = 2, q = 1, r = 1))
(avr_autoA #>
#> Moment of ratio of quadratic forms
#>
#> Moment = 0.8416553
#> Error bound unavailable; recommended to inspect plot() of this object
mean(rqfmr(1000, A = diag(nv), B = A, D = solve(A), p = 2, q = 1, r = 1))
#> [1] 0.8377911
plot(avr_autoA)
```

```
## Expectation of (x^T A B x) / ((x^T A^2 x) (x^T B^2 x))^1/2
## = "average response correlation"
## whose Monte Carlo evaluation is called the "random skewers" analysis,
## while this is essentially an analytic solution (with slight truncation error)
<- qfmrm(crossprod(A, B), crossprod(A), crossprod(B),
(avr_rcorA p = 1, q = 1/2, r = 1/2))
#>
#> Moment of ratio of quadratic forms
#>
#> Moment = 0.8462192
#> Error bound unavailable; recommended to inspect plot() of this object
mean(rqfmr(1000, A = crossprod(A, B), B = crossprod(A), D = crossprod(B),
p = 1, q = 1/2, r = 1/2))
#> [1] 0.8467811
plot(avr_rcorA)
```

```
## More complex (but arbitrary) example
## Expectation of (x^T A x)^2 / (x^T B x)^3 where x ~ N(mu, Sigma)
<- 1:nv / nv
mu <- diag(runif(nv) * 3)
Sigma <- qfrm(A, B, p = 2, q = 3, mu = mu, Sigma = Sigma,
(mom_A2B3 m = 500, use_cpp = TRUE))
#>
#> Moment of ratio of quadratic forms
#>
#> Moment = 0.510947, Error = 0 (two-sided)
#> Possible range:
#> 0.510946975 0.510946975
plot(mom_A2B3)
```

Bao, Y. and Kan, R. (2013) On the moments of ratios of quadratic forms
in normal random variables. *Journal of Multivariate Analysis*,
**117**, 229–245. doi:10.1016/j.jmva.2013.03.002.

Hillier, G., Kan, R. and Wang, X. (2009) Computationally efficient
recursions for top-order invariant polynomials with applications.
*Econometric Theory*, **25**, 211–242. doi:10.1017/S0266466608090075.

Hillier, G., Kan, R. and Wang, X. (2014) Generating functions and short
recursions, with applications to the moments of quadratic forms in
noncentral normal vectors. *Econometric Theory*,
**30**, 436–473. doi:10.1017/S0266466613000364.

Smith, M. D. (1989) On the expectation of a ratio of quadratic forms in
normal variables. *Journal of Multivariate Analysis*,
**31**, 244–257. doi:10.1016/0047-259X(89)90065-1.

Smith, M. D. (1993) Expectations of ratios of quadratic forms in normal
variables: Evaluating some top-order invariant polynomials.
*Australian Journal of Statistics*, **35**, 271–282.
doi:10.1111/j.1467-842X.1993.tb01335.x.

Watanabe, J. (2022) Exact expressions and numerical evaluation of
average evolvability measures for characterizing and comparing
**G** matrices. *bioRxiv*, 2022.11.02.514929. doi:10.1101/2022.11.02.514929.