我正在使用 bestNormalize 包来转换具有 5 个因子水平(组)的变量。我使用以下代码转换我的数据并查看转换后数据的直方图和正态性检验结果(nooutliers 是我的数据集,totalscore 是我的因变量,Grade 是具有 5 个因子水平的因子):
(BNobjectall <- bestNormalize(nooutliers$totalscore))
nooutliers$transformed <- predict(BNobjectall)
ggplot(nooutliers,aes(x=transformed, fill= Grade))+geom_histogram(binwidth=3)+facet_grid(~Grade)+theme_bw()
nooutliers %>%
summarise(statistic = shapiro.test(transformed)$statistic,
p.value = shapiro.test(transformed)$p.value)
我的问题是 bestNormalize 不考虑因子水平并找到最佳转换方法,因为该变量是单个组。结果,我的一个因子水平的转换因变量值不会变得正常。当我为这个因子水平创建一个子集并应用相同的代码时,我得到了想要的结果。但是,我不知道如何将这种相同的转换(具有相同的值)应用于其他因子水平。
bestNormalize 有没有办法考虑因子水平或将具有相同值的相同转换应用于不同的子集?