Initialize kernel object
Usage
k_FactorKernel(
s2 = 1,
D,
nlevels,
xindex,
p_lower = 0,
p_upper = 0.9,
p_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
p,
useC = TRUE,
offdiagequal = 1 - 1e-06
)Format
R6Class object.
Arguments
- s2
Initial variance
- D
Number of input dimensions of data
- nlevels
Number of levels for the factor
- xindex
Index of the factor (which column of X)
- p_lower
Lower bound for p
- p_upper
Upper bound for p
- p_est
Should p be estimated?
- s2_lower
Lower bound for s2
- s2_upper
Upper bound for s2
- s2_est
Should s2 be estimated?
- p
Vector of correlations
- useC
Should C code used? Not implemented for FactorKernel yet.
- offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Value
Object of R6Class with methods for fitting GP model.
Details
For a factor that has been converted to its indices. Each factor will need a separate kernel.
Super class
GauPro::GauPro_kernel -> GauPro_kernel_FactorKernel
Public fields
pParameter for correlation
p_estShould p be estimated?
p_lowerLower bound of p
p_upperUpper bound of p
p_lengthlength of p
s2variance
s2_estIs s2 estimated?
logs2Log of s2
logs2_lowerLower bound of logs2
logs2_upperUpper bound of logs2
xindexIndex of the factor (which column of X)
nlevelsNumber of levels for the factor
offdiagequalWhat should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Methods
Inherited methods
Method new()
Initialize kernel object
Usage
FactorKernel$new(
s2 = 1,
D,
nlevels,
xindex,
p_lower = 0,
p_upper = 0.9,
p_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
p,
useC = TRUE,
offdiagequal = 1 - 1e-06
)Arguments
s2Initial variance
DNumber of input dimensions of data
nlevelsNumber of levels for the factor
xindexIndex of the factor (which column of X)
p_lowerLower bound for p
p_upperUpper bound for p
p_estShould p be estimated?
s2_lowerLower bound for s2
s2_upperUpper bound for s2
s2_estShould s2 be estimated?
pVector of correlations
useCShould C code used? Not implemented for FactorKernel yet.
offdiagequalWhat should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Examples
kk <- FactorKernel$new(D=1, nlevels=5, xindex=1)
kk$p <- (1:10)/100
kmat <- outer(1:5, 1:5, Vectorize(kk$k))
kmat
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 1.00 0.01 0.02 0.03 0.04
#> [2,] 0.01 1.00 0.05 0.06 0.07
#> [3,] 0.02 0.05 1.00 0.08 0.09
#> [4,] 0.03 0.06 0.08 1.00 0.10
#> [5,] 0.04 0.07 0.09 0.10 1.00
kk$plot()
# 2D, Gaussian on 1D, index on 2nd dim
if (requireNamespace("dplyr", quietly=TRUE)) {
library(dplyr)
n <- 20
X <- cbind(matrix(runif(n,2,6), ncol=1),
matrix(sample(1:2, size=n, replace=TRUE), ncol=1))
X <- rbind(X, c(3.3,3))
n <- nrow(X)
Z <- X[,1] - (X[,2]-1.8)^2 + rnorm(n,0,.1)
tibble(X=X, Z) %>% arrange(X,Z)
k2a <- IgnoreIndsKernel$new(k=Gaussian$new(D=1), ignoreinds = 2)
k2b <- FactorKernel$new(D=2, nlevels=3, xind=2)
k2 <- k2a * k2b
k2b$p_upper <- .65*k2b$p_upper
gp <- GauPro_kernel_model$new(X=X, Z=Z, kernel = k2, verbose = 5,
nug.min=1e-2, restarts=0)
gp$kernel$k1$kernel$beta
gp$kernel$k2$p
gp$kernel$k(x = gp$X)
tibble(X=X, Z=Z, pred=gp$predict(X)) %>% arrange(X, Z)
tibble(X=X[,2], Z) %>% group_by(X) %>% summarize(n=n(), mean(Z))
curve(gp$pred(cbind(matrix(x,ncol=1),1)),2,6, ylim=c(min(Z), max(Z)))
points(X[X[,2]==1,1], Z[X[,2]==1])
curve(gp$pred(cbind(matrix(x,ncol=1),2)), add=TRUE, col=2)
points(X[X[,2]==2,1], Z[X[,2]==2], col=2)
curve(gp$pred(cbind(matrix(x,ncol=1),3)), add=TRUE, col=3)
points(X[X[,2]==3,1], Z[X[,2]==3], col=3)
legend(legend=1:3, fill=1:3, x="topleft")
# See which points affect (5.5, 3 themost)
data.frame(X, cov=gp$kernel$k(X, c(5.5,3))) %>% arrange(-cov)
plot(k2b)
}
#> Optimizing
#> Initial values:
#> $par
#> [1] 1.32178099 -1.11971083 0.51459982 0.00000000 0.15327415 0.04291474
#> [7] -1.58039057
#>
#> $value
#> [1] 46.70867
#>
#> Restart (parallel): starts pars = 1.321781 -1.119711 0.5145998 0 0.1532741 0.04291474 -1.580391
#> start
#> 1 1.32178099162845,-1.11971082861119,0.514599818539648,0,0.153274148032248,0.0429147371132052,-1.58039057113421
#> 2 1.32,-1.12,0.515,0,0.153,0.0429,-1.58
#> end value func_evals grad_evals
#> 1 NA 46.70867 1 NA
#> 2 3.09,-0.539,-0.0389,0.585,0.528,0,-2 -39.02475 23 23
#> convergence message
#> 1 NA NA
#> 2 0 CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH
#> * nug is at minimum value after optimizing. Check the fit to see it this caused a bad fit. Consider changing nug.min. This is probably fine for noiseless data.