itdr-vignette

Overview

itdr is a system for estimating a basis of the central and central mean subspaces or selecting sufficient dimension reduction variables in regression using integral transformation methods. This vignette demonstrate the usage of functions within the itdr package across various datasets, including automobile, recumbent ,pdb, prostate, and raman.

Chapter 1: Installation

1.1: Install itdr package

The itdr R package can be installed in three ways:

install.packages("~/itdr.zip")
library(itdr)
library(devtools)
install_github("TharinduPDeAlwis/itdr")
library(itdr)

Chpater 2: Functions for Fourier and Convolution Transformation Methods in Sufficient Dimension Reduction (SDR) Subspace Estimation

This section provides an overview of the functions within the itdr package that utilize the Fourier transformation method to estimate sufficient dimension reduction (SDR) subspaces in regression. Specifically, we focus on the Fourier transformation method. However, by passing the argument method="CM" to the itdr() function, the convolution transformation method can be employed.

Before estimating the SDR subspaces, it is essential to determine the dimension (d) of the SDR subspace and tuning parameters sw2, and st2. Section 2.1 demonstrates the estimation of dimension (d) is demonstrated. The estimation of the tuning parameter sw2 for both the central subspace (CS) and the central mean subspace (CMS), is explained in Section 2.2.1. Moreover, Section 2.2.2 outlines the estimation of st2 for the central subspace (CS). Finally, The practical application of the itdr() function for estimating the central subspace is provided in Section 2.3.

2.1: Estimating the dimension (d) of sufficient dimension reduction (SDR) subspaces

A bootstrap estimation procedure is employed to estimate the unknown dimension (d) of sufficient dimension reduction subspaces, as detailed in Zhu and Zeng (2006). The d.boots() function can be used to implement this estimation. To estimate the dimension (d) of the central subspace of the automobile dataset, with response variable \(y\), and predictor variables \(x\) as specified in Zhu and Zeng (2006), the following arguments are passed to the d.boots() function: space="pdf" to estimate the CS, xdensity="normal" for assuming normal density for the predictors, and method="FM" for utilizing the Fourier transformation method.

library(itdr)
data(automobile)
automobile.na <- na.omit(automobile)
# prepare response and predictor variables
auto_y <- log(automobile.na[, 26])
auto_xx <- automobile.na[, c(10, 11, 12, 13, 14, 17, 19, 20, 21, 22, 23, 24, 25)]
auto_x <- scale(auto_xx) # Standardize the predictors
# call to the d.boots() function with required #arguments
d_est <- d.boots(auto_y, auto_x,
  var_plot = TRUE, space = "pdf",
  xdensity = "normal", method = "FM"
)
#> 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |=====                                                                 |   8%
  |                                                                            
  |===========                                                           |  15%
  |                                                                            
  |================                                                      |  23%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |===========================                                           |  38%
  |                                                                            
  |================================                                      |  46%
  |                                                                            
  |======================================                                |  54%
  |                                                                            
  |===========================================                           |  62%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |======================================================                |  77%
  |                                                                            
  |===========================================================           |  85%
  |                                                                            
  |=================================================================     |  92%
  |                                                                            
  |======================================================================| 100%

auto_d <- d_est$d.hat
auto_d
#> [1] 2

Here, the estimate of the dimension of the central subspace for ‘automobile’ data is 2, i.e., d_hat=2.

2.2: Estimating tuning parameters and bandwidth parameters for Gaussian kernel density estimation

In the process of estimating SDR subspaces using the Fourier method, two crucial parameters need to be determined: sw2 and st2. The sw2. While sw2 is required for both the central mean (CMS) and the central subspace (CS), st2 is only necessary for the central subspace. The code in Section 2.2.1 demonstrates the use of function wx() to estimate the tuning parameter sw2, while Section 2.2.2 elaborates on using the wy() function to estimate the tuning parameter st2.

2.2.1: Estimate sw2

To estimate the tuning parameter sw2, the wx() function is utilized with the subspace option set to either space="pdf" for the CS and space="mean" for the CMS. Other parameters remain fixed during the estimation process. The following R code chunk demonstrates the estimation of sw2 for the central subspace.

auto_d <- 2 # The estimated value from Section 2.1
candidate_list<-seq(0.05, 1, by = 0.01)
auto_sw2 <- hyperPara(auto_y, auto_x, auto_d, range = candidate_list,xdensity = "normal", B = 500, space = "pdf", method = "FM", hyper = "wx")
#> 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |=                                                                     |   1%
  |                                                                            
  |=                                                                     |   2%
  |                                                                            
  |==                                                                    |   3%
  |                                                                            
  |===                                                                   |   4%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=====                                                                 |   7%
  |                                                                            
  |======                                                                |   8%
  |                                                                            
  |=======                                                               |   9%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |========                                                              |  11%
  |                                                                            
  |=========                                                             |  12%
  |                                                                            
  |=========                                                             |  14%
  |                                                                            
  |==========                                                            |  15%
  |                                                                            
  |===========                                                           |  16%
  |                                                                            
  |============                                                          |  17%
  |                                                                            
  |============                                                          |  18%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |==============                                                        |  20%
  |                                                                            
  |===============                                                       |  21%
  |                                                                            
  |===============                                                       |  22%
  |                                                                            
  |================                                                      |  23%
  |                                                                            
  |=================                                                     |  24%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |==================                                                    |  26%
  |                                                                            
  |===================                                                   |  27%
  |                                                                            
  |====================                                                  |  28%
  |                                                                            
  |====================                                                  |  29%
  |                                                                            
  |=====================                                                 |  30%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |=======================                                               |  32%
  |                                                                            
  |=======================                                               |  33%
  |                                                                            
  |========================                                              |  34%
  |                                                                            
  |=========================                                             |  35%
  |                                                                            
  |==========================                                            |  36%
  |                                                                            
  |==========================                                            |  38%
  |                                                                            
  |===========================                                           |  39%
  |                                                                            
  |============================                                          |  40%
  |                                                                            
  |============================                                          |  41%
  |                                                                            
  |=============================                                         |  42%
  |                                                                            
  |==============================                                        |  43%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |===============================                                       |  45%
  |                                                                            
  |================================                                      |  46%
  |                                                                            
  |=================================                                     |  47%
  |                                                                            
  |==================================                                    |  48%
  |                                                                            
  |==================================                                    |  49%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |====================================                                  |  51%
  |                                                                            
  |====================================                                  |  52%
  |                                                                            
  |=====================================                                 |  53%
  |                                                                            
  |======================================                                |  54%
  |                                                                            
  |=======================================                               |  55%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |========================================                              |  57%
  |                                                                            
  |=========================================                             |  58%
  |                                                                            
  |==========================================                            |  59%
  |                                                                            
  |==========================================                            |  60%
  |                                                                            
  |===========================================                           |  61%
  |                                                                            
  |============================================                          |  62%
  |                                                                            
  |============================================                          |  64%
  |                                                                            
  |=============================================                         |  65%
  |                                                                            
  |==============================================                        |  66%
  |                                                                            
  |===============================================                       |  67%
  |                                                                            
  |===============================================                       |  68%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |=================================================                     |  70%
  |                                                                            
  |==================================================                    |  71%
  |                                                                            
  |==================================================                    |  72%
  |                                                                            
  |===================================================                   |  73%
  |                                                                            
  |====================================================                  |  74%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |=====================================================                 |  76%
  |                                                                            
  |======================================================                |  77%
  |                                                                            
  |=======================================================               |  78%
  |                                                                            
  |=======================================================               |  79%
  |                                                                            
  |========================================================              |  80%
  |                                                                            
  |=========================================================             |  81%
  |                                                                            
  |==========================================================            |  82%
  |                                                                            
  |==========================================================            |  83%
  |                                                                            
  |===========================================================           |  84%
  |                                                                            
  |============================================================          |  85%
  |                                                                            
  |=============================================================         |  86%
  |                                                                            
  |=============================================================         |  88%
  |                                                                            
  |==============================================================        |  89%
  |                                                                            
  |===============================================================       |  90%
  |                                                                            
  |===============================================================       |  91%
  |                                                                            
  |================================================================      |  92%
  |                                                                            
  |=================================================================     |  93%
  |                                                                            
  |==================================================================    |  94%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |===================================================================   |  96%
  |                                                                            
  |====================================================================  |  97%
  |                                                                            
  |===================================================================== |  98%
  |                                                                            
  |===================================================================== |  99%
  |                                                                            
  |======================================================================| 100%
auto_sw2$wx.hat # we get the estimator for sw2 as 0.09
#> [1] 0.05

2.2.2: Estimate st2

The estimate of the tuning parameter st2, the wy() function is employed. Other parameters are fixed during the estimation. Notice that, there is no need to specify the space, because the tuning parameter st2 exclusively required for the central subspace (CS).

auto_d <- 2 # Estimated value from Section 2.1
auto_st2 <- hyperPara(auto_y, auto_x, auto_d, wx = 0.1, range = seq(0.1, 1, by = 0.1), xdensity = "normal", method = "FM", hyper = "wy")
#> 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |==============                                                        |  20%
  |                                                                            
  |=====================                                                 |  30%
  |                                                                            
  |============================                                          |  40%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |==========================================                            |  60%
  |                                                                            
  |=================================================                     |  70%
  |                                                                            
  |========================================================              |  80%
  |                                                                            
  |===============================================================       |  90%
  |                                                                            
  |======================================================================| 100%
auto_st2$wy.hat # we get the estimator for st2=0.9
#> [1] 0.8

2.2.3: Estimate the bandwidth (h) of the Gaussian kernel density function

When the distribution function of the predictor variables is unknown, Gaussian kernel density estimation is utilized to approximate the density function of the predictor variables. In such cases, the bandwidth parameter needs to be estimated, especially when xdensity="kernel" is specified. The wh() function uses the bootstrap estimator to estimate the bandwidth of the Gaussian kernel density estimation.

h_hat <- hyperPara(auto_y, auto_x, auto_d, wx = 5, wy = 0.1, range = seq(0.1, 2, by = .1), space = "pdf", method = "FM", hyper = "wh")
#> 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |==========                                                            |  15%
  |                                                                            
  |==============                                                        |  20%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |=====================                                                 |  30%
  |                                                                            
  |========================                                              |  35%
  |                                                                            
  |============================                                          |  40%
  |                                                                            
  |================================                                      |  45%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |======================================                                |  55%
  |                                                                            
  |==========================================                            |  60%
  |                                                                            
  |==============================================                        |  65%
  |                                                                            
  |=================================================                     |  70%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |========================================================              |  80%
  |                                                                            
  |============================================================          |  85%
  |                                                                            
  |===============================================================       |  90%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |======================================================================| 100%
# Bandwidth estimator for Gaussian kernel density estimation for central subspace
h_hat$h.hat # we have the estimator as h_hat=0.1
#> [1] 0.2

Ensure proper parameterization and selection of options for accurate estimation.

2.3: Estimate SDR subspaces

Having outlined the estimation procedure for tuning parameters in the Fourier method in Sections 2.1-2.2, we are now prepared to estimate the SDR subspaces. Zhu and Zeng (2006) utilized the Fourier method to facilitate the estimation of the SDR subspaces when the predictors follow a multivariate normal distribution. However, when the predictor variables follow an elliptical distribution or, more generally, when the distribution of the predictors is unknown, the predictors’ distribution function is approximated using Gaussian kernel density estimation (Zeng and Zhu, 2010). The itdr() function is employed to estimate the SDR subspaces under the FM method as follows. Since the default setting of the itdr() function has method="FM", it is optional to specify the method as “FM”.

library(itdr)
data(automobile)
head(automobile)
#>   symboling normalized        make fuelType aspiration #doors   bodyStyle
#> 1         3         NA alfa-romero      gas        std    two convertible
#> 2         3         NA alfa-romero      gas        std    two convertible
#> 3         1         NA alfa-romero      gas        std    two   hatchback
#> 4         2        164        audi      gas        std   four       sedan
#> 5         2        164        audi      gas        std   four       sedan
#> 6         2         NA        audi      gas        std    two       sedan
#>   driveWheel engineLoc wheelBase length width height curbWeight engineType
#> 1        rwd     front      88.6  168.8  64.1   48.8       2548       dohc
#> 2        rwd     front      88.6  168.8  64.1   48.8       2548       dohc
#> 3        rwd     front      94.5  171.2  65.5   52.4       2823       ohcv
#> 4        fwd     front      99.8  176.6  66.2   54.3       2337        ohc
#> 5        4wd     front      99.4  176.6  66.4   54.3       2824        ohc
#> 6        fwd     front      99.8  177.3  66.3   53.1       2507        ohc
#>   #Cylinder engineSize fuelSys bore stroke compession norsepower peak_rpm
#> 1      four        130    mpfi 3.47   2.68        9.0        111     5000
#> 2      four        130    mpfi 3.47   2.68        9.0        111     5000
#> 3       six        152    mpfi 2.68   3.47        9.0        154     5000
#> 4      four        109    mpfi 3.19   3.40       10.0        102     5500
#> 5      five        136    mpfi 3.19   3.40        8.0        115     5500
#> 6      five        136    mpfi 3.19   3.40        8.5        110     5500
#>   city_rpm highwayMPG price
#> 1       21         27 13495
#> 2       21         27 16500
#> 3       19         26 16500
#> 4       24         30 13950
#> 5       18         22 17450
#> 6       19         25 15250
df <- cbind(automobile[, c(26, 10, 11, 12, 13, 14, 17, 19, 20, 21, 22, 23, 24, 25)])
dff <- as.matrix(df)
automobi <- dff[complete.cases(dff), ]
d <- 2
# Estimated value from Section 2.1
wx <- .14 # Estimated value from Section 2.2.1
wy <- .9 # Estimated value from Section 2.2.2
wh <- 1.5 # Estimated value from Section 2.2.3
p <- 13 # Estimated value from Section 2.3
y <- automobi[, 1]
x <- automobi[, c(2:14)]
xt <- scale(x)
# Distribution of the predictors is a normal distribution
fit.F_CMS <- itdr(y, xt, d, wx, wy, wh, space = "pdf", xdensity = "normal", method = "FM")
round(fit.F_CMS$eta_hat, 2)
#>        [,1]  [,2]
#>  [1,] -0.10  0.33
#>  [2,]  0.26 -0.19
#>  [3,]  0.07 -0.02
#>  [4,] -0.01 -0.13
#>  [5,] -0.57  0.28
#>  [6,]  0.22 -0.37
#>  [7,] -0.04 -0.11
#>  [8,]  0.16  0.23
#>  [9,] -0.20 -0.15
#> [10,] -0.31  0.18
#> [11,] -0.08 -0.26
#> [12,] -0.49  0.50
#> [13,]  0.36 -0.43

# Distribution of the predictors is a unknown (using kernel method)
fit.F_CMS <- itdr(y, xt, d, wx, wy, wh, space = "pdf", xdensity = "kernel", method = "FM")
round(fit.F_CMS$eta_hat, 2)
#>        [,1]  [,2]
#>  [1,]  0.09 -0.04
#>  [2,]  0.01  0.07
#>  [3,] -0.01  0.02
#>  [4,]  0.01  0.00
#>  [5,] -0.19 -0.10
#>  [6,]  0.26  0.89
#>  [7,]  0.06 -0.32
#>  [8,] -0.14 -0.18
#>  [9,] -0.89  0.03
#> [10,] -0.07 -0.02
#> [11,]  0.15  0.04
#> [12,]  0.19  0.20
#> [13,] -0.12 -0.10

Chapter 4: Estimating the Central Subspace in Regression using Fourier Transformation Approach on Inverse Dimension Reduction

In this section, we demonstrate the functions within the itdr package related to the Fourier transformation approach on inverse dimension reduction. Section 4.1 illustrates the use of function to estimate the dimension of the central subspace using the Fourier transformation approach on inverse dimension reduction, while Section 4.2 outlines the estimation process for the CS itself.

4.1: Estimating d

The estimation of the dimension of the CS can be achieved using the d.test() function which provides outputs of three different p-values for three different test statistics: the Weighted Chi-square test statistic (Weng and Yin, 2018), the Scaled test statistic (Bentler and Xie, 2000), and the Adjusted test statistic (Bentler and Xie, 2000). Suppose m is the candidate dimension of the CS to be tested (H_0: d=m), then the following R code demonstrates testing a candidate value m (<p) for dimension of the CS of the planning database (PDB).

library(itdr)
data(pdb)
colnames(pdb) <- NULL
p <- 15
# select predictor vecotr (y) and response variables (X) according to Weng and Weng and Yin, (2018).
df <- pdb[, c(79, 73, 77, 103, 112, 115, 124, 130, 132, 145, 149, 151, 153, 155, 167, 169)]
dff <- as.matrix(df)
# remove the NA rows
planingdb <- dff[complete.cases(dff), ]

y <- planingdb[, 1] # n-dimensionl response vector
x <- planingdb[, c(2:(p + 1))] # raw desing matrix
x <- x + 0.5
# desing matrix after tranformations
xt <- cbind(
  x[, 1]^(.33), x[, 2]^(.33), x[, 3]^(.57), x[, 4]^(.33), x[, 5]^(.4),
  x[, 6]^(.5), x[, 7]^(.33), x[, 8]^(.16), x[, 9]^(.27), x[, 10]^(.5),
  x[, 11]^(.5), x[, 12]^(.33), x[, 13]^(.06), x[, 14]^(.15), x[, 15]^(.1)
)
m <- 1
W <- sapply(50, rnorm)
# run the hypothsis tests
d.test(y, x, m)
#>   Hypothesis Tests for selecting sufficient dimension (d)
#>  Null: d=m    vs  Alternative: d>m 
#>  
#>  Test         W.Ch.Sq         Scaled      Adjusted  
#>  p-value      0.9402      1       0.8940887

4.2: Estimating central subspace

After selecting the dimension of the CS as described in Section 4.1, then, an estimator for the CS can be obtained using the itdr() function. The following R chunk illustrates the use of the itdr() function to estimate the CS for planning database (PDB).

library(itdr)
data(pdb)
colnames(pdb) <- NULL
p <- 15
# select predictor vecotr (y) and response variables (X) according to Weng and Weng and Yin, (2018).
df <- pdb[, c(79, 73, 77, 103, 112, 115, 124, 130, 132, 145, 149, 151, 153, 155, 167, 169)]
dff <- as.matrix(df)
# remove the NA rows
planingdb <- dff[complete.cases(dff), ]

y <- planingdb[, 1] # n-dimensionl response vector
x <- planingdb[, c(2:(p + 1))] # raw desing matrix
x <- x + 0.5
# desing matrix after tranformations give in Weng and Yin, (2018).
xt <- cbind(
  x[, 1]^(.33), x[, 2]^(.33), x[, 3]^(.57), x[, 4]^(.33), x[, 5]^(.4),
  x[, 6]^(.5), x[, 7]^(.33), x[, 8]^(.16), x[, 9]^(.27), x[, 10]^(.5),
  x[, 11]^(.5), x[, 12]^(.33), x[, 13]^(.06), x[, 14]^(.15), x[, 15]^(.1)
)

d <- 1 # estimated dimension of the CS from Section 4.1
invFM.fit <- itdr(y, x, d, m = 50, method = "invFM", x.scale = FALSE) # estimated basis
betahat <- invFM.fit$eta_hat

plot(y ~ xt %*% betahat,
  xlab = "First reduced predictor",
  ylab = "Health insurance coverage"
)

Ensure accurate specification of inputs and follow methodological guidelines for reliable estimation.

Chapter 5: A Minimum Discrepancy Approach with Fourier Transfrom in Sufficient Dimension Reduciton

In this section, we describe the mitdr() function within the itdr package, designed to estimates the sufficient dimension reduction subspaces in multivariate regression using five different approaches proposed by Weng and Yin (2022). Below is an example showing the estimation of sufficient dimension reduction subspace using FT-DRIRE approach for prostate dataset (Stamey et al. 1989).

library(itdr)
data(prostate)
X <- as.matrix(prostate[, 1:8])
Y <- matrix(prostate[, 9], ncol = 1)
fit.ftire <- mitdr(X, Y, d = 2, m = 10, method = "FT-IRE")
betahat <- fit.ftire$Beta_hat
betahat
#>              [,1]         [,2]
#> [1,] -0.643969773 -0.090157354
#> [2,] -0.619511855 -0.255375233
#> [3,]  0.014352745 -0.009681973
#> [4,] -0.136341586 -0.078471708
#> [5,] -0.327797541  0.911485848
#> [6,]  0.165756437  0.043752020
#> [7,] -0.218516733 -0.296112877
#> [8,] -0.006080828  0.000257746
newx <- X %*% betahat
plot(Y ~ newx[, 1],
  xlab = "First reduced predictor",
  ylab = paste0(expression(log), "(antigen)", sep = "")
)

plot(Y ~ newx[, 2],
  xlab = "Second reduced predictor",
  ylab = paste0(expression(log), "(antigen)", sep = "")
)

Chapter 6: Fourier Transform Sparse Inverse Regression Estimators for Sufficient Variable Selection

In this section, we introduce the mitdr() function within the itdr package, designed for selecting the sufficient variables in multivariate regression using Fourier transformation method (Weng, 2022). The following R chunk demonstrates the sufficient variable selection for the prostate dataset within the itdr package. In this function, we set lambda=0.5. However, if lambda is not specified, the cross validation method is utilized to determine the optimal labmda value.

data(raman)
Y <- as.matrix(raman[, c(1100)]) ## percentage of total fat content
X <- as.matrix(raman[c(2:501)]) ## first 500 wavelength variables
out <- mitdr(X, Y, d = 1, m = 30, method = "admmft", lambda = 0.5, sparse.cov = TRUE, x.scale = TRUE)
estbeta <- out$Beta_hat
estbeta
#>                 [,1]
#>   [1,]  0.000000e+00
#>   [2,]  0.000000e+00
#>   [3,]  0.000000e+00
#>   [4,]  0.000000e+00
#>   [5,]  0.000000e+00
#>   [6,]  0.000000e+00
#>   [7,]  0.000000e+00
#>   [8,]  0.000000e+00
#>   [9,]  0.000000e+00
#>  [10,]  0.000000e+00
#>  [11,]  0.000000e+00
#>  [12,]  0.000000e+00
#>  [13,]  0.000000e+00
#>  [14,]  0.000000e+00
#>  [15,]  0.000000e+00
#>  [16,]  0.000000e+00
#>  [17,]  0.000000e+00
#>  [18,]  0.000000e+00
#>  [19,]  0.000000e+00
#>  [20,]  0.000000e+00
#>  [21,]  0.000000e+00
#>  [22,]  0.000000e+00
#>  [23,]  0.000000e+00
#>  [24,]  0.000000e+00
#>  [25,]  0.000000e+00
#>  [26,]  0.000000e+00
#>  [27,]  0.000000e+00
#>  [28,]  0.000000e+00
#>  [29,]  0.000000e+00
#>  [30,]  0.000000e+00
#>  [31,]  0.000000e+00
#>  [32,]  0.000000e+00
#>  [33,]  0.000000e+00
#>  [34,]  0.000000e+00
#>  [35,]  0.000000e+00
#>  [36,]  0.000000e+00
#>  [37,]  0.000000e+00
#>  [38,]  0.000000e+00
#>  [39,]  0.000000e+00
#>  [40,]  0.000000e+00
#>  [41,]  0.000000e+00
#>  [42,]  0.000000e+00
#>  [43,]  0.000000e+00
#>  [44,]  0.000000e+00
#>  [45,]  0.000000e+00
#>  [46,]  0.000000e+00
#>  [47,]  0.000000e+00
#>  [48,]  0.000000e+00
#>  [49,]  0.000000e+00
#>  [50,]  0.000000e+00
#>  [51,]  0.000000e+00
#>  [52,]  0.000000e+00
#>  [53,]  0.000000e+00
#>  [54,]  0.000000e+00
#>  [55,]  0.000000e+00
#>  [56,]  0.000000e+00
#>  [57,]  0.000000e+00
#>  [58,]  0.000000e+00
#>  [59,]  0.000000e+00
#>  [60,]  0.000000e+00
#>  [61,]  0.000000e+00
#>  [62,]  0.000000e+00
#>  [63,]  0.000000e+00
#>  [64,]  0.000000e+00
#>  [65,]  0.000000e+00
#>  [66,]  0.000000e+00
#>  [67,]  0.000000e+00
#>  [68,]  0.000000e+00
#>  [69,]  0.000000e+00
#>  [70,]  0.000000e+00
#>  [71,]  0.000000e+00
#>  [72,]  0.000000e+00
#>  [73,]  0.000000e+00
#>  [74,]  0.000000e+00
#>  [75,]  0.000000e+00
#>  [76,]  0.000000e+00
#>  [77,]  0.000000e+00
#>  [78,]  0.000000e+00
#>  [79,]  0.000000e+00
#>  [80,]  0.000000e+00
#>  [81,]  0.000000e+00
#>  [82,]  0.000000e+00
#>  [83,]  0.000000e+00
#>  [84,]  0.000000e+00
#>  [85,]  0.000000e+00
#>  [86,]  0.000000e+00
#>  [87,]  0.000000e+00
#>  [88,]  0.000000e+00
#>  [89,]  0.000000e+00
#>  [90,]  0.000000e+00
#>  [91,]  0.000000e+00
#>  [92,]  0.000000e+00
#>  [93,]  0.000000e+00
#>  [94,]  0.000000e+00
#>  [95,]  0.000000e+00
#>  [96,]  0.000000e+00
#>  [97,]  0.000000e+00
#>  [98,]  0.000000e+00
#>  [99,]  0.000000e+00
#> [100,]  0.000000e+00
#> [101,]  0.000000e+00
#> [102,]  0.000000e+00
#> [103,]  0.000000e+00
#> [104,]  0.000000e+00
#> [105,]  0.000000e+00
#> [106,]  0.000000e+00
#> [107,]  0.000000e+00
#> [108,]  0.000000e+00
#> [109,]  0.000000e+00
#> [110,]  0.000000e+00
#> [111,]  0.000000e+00
#> [112,]  0.000000e+00
#> [113,]  0.000000e+00
#> [114,]  0.000000e+00
#> [115,]  0.000000e+00
#> [116,]  0.000000e+00
#> [117,]  0.000000e+00
#> [118,]  0.000000e+00
#> [119,]  0.000000e+00
#> [120,]  0.000000e+00
#> [121,]  0.000000e+00
#> [122,]  0.000000e+00
#> [123,]  0.000000e+00
#> [124,]  0.000000e+00
#> [125,]  0.000000e+00
#> [126,]  0.000000e+00
#> [127,]  0.000000e+00
#> [128,]  0.000000e+00
#> [129,]  0.000000e+00
#> [130,]  0.000000e+00
#> [131,]  0.000000e+00
#> [132,]  0.000000e+00
#> [133,]  0.000000e+00
#> [134,]  0.000000e+00
#> [135,]  0.000000e+00
#> [136,]  0.000000e+00
#> [137,]  0.000000e+00
#> [138,]  0.000000e+00
#> [139,]  0.000000e+00
#> [140,]  0.000000e+00
#> [141,]  0.000000e+00
#> [142,]  0.000000e+00
#> [143,]  0.000000e+00
#> [144,]  0.000000e+00
#> [145,]  0.000000e+00
#> [146,]  0.000000e+00
#> [147,]  0.000000e+00
#> [148,]  0.000000e+00
#> [149,]  0.000000e+00
#> [150,]  0.000000e+00
#> [151,]  0.000000e+00
#> [152,]  0.000000e+00
#> [153,]  0.000000e+00
#> [154,]  0.000000e+00
#> [155,]  0.000000e+00
#> [156,]  0.000000e+00
#> [157,]  0.000000e+00
#> [158,]  0.000000e+00
#> [159,]  0.000000e+00
#> [160,]  0.000000e+00
#> [161,]  0.000000e+00
#> [162,]  0.000000e+00
#> [163,]  0.000000e+00
#> [164,]  0.000000e+00
#> [165,]  0.000000e+00
#> [166,]  0.000000e+00
#> [167,]  0.000000e+00
#> [168,]  0.000000e+00
#> [169,]  0.000000e+00
#> [170,]  0.000000e+00
#> [171,]  0.000000e+00
#> [172,]  8.094899e-02
#> [173,]  9.340679e-02
#> [174,]  8.702066e-02
#> [175,]  3.624656e-02
#> [176,]  2.303719e-03
#> [177,]  0.000000e+00
#> [178,]  0.000000e+00
#> [179,]  0.000000e+00
#> [180,]  0.000000e+00
#> [181,]  0.000000e+00
#> [182,]  0.000000e+00
#> [183,]  0.000000e+00
#> [184,]  0.000000e+00
#> [185,]  0.000000e+00
#> [186,]  0.000000e+00
#> [187,]  0.000000e+00
#> [188,]  0.000000e+00
#> [189,]  0.000000e+00
#> [190,]  0.000000e+00
#> [191,]  0.000000e+00
#> [192,]  0.000000e+00
#> [193,]  0.000000e+00
#> [194,]  0.000000e+00
#> [195,]  0.000000e+00
#> [196,]  0.000000e+00
#> [197,]  0.000000e+00
#> [198,]  0.000000e+00
#> [199,]  0.000000e+00
#> [200,]  0.000000e+00
#> [201,]  2.896689e-02
#> [202,]  0.000000e+00
#> [203,]  0.000000e+00
#> [204,]  0.000000e+00
#> [205,]  0.000000e+00
#> [206,]  0.000000e+00
#> [207,]  0.000000e+00
#> [208,]  0.000000e+00
#> [209,]  0.000000e+00
#> [210,]  0.000000e+00
#> [211,]  3.842068e-03
#> [212,]  2.242065e-02
#> [213,]  3.894770e-02
#> [214,]  4.131642e-02
#> [215,]  3.363109e-02
#> [216,]  1.691766e-02
#> [217,]  8.527541e-05
#> [218,]  0.000000e+00
#> [219,]  0.000000e+00
#> [220,]  0.000000e+00
#> [221,]  0.000000e+00
#> [222,]  0.000000e+00
#> [223,]  0.000000e+00
#> [224,]  0.000000e+00
#> [225,]  0.000000e+00
#> [226,]  0.000000e+00
#> [227,]  0.000000e+00
#> [228,]  0.000000e+00
#> [229,]  0.000000e+00
#> [230,]  0.000000e+00
#> [231,]  0.000000e+00
#> [232,]  0.000000e+00
#> [233,]  0.000000e+00
#> [234,]  0.000000e+00
#> [235,]  0.000000e+00
#> [236,]  0.000000e+00
#> [237,]  0.000000e+00
#> [238,]  0.000000e+00
#> [239,]  0.000000e+00
#> [240,]  0.000000e+00
#> [241,]  0.000000e+00
#> [242,]  0.000000e+00
#> [243,]  0.000000e+00
#> [244,]  0.000000e+00
#> [245,]  0.000000e+00
#> [246,]  0.000000e+00
#> [247,]  0.000000e+00
#> [248,]  0.000000e+00
#> [249,]  0.000000e+00
#> [250,]  0.000000e+00
#> [251,]  0.000000e+00
#> [252,]  0.000000e+00
#> [253,]  0.000000e+00
#> [254,]  0.000000e+00
#> [255,]  0.000000e+00
#> [256,]  0.000000e+00
#> [257,]  0.000000e+00
#> [258,]  0.000000e+00
#> [259,]  0.000000e+00
#> [260,]  0.000000e+00
#> [261,]  0.000000e+00
#> [262,]  0.000000e+00
#> [263,]  0.000000e+00
#> [264,]  0.000000e+00
#> [265,]  0.000000e+00
#> [266,]  0.000000e+00
#> [267,]  0.000000e+00
#> [268,]  0.000000e+00
#> [269,]  0.000000e+00
#> [270,]  0.000000e+00
#> [271,]  0.000000e+00
#> [272,]  0.000000e+00
#> [273,]  0.000000e+00
#> [274,]  0.000000e+00
#> [275,]  0.000000e+00
#> [276,]  0.000000e+00
#> [277,]  0.000000e+00
#> [278,]  0.000000e+00
#> [279,]  0.000000e+00
#> [280,]  0.000000e+00
#> [281,]  0.000000e+00
#> [282,]  0.000000e+00
#> [283,]  0.000000e+00
#> [284,]  0.000000e+00
#> [285,]  0.000000e+00
#> [286,]  0.000000e+00
#> [287,] -9.188155e-03
#> [288,] -5.656722e-02
#> [289,]  0.000000e+00
#> [290,]  0.000000e+00
#> [291,]  0.000000e+00
#> [292,]  0.000000e+00
#> [293,] -4.426014e-03
#> [294,] -3.468028e-02
#> [295,] -1.357250e-01
#> [296,] -2.666228e-01
#> [297,] -1.938313e-01
#> [298,] -3.065940e-02
#> [299,]  0.000000e+00
#> [300,]  0.000000e+00
#> [301,]  0.000000e+00
#> [302,]  0.000000e+00
#> [303,] -3.090996e-02
#> [304,]  0.000000e+00
#> [305,]  0.000000e+00
#> [306,]  0.000000e+00
#> [307,]  0.000000e+00
#> [308,]  0.000000e+00
#> [309,]  0.000000e+00
#> [310,]  0.000000e+00
#> [311,]  0.000000e+00
#> [312,]  0.000000e+00
#> [313,]  0.000000e+00
#> [314,]  0.000000e+00
#> [315,]  0.000000e+00
#> [316,]  0.000000e+00
#> [317,]  0.000000e+00
#> [318,]  0.000000e+00
#> [319,]  0.000000e+00
#> [320,]  0.000000e+00
#> [321,]  0.000000e+00
#> [322,]  0.000000e+00
#> [323,]  0.000000e+00
#> [324,]  0.000000e+00
#> [325,]  0.000000e+00
#> [326,]  0.000000e+00
#> [327,]  0.000000e+00
#> [328,]  0.000000e+00
#> [329,]  0.000000e+00
#> [330,]  0.000000e+00
#> [331,]  0.000000e+00
#> [332,]  0.000000e+00
#> [333,]  0.000000e+00
#> [334,]  0.000000e+00
#> [335,]  0.000000e+00
#> [336,]  0.000000e+00
#> [337,]  0.000000e+00
#> [338,]  0.000000e+00
#> [339,]  0.000000e+00
#> [340,]  0.000000e+00
#> [341,]  0.000000e+00
#> [342,]  0.000000e+00
#> [343,]  0.000000e+00
#> [344,]  0.000000e+00
#> [345,]  0.000000e+00
#> [346,]  0.000000e+00
#> [347,]  0.000000e+00
#> [348,]  0.000000e+00
#> [349,]  0.000000e+00
#> [350,]  0.000000e+00
#> [351,]  0.000000e+00
#> [352,]  0.000000e+00
#> [353,]  0.000000e+00
#> [354,]  0.000000e+00
#> [355,]  0.000000e+00
#> [356,]  0.000000e+00
#> [357,]  0.000000e+00
#> [358,]  0.000000e+00
#> [359,]  0.000000e+00
#> [360,]  0.000000e+00
#> [361,]  0.000000e+00
#> [362,]  0.000000e+00
#> [363,]  0.000000e+00
#> [364,]  0.000000e+00
#> [365,]  0.000000e+00
#> [366,]  0.000000e+00
#> [367,]  0.000000e+00
#> [368,]  0.000000e+00
#> [369,]  0.000000e+00
#> [370,]  0.000000e+00
#> [371,]  0.000000e+00
#> [372,]  0.000000e+00
#> [373,]  0.000000e+00
#> [374,]  0.000000e+00
#> [375,]  0.000000e+00
#> [376,]  0.000000e+00
#> [377,]  0.000000e+00
#> [378,]  0.000000e+00
#> [379,]  0.000000e+00
#> [380,]  0.000000e+00
#> [381,]  0.000000e+00
#> [382,]  0.000000e+00
#> [383,]  0.000000e+00
#> [384,]  4.441353e-03
#> [385,]  6.879104e-02
#> [386,]  0.000000e+00
#> [387,]  0.000000e+00
#> [388,]  0.000000e+00
#> [389,]  0.000000e+00
#> [390,]  0.000000e+00
#> [391,]  0.000000e+00
#> [392,]  0.000000e+00
#> [393,]  3.187450e-02
#> [394,]  2.095483e-02
#> [395,]  3.254466e-02
#> [396,]  6.376723e-02
#> [397,]  1.028400e-01
#> [398,]  0.000000e+00
#> [399,]  0.000000e+00
#> [400,]  0.000000e+00
#> [401,]  2.293092e-01
#> [402,]  5.338155e-01
#> [403,]  8.015938e-01
#> [404,]  8.599921e-01
#> [405,]  9.197933e-01
#> [406,]  8.724288e-01
#> [407,]  8.244904e-01
#> [408,]  7.406288e-01
#> [409,]  6.172213e-01
#> [410,]  3.784696e-01
#> [411,]  1.243440e-01
#> [412,]  0.000000e+00
#> [413,]  0.000000e+00
#> [414,]  9.353183e-02
#> [415,]  1.193982e-02
#> [416,]  0.000000e+00
#> [417,]  0.000000e+00
#> [418,]  0.000000e+00
#> [419,]  0.000000e+00
#> [420,]  0.000000e+00
#> [421,]  0.000000e+00
#> [422,]  0.000000e+00
#> [423,]  0.000000e+00
#> [424,]  0.000000e+00
#> [425,]  0.000000e+00
#> [426,]  0.000000e+00
#> [427,]  0.000000e+00
#> [428,]  0.000000e+00
#> [429,]  0.000000e+00
#> [430,]  0.000000e+00
#> [431,]  0.000000e+00
#> [432,]  0.000000e+00
#> [433,]  0.000000e+00
#> [434,]  0.000000e+00
#> [435,]  0.000000e+00
#> [436,]  0.000000e+00
#> [437,]  0.000000e+00
#> [438,]  0.000000e+00
#> [439,]  0.000000e+00
#> [440,]  0.000000e+00
#> [441,]  2.993085e-02
#> [442,]  0.000000e+00
#> [443,]  0.000000e+00
#> [444,]  0.000000e+00
#> [445,]  0.000000e+00
#> [446,]  9.025034e-02
#> [447,]  1.085285e-01
#> [448,]  0.000000e+00
#> [449,]  0.000000e+00
#> [450,]  0.000000e+00
#> [451,]  1.070827e-01
#> [452,]  2.945133e-03
#> [453,]  0.000000e+00
#> [454,]  0.000000e+00
#> [455,]  0.000000e+00
#> [456,]  0.000000e+00
#> [457,]  0.000000e+00
#> [458,]  0.000000e+00
#> [459,]  0.000000e+00
#> [460,]  0.000000e+00
#> [461,]  0.000000e+00
#> [462,]  0.000000e+00
#> [463,]  0.000000e+00
#> [464,]  0.000000e+00
#> [465,]  0.000000e+00
#> [466,]  0.000000e+00
#> [467,]  0.000000e+00
#> [468,]  0.000000e+00
#> [469,]  0.000000e+00
#> [470,]  0.000000e+00
#> [471,]  0.000000e+00
#> [472,]  0.000000e+00
#> [473,]  0.000000e+00
#> [474,]  0.000000e+00
#> [475,]  0.000000e+00
#> [476,]  0.000000e+00
#> [477,]  0.000000e+00
#> [478,]  0.000000e+00
#> [479,]  0.000000e+00
#> [480,]  0.000000e+00
#> [481,]  0.000000e+00
#> [482,]  0.000000e+00
#> [483,]  0.000000e+00
#> [484,]  0.000000e+00
#> [485,]  0.000000e+00
#> [486,]  0.000000e+00
#> [487,]  0.000000e+00
#> [488,]  0.000000e+00
#> [489,]  0.000000e+00
#> [490,]  0.000000e+00
#> [491,]  0.000000e+00
#> [492,]  0.000000e+00
#> [493,]  0.000000e+00
#> [494,]  0.000000e+00
#> [495,]  0.000000e+00
#> [496,]  0.000000e+00
#> [497,]  0.000000e+00
#> [498,]  0.000000e+00
#> [499,]  0.000000e+00
#> [500,]  0.000000e+00
plot(Y ~ X %*% estbeta,
  xlab = "First reduced predictor",
  ylab = "Percentage of total fat"
)

Acknowledgment

The codes for the Fourier transformation and the convolution transformation methods have been adapted from the codes provided by Zhu and Zeng (2006). Moreover, the methods for handling elliptically contoured distributed variables and kernel density estimation are essentially modifications of the programs originally provided by Zeng and Zhu (2010). Furthermore, the code for Fourier transforms approach for the inverse dimension reduction method has been adapted from the code provided by Weng and Yin (2018).

References