Fitting Bidimensional or Tridimensional Regression / Geometric Transformation Models via Two Tables.
Source:R/fit_transformation_df.R
fit_transformation_df.Rd
Fits Bidimensional or Tridimensional regression / geometric transformation models using
Stan engine. Two sets of coordinates are supplied via iv
(for an independent variable)
and dv
(for the dependent one). The two tables must have the same dimensions
(both N×2 or N×3).
For the 2D data, you can fit "translation"
(2 for translation only), "euclidean"
(4 parameters: 2 for translation, 1 for scaling, and 1 for rotation),
"affine"
(6 parameters: 2 for translation and 4 that jointly describe scaling, rotation and sheer),
or "projective"
(8 parameters: affine plus 2 additional parameters to account for projection).
For 3D data, you can fit "translation"
(3 for translation only), "euclidean_x"
, "euclidean_y"
,
"euclidean_z"
(5 parameters: 3 for translation scale, 1 for rotation, and 1 for scaling),
"affine"
(12 parameters: 3 for translation and 9 to account for scaling, rotation, and sheer),
and "projective"
(15 parameters: affine plus 3 additional parameters to account for projection).
transformations.
For details on transformation matrices and computation of scale and rotation parameters please
see vignette("transformation_matrices", package = "TriDimRegression")
Arguments
- iv
a data frame containing independent variable, must by numeric only, N×2 or N×3.
- dv
a data frame containing dependent variable, must by numeric only, N×2 or N×3.
- transformation
the transformation to be used:
"translation"
(both 2D and 3D),"euclidean"
(2D),"euclidean_x"
,"euclidean_y"
,"euclidean_z"
(3D, rotation about, respectively, x, y, and z axis),"affine"
(2D and 3D), or"projective"
(2D and 3D).- priors
named list of parameters for prior distributions of parameters
a
(translation, normal distribution),b
(all other parameters, normal distribution), andsigma
(residual variance, exponential). E.g.,list("a" = c(0, 10), "b"= c(0, 1), "sigma"=1)
. Default priors are"a" = c(0, max_absolute_difference_in_means(d, iv)) / 2)
,"b" = c(0, max_absolute_difference_in_means(d, iv)) / 2)
,"sigma" = 1 * sd(dv)
.- chains
Number of chains for sampling.
- cores
Number of CPU cores to use for sampling. If omitted, all available cores are used.
- ...
Additional arguments passed to
sampling
function.
Value
A tridim_transformation object
Examples
# Geometric transformations of 2D data
euc2 <- fit_transformation_df(NakayaData[, 1:2], NakayaData[, 3:4], 'euclidean')
#>
#> SAMPLING FOR MODEL 'tridim_transformation' NOW (CHAIN 1).
#> Chain 1:
#> Chain 1: Gradient evaluation took 0 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1:
#> Chain 1:
#> Chain 1: Iteration: 1 / 2000 [ 0%] (Warmup)
#> Chain 1: Iteration: 200 / 2000 [ 10%] (Warmup)
#> Chain 1: Iteration: 400 / 2000 [ 20%] (Warmup)
#> Chain 1: Iteration: 600 / 2000 [ 30%] (Warmup)
#> Chain 1: Iteration: 800 / 2000 [ 40%] (Warmup)
#> Chain 1: Iteration: 1000 / 2000 [ 50%] (Warmup)
#> Chain 1: Iteration: 1001 / 2000 [ 50%] (Sampling)
#> Chain 1: Iteration: 1200 / 2000 [ 60%] (Sampling)
#> Chain 1: Iteration: 1400 / 2000 [ 70%] (Sampling)
#> Chain 1: Iteration: 1600 / 2000 [ 80%] (Sampling)
#> Chain 1: Iteration: 1800 / 2000 [ 90%] (Sampling)
#> Chain 1: Iteration: 2000 / 2000 [100%] (Sampling)
#> Chain 1:
#> Chain 1: Elapsed Time: 0.106 seconds (Warm-up)
#> Chain 1: 0.097 seconds (Sampling)
#> Chain 1: 0.203 seconds (Total)
#> Chain 1:
tr3 <- fit_transformation_df(Face3D_W070, Face3D_W097, transformation ='translation')
#>
#> SAMPLING FOR MODEL 'tridim_transformation' NOW (CHAIN 1).
#> Chain 1:
#> Chain 1: Gradient evaluation took 0 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1:
#> Chain 1:
#> Chain 1: Iteration: 1 / 2000 [ 0%] (Warmup)
#> Chain 1: Iteration: 200 / 2000 [ 10%] (Warmup)
#> Chain 1: Iteration: 400 / 2000 [ 20%] (Warmup)
#> Chain 1: Iteration: 600 / 2000 [ 30%] (Warmup)
#> Chain 1: Iteration: 800 / 2000 [ 40%] (Warmup)
#> Chain 1: Iteration: 1000 / 2000 [ 50%] (Warmup)
#> Chain 1: Iteration: 1001 / 2000 [ 50%] (Sampling)
#> Chain 1: Iteration: 1200 / 2000 [ 60%] (Sampling)
#> Chain 1: Iteration: 1400 / 2000 [ 70%] (Sampling)
#> Chain 1: Iteration: 1600 / 2000 [ 80%] (Sampling)
#> Chain 1: Iteration: 1800 / 2000 [ 90%] (Sampling)
#> Chain 1: Iteration: 2000 / 2000 [100%] (Sampling)
#> Chain 1:
#> Chain 1: Elapsed Time: 0.308 seconds (Warm-up)
#> Chain 1: 0.257 seconds (Sampling)
#> Chain 1: 0.565 seconds (Total)
#> Chain 1: