Description Usage Arguments Details Value Warning See Also Examples

This function flips an object `newObject`

of class `funData`

,
`irregFunData`

or `multiFunData`

with respect to a reference object
`refObject`

of the same class (or of class `funData`

, if
`newObject`

is irregular). This is particularly useful when dealing with
functional principal components, as they are only defined up to a sign
change. For details, see below.

1 |

`refObject` |
An object of class |

`newObject` |
An object of class |

`...` |
Further parameters passed to |

Functional principal component analysis is an important tool in functional
data analysis. Just as eigenvectors, eigenfunctions (or functional principal
components) are only defined up to a sign change. This may lead to
difficulties in simulation studies or when bootstrapping pointwise confidence
bands, as in these cases one wants the estimates to have the same
"orientation" as the true function (in simulation settings) or the
non-bootstrapped estimate (when calculating bootstrap confidence bands). This
function allows to flip (i.e. multiply by *-1*) all observations in
`newObject`

that have a different orientation than their counterparts in
`refData`

.

Technically, the function compares the distance between `newObject`

and
`refObject`

*||| f_{new} -
f_{ref}|||*

and the distance between `newObject`

and
`-1 * refObject`

*||| f_{new} +
f_{ref}|||.*

If `newObject`

is closer to `-1 * refObject`

, it is
flipped, i.e. multiplied by -1.

An object of the same class as `newData`

with flipped
observations.

The function is currently implemented only for functional data with one- and two-dimensional domains.

`funData`

, `irregFunData`

,
`multiFunData`

, `Arith.funData`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | ```
### Univariate
argvals <- seq(0,2*pi,0.01)
refData <- funData(argvals, rbind(sin(argvals))) # one observation as reference
newData <- funData(argvals, outer(sample(c(-1,1), 11, replace = TRUE) * seq(0.75, 1.25, by = 0.05),
sin(argvals)))
oldpar <- par(no.readonly = TRUE)
par(mfrow = c(1,2))
plot(newData, col = "grey", main = "Original data")
plot(refData, col = "red", lwd = 2, add = TRUE)
plot(flipFuns(refData, newData), col = "grey", main = "Flipped data")
plot(refData, col = "red", lwd = 2, add = TRUE)
### Univariate (irregular)
ind <- replicate(11, sort(sample(1:length(argvals), sample(5:10,1)))) # sample observation points
argvalsIrreg <- lapply(ind, function(i){argvals[i]})
argvalsIrregAll <- unique(sort(unlist(argvalsIrreg)))
# one observation as reference (fully observed)
refDataFull <- funData(argvals, rbind(sin(argvals)))
# one observation as reference (irregularly observed)
refDataIrreg <- irregFunData(argvals = list(argvalsIrregAll), X = list(sin(argvalsIrregAll)))
newData <- irregFunData(argvals = argvalsIrreg, X = mapply(function(x, a, s){s * a * sin(x)},
x = argvalsIrreg, a = seq(0.75, 1.25, by = 0.05), s = sample(c(-1,1), 11, replace = TRUE)))
plot(newData, col = "grey", main = "Original data (regular reference)")
plot(refDataFull, col = "red", lwd = 2, add = TRUE)
plot(flipFuns(refDataFull, newData), col = "grey", main = "Flipped data")
plot(refDataFull, col = "red", lwd = 2, add = TRUE)
plot(newData, col = "grey", main = "Original data (irregular reference)")
plot(refDataIrreg, col = "red", lwd = 2, add = TRUE)
plot(flipFuns(refDataIrreg, newData), col = "grey", main = "Flipped data")
plot(refDataIrreg, col = "red", lwd = 2, add = TRUE)
### Multivariate
refData <- multiFunData(funData(argvals, rbind(sin(argvals))), # one observation as reference
funData(argvals, rbind(cos(argvals))))
sig <- sample(c(-1,1), 11, replace = TRUE)
newData <- multiFunData(funData(argvals, outer(sig * seq(0.75, 1.25, by = 0.05), sin(argvals))),
funData(argvals, outer(sig * seq(0.75, 1.25, by = 0.05), cos(argvals))))
par(mfrow = c(2,2))
plot(newData[[1]], col = topo.colors(11), main = "Original data")
plot(refData[[1]], col = "red", lwd = 2, add = TRUE)
plot(newData[[2]], col = topo.colors(11), main = "Original data")
plot(refData[[2]], col = "red", lwd = 2, add = TRUE)
plot(flipFuns(refData, newData)[[1]], col = topo.colors(11), main = "Flipped data")
plot(refData[[1]], col = "red", lwd = 2, add = TRUE)
plot(flipFuns(refData, newData)[[2]], col = topo.colors(11), main = "Flipped data")
plot(refData[[2]], col = "red", lwd = 2, add = TRUE)
par(oldpar)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.