我试图使用tidymodels
框架计算PLSDA中每个组件解释的方差比例。
这是";金本位;mixOmics
包的结果:
library(mixOmics)
mix_plsda <- plsda(X = iris[-5], Y = iris$Species, ncomp = 4)
mix_var_expl <- mix_plsda$prop_expl_var$X
mix_var_expl
#> comp1 comp2 comp3 comp4
#> 0.729028323 0.227891235 0.037817718 0.005262724
sum(mix_var_expl) # check
#> [1] 1
这里有recipes::step_pls()
:
library(recipes)
tidy_plsda <-
recipe(Species ~ ., data = iris) %>%
step_pls(all_numeric_predictors(), outcome = "Species", num_comp = 4) %>%
prep()
tidy_sd <- tidy_plsda$steps[[1]]$res$sd
tidy_sd
#> [1] 0.8280661 0.4358663 1.7652982 0.7622377
tidy_sd ^2 / sum(tidy_sd^2)
#> [1] 0.14994532 0.04154411 0.68145793 0.12705264
看起来最像解释方差的元素是sd
,但正如你所看到的,这两个向量之间没有明显的关系。
如何从tidy_plsda
获取mix_var_expl
?谢谢
创建于2022-09-20由reprex包(v2.0.1(
配方对象不保存mixOmics模型;只是我们需要处理新数据的部分。sd
对象是预测因子的标准差。目前还没有从对象中获取所需内容的方法。
我添加了一个GitHub问题,以便向结果中添加更多对象:https://github.com/tidymodels/recipes/issues/1038