paley.Rd
Computes a Hadamard matrix of dimension (p+1)×2k, where p is a prime,
and p+1 is a multiple of 4, using the Paley construction. Used by hadamard
.
Minimum size for matrix
Maximum size for matrix. Ignored if prime
is specified.
Optional. A prime at least as large as
n
, such that prime+1
is divisible by 4.
Check that the resulting matrix is of Hadamard type
Matrix
"0/1"
for a matrix of 0s and 1s, "+-"
for a
matrix of ±1.
Require full orthogonal balance?
For paley
, a matrix of zeros and ones, or NULL
if no matrix smaller than
nmax
can be found.
For is.hadamard
, TRUE
if H
is a Hadamard matrix.
The Paley construction gives a Hadamard matrix of order p+1 if p is prime and p+1 is a multiple of 4. This is then expanded to order (p+1)×2k using the Sylvester construction.
paley
knows primes up to 7919. The user can specify a prime
with the prime
argument, in which case a matrix of order
p+1 is constructed.
If check=TRUE
the code uses is.hadamard
to check that
the resulting matrix really is of Hadamard type, in the same way as in
the example below. As this test takes n3 time it is
preferable to just be sure that prime
really is prime.
A Hadamard matrix including a row of 1s gives BRR designs where the average of the replicates for a linear statistic is exactly the full sample estimate. This property is called full orthogonal balance.
Cameron PJ (2005) Hadamard Matrices. In: The Encyclopedia of Design Theory http://www.maths.qmul.ac.uk/~lsoicher/designtheory.org/library/encyc/
M<-paley(11)
is.hadamard(M)
#> [1] TRUE
## internals of is.hadamard(M)
H<-2*M-1
## HH^T is diagonal for any Hadamard matrix
H%*%t(H)
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 12 0 0 0 0 0 0 0 0 0 0 0
#> [2,] 0 12 0 0 0 0 0 0 0 0 0 0
#> [3,] 0 0 12 0 0 0 0 0 0 0 0 0
#> [4,] 0 0 0 12 0 0 0 0 0 0 0 0
#> [5,] 0 0 0 0 12 0 0 0 0 0 0 0
#> [6,] 0 0 0 0 0 12 0 0 0 0 0 0
#> [7,] 0 0 0 0 0 0 12 0 0 0 0 0
#> [8,] 0 0 0 0 0 0 0 12 0 0 0 0
#> [9,] 0 0 0 0 0 0 0 0 12 0 0 0
#> [10,] 0 0 0 0 0 0 0 0 0 12 0 0
#> [11,] 0 0 0 0 0 0 0 0 0 0 12 0
#> [12,] 0 0 0 0 0 0 0 0 0 0 0 12