FDA with R:如何获取fda-object中曲线的max()?

i2loujxw  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(73)

我有一些函数数据作为fda对象,现在我得到了一阶导数,并且想要得到每条曲线的最大值的坐标,这怎么可能呢?
为了更好地理解,我提供了一些取自here的虚构数据:

library(fdaoutlier);
library(fda);

set.seed(95139);
n_obs <- 50;
n_curves <- 100
mod4 <- simulation_model4(n = n_curves, p = n_obs, outlier_rate = .5, seed = 50, plot = FALSE)
index1 <- mod4$true_outliers;
curves_mat <- mod4$data;

n_order   = 4;
knots    = c(seq(0,n_obs,5))
n_basis   = length(knots) + n_order - 2;
 

spline_basis = create.bspline.basis(rangeval = c(0,n_obs), nbasis = n_basis, norder = n_order)
df1 <- curves_mat[index1,] 
df1_obj <- Data2fd(argvals = 1:n_obs, y = t(df1), basisobj = spline_basis, lambda = 0.5)

那么,怎样才能得到df1_obj每条曲线的最大值的坐标呢?

bfnvny8b

bfnvny8b1#

某种变通方案,也许有人可以添加更好的解决方案:eval.fd()给出曲线的离散表示,因此可以得到它们的最大值。

fine_df1 <- eval.fd(seq(0,50,length=500),df1_obj);
max_df1 <- array(NA,2);
for(c in c(1:dim(fine_df1)[2])){
    cur <- fine_df1[,c];
    m <- max(cur); 
    i <- which(cur %in% m); 
    max_df1 <- rbind(max_df1, c(i,m));
}
max_df1 <- max_df1[2:dim(max_df1)[1],];
plot(max_df1);

相关问题