oldpar <- par(no.readonly=TRUE)
# Assemble the objects in the list arguments Bmat and surpList
SfdList1 <- Quant_13B_problem_parmList$SfdList[[1]]
binctr <- Quant_13B_problem_parmList$binctr
M <- SfdList1$M
Bmat <- SfdList1$Sfd$coef
Sbasis <- SfdList1$Sfd$basis
Snbasis <- Sbasis$nbasis
Phimat <- fda::eval.basis(binctr, Sbasis)
Zmat <- SfdList1$Zmat
Sbin <- SfdList1$Sbin
# add some noise by rounding
Bmat <- round(Bmat,0)
Kmat <- matrix(0,Snbasis,Snbasis)
wtvec <- NULL
surpList <- list(binctr=binctr, Sbin=Sbin, wtvec=wtvec,
Kmat=Kmat, Zmat=Zmat, Phimat=Phimat, M=M)
Bvec <- matrix(Bmat,Sbasis$nbasis*(M-1),1,byrow=TRUE)
# run surp.fit to get initial values
result <- surp.fit(Bvec, surpList)
print(paste("Initial error sum of squares =",round(result$SSE,3)))
print(paste("Initial gradient norm =",round(norm(result$DSSE),5)))
# optimize SSE
result <- smooth.surp(binctr, Sbin, Bmat, Sbasis, Zmat)
print(paste("Optimal error sum of squares =",round(result$SSE,3)))
print(paste("Optimal gradient norm =",round(norm(result$DSSE),5)))
par(oldpar)
Run the code above in your browser using DataLab