fnn.fnc {FuncNN} | R Documentation |
Output of Estimated Functional Weights
Description
This function outputs plots and ggplot()
objects of the functional weights found by the fnn.fit()
model.
Usage
fnn.fnc(model, domain_range, covariate_scaling = FALSE)
Arguments
model |
A keras model as outputted by |
domain_range |
List of size k. Each element of the list is a 2-dimensional vector containing the upper and lower
bounds of the k-th functional weight. Must be the same covariates as input into |
covariate_scaling |
If TRUE, then data will be internally scaled before model development. |
Details
No additional details for now.
Value
The following are returned:
FNC_Coefficients
– The estimated coefficients defining the basis expansion for each of the k functional weights.
saved_plot
– A list of size k of ggplot()
objects.
Examples
# libraries
library(fda)
# loading data
tecator = FuncNN::tecator
# define the time points on which the functional predictor is observed.
timepts = tecator$absorp.fdata$argvals
# define the fourier basis
nbasis = 29
spline_basis = create.fourier.basis(tecator$absorp.fdata$rangeval, nbasis)
# convert the functional predictor into a fda object and getting deriv
tecator_fd = Data2fd(timepts, t(tecator$absorp.fdata$data), spline_basis)
tecator_deriv = deriv.fd(tecator_fd)
tecator_deriv2 = deriv.fd(tecator_deriv)
# Non functional covariate
tecator_scalar = data.frame(water = tecator$y$Water)
# Response
tecator_resp = tecator$y$Fat
# Getting data into right format
tecator_data = array(dim = c(nbasis, length(tecator_resp), 3))
tecator_data[,,1] = tecator_fd$coefs
tecator_data[,,2] = tecator_deriv$coefs
tecator_data[,,3] = tecator_deriv2$coefs
# Getting data ready to pass into function
ind = 1:165
tec_data_train <- array(dim = c(nbasis, length(ind), 3))
tec_data_train = tecator_data[, ind, ]
tecResp_train = tecator_resp[ind]
scalar_train = data.frame(tecator_scalar[ind,1])
# Setting up network
tecator_fnn = fnn.fit(resp = tecResp_train,
func_cov = tec_data_train,
scalar_cov = scalar_train,
basis_choice = c("fourier", "fourier", "fourier"),
num_basis = c(5, 5, 7),
hidden_layers = 4,
neurons_per_layer = c(64, 64, 64, 64),
activations_in_layers = c("relu", "relu", "relu", "linear"),
domain_range = list(c(850, 1050), c(850, 1050), c(850, 1050)),
epochs = 300,
learn_rate = 0.002)
# Functional weights for this model
est_func_weights = fnn.fnc(tecator_fnn, domain_range = list(c(850, 1050),
c(850, 1050),
c(850, 1050)))
[Package FuncNN version 1.0 Index]