R语言 为什么我的p值在重新缩放变量后会改变?混合模型

yzxexxkh  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(143)

我有这个代码m2 <- lmer(SE ~ b95rel*MF*TASK*ROI*side*Run + (1|IDcheck),f),其中SEb95relMF是连续变量,TASKROIsideRun是分类变量。
我收到警告信息:
警告消息:1:一些预测变量在非常不同的尺度上:考虑重新缩放
下面是结果的第一行:

当我重新缩放b95rel时,p值会改变(例如主效应TASK变得显著):

当我重新缩放MF时,p值再次改变:

我使用R中的scale()函数。
在网上,我总是读到p值在缩放时不应该改变,所以我很困惑,如果我的变化意味着什么...
这是缩放的MF变量:

这是未缩放的MF变量:点不改变彼此的距离。在缩放之前和之后的其他变量也是如此。仅y轴值发生变化。所以p值的变化不可能来自这里。。

我目前不设法复制dput() outome在这里,因为我的数据文件是太大,其众多的重复变量...我会看看我是否找到一个解决方案,并把它放入评论...
这里是sessionInfo:

> sessionInfo()
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)

Matrix products: default

locale:
[1] LC_COLLATE=English_Canada.utf8  LC_CTYPE=English_Canada.utf8    LC_MONETARY=English_Canada.utf8
[4] LC_NUMERIC=C                    LC_TIME=English_Canada.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] rstatix_0.7.2   ggpubr_0.6.0    lubridate_1.9.2 forcats_1.0.0   stringr_1.5.0   dplyr_1.1.1    
 [7] purrr_1.0.1     readr_2.1.4     tidyr_1.3.0     tibble_3.2.1    ggplot2_3.4.2   tidyverse_2.0.0
[13] sjmisc_2.8.9    sjPlot_2.8.14   MuMIn_1.47.5    lmerTest_3.1-3  lme4_1.1-32     Matrix_1.5-4   
[19] sjstats_0.18.2  emmeans_1.8.5  

loaded via a namespace (and not attached):
 [1] splines_4.2.2       carData_3.0-5       modelr_0.1.11       datawizard_0.7.1    stats4_4.2.2       
 [6] bayestestR_0.13.1   numDeriv_2016.8-1.1 pillar_1.9.0        backports_1.4.1     lattice_0.20-45    
[11] glue_1.6.2          RColorBrewer_1.1-3  ggsignif_0.6.4      minqa_1.2.5         colorspace_2.1-0   
[16] sandwich_3.0-2      pkgconfig_2.0.3     broom_1.0.4         haven_2.5.2         xtable_1.8-4       
[21] mvtnorm_1.1-3       scales_1.2.1        tzdb_0.3.0          timechange_0.2.0    farver_2.1.1       
[26] generics_0.1.3      car_3.1-2           sjlabelled_1.2.0    TH.data_1.1-1       withr_2.5.0        
[31] cli_3.4.1           effectsize_0.8.3    survival_3.4-0      magrittr_2.0.3      estimability_1.4.1 
[36] fansi_1.0.4         nlme_3.1-160        MASS_7.3-60         tools_4.2.2         hms_1.1.3          
[41] lifecycle_1.0.3     multcomp_1.4-23     munsell_0.5.0       ggeffects_1.2.2     compiler_4.2.2     
[46] rlang_1.1.0         grid_4.2.2          nloptr_2.0.3        parameters_0.20.3   rstudioapi_0.14    
[51] labeling_0.4.2      boot_1.3-28         gtable_0.3.3        codetools_0.2-18    abind_1.4-5        
[56] R6_2.5.1            zoo_1.8-11          knitr_1.42          performance_0.10.3  utf8_1.2.3         
[61] insight_0.19.1      stringi_1.7.12      Rcpp_1.0.10         vctrs_0.6.1         tidyselect_1.2.0   
[66] xfun_0.38           coda_0.19-4
kmbjn2e3

kmbjn2e31#

tl;dr如果scale(..., center = FALSE),p值应保持不变。* 然而 *,你应该在解释存在交互作用的主效应的重要性时始终保持谨慎,正是因为它们依赖于交互作用中其他效应的中心(Venables 1988)。维纳布尔斯有效地说,“永远不要在存在交互作用的情况下解释主效应”;我的修正是“除非你知道并能准确解释为什么它会有问题,从而理解你实际上在测试什么”。

你的问题是双重的:(1)默认为scale()centers以及缩放变量;(2)居中会更改 * 主效应 * 的含义和p值(当它们涉及模型中也包含的高阶效应时)。
下面的示例显示了基于来自summary()的系数表而不是使用anova()的效果,但点是相同的。
我将给予一个lm()的例子(因为这不是特定于混合模型):

m1 <- lm(mpg ~ hp*disp, mtcars)
## utility function
p <- function(m) print(coef(summary(m))[,"Pr(>|t|)"], digits = 3)
p(m1)
## (Intercept)          hp        disp     hp:disp 
##   7.18e-14    4.73e-04    2.11e-05    2.41e-03

比例和中心:交互作用p值保持不变,但其他效应发生变化(因为我们现在是在其他变量的 * 均值 * 处评估效应,而不是在其他变量为0时)

msc <- transform(mtcars, hp = scale(hp), disp = scale(disp))
p(update(m1, data = msc))
## (Intercept)          hp        disp     hp:disp 
##   1.64e-20    1.30e-02    4.36e-05    2.41e-03

缩放但不居中:p值与原始模型相同。

msc <- transform(mtcars, hp = scale(hp, center = FALSE), disp = scale(disp, center= FALSE))
p(update(m1, data = msc))
## (Intercept)          hp        disp     hp:disp 
##   7.18e-14    4.73e-04    2.11e-05    2.41e-03

PS如果你想解释“类型3”anova,你可能也应该使用和零对比(options(contrasts = c("contr.sum", "contr.poly"))
Venables,W. 1998年国际S-PLUS使用者会议。华盛顿特区。http://www.stats.ox.ac.uk/pub/MASS3/Exegeses.pdf

相关问题