交互作用失败lmerTest与In pf(F.stat,qr(Lc)$ rank,nu.F):产生的NaN

交互作用失败lmerTest与In pf(F.stat,qr(Lc)$ rank,nu.F):产生的NaN

问题描述:

我试图在两个单独的数据集上执行lmerTest,出于某种原因,跟踪其中一个数据集的错误。

在PF(F.stat,QR(LC)$排名,nu.F):NaN的生产

This dataset给我的交互项的habitatsoil之间没有问题的p值。它具有相似的结构

Analysis of Variance Table of type III with Satterthwaite 
approximation for degrees of freedom 
       Sum Sq Mean Sq NumDF DenDF F.value Pr(>F) 
habitat  0.057617 0.028809  2 8.8434 1.0880 0.37805 
soil   0.232708 0.232708  1 2.6732 8.7888 0.06848 . 
habitat:soil 0.308003 0.154001  2 2.7134 5.8163 0.10443 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

This dataset |

ANOVA(种),数据= frl_light, REML = T)11聚物(SQRT(绝对压力)〜栖息*土壤+(1)然而抛出错误,并且不能给出habitatlight之间交互的p值。密度*度测量也是0,这可能是问题。

ANOVA(11聚物(SQRT(绝对压力)〜栖*光+(1 |种),数据= frl_soil, REML = T))

Analysis of Variance Table of type III with Satterthwaite 
approximation for degrees of freedom 
       Sum Sq Mean Sq NumDF DenDF F.value Pr(>F) 
habitat  0.00845 0.004223  2 7.9751 0.3494 0.7154 
light   0.01634 0.016336  1 1.9241 1.3517 0.3689 
habitat:light 0.42813 0.214067  2 0.0000 17.7124  
Warning message: 
In pf(F.stat, qr(Lc)$rank, nu.F) : NaNs produced 

我不知道为什么lmerTest适用于一个数据集,但不适用于其他数据集,因为两个数据集至少在我看来都是实际上难以区分的。如果有人能够解决这个问题,请提供帮助。

更新1:我试过本博尔克的建议,而不是使用肯沃德罗杰估计。但是,我们的答案似乎有所不同。我正在运行R 3.3.1,lme4 1.1-12和lmerTest 2.0-32。这是我的输出

ANOVA(11聚物(SQRT(绝对压力)〜栖*光+(1 |种), +数据= frl_soil,REML = T), + DDF = “Kenward-罗杰”)

anova from lme4 is returned 
some computational error has occurred in lmerTest 
Analysis of Variance Table 
       Df Sum Sq Mean Sq F value 
habitat  2 0.00244 0.001219 0.1009 
light   1 0.00476 0.004763 0.3941 
habitat:light 2 0.42813 0.214067 17.7124 

更新1.1:这是与SAS,其中,I与ABS的平方根增加一个附加列,作为sqrtabs混合模型分析的输出。

FILENAME REFFILE'/folders/myfolders/frl_soil.csv';

PROC IMPORT DATAFILE = REFFILE DBMS = CSV OUT = WORK.FRLSOIL; GETNAMES = YES;跑;

PROC CONTENTS DATA = WORK.FRLSOIL;跑;

%web_open_table(WORK.FRLSOIL);

PROC MIXED数据= WORK。FRLSOIL; CLASS物种栖息地light sqrtabs; model sqrtabs =栖息地光栖息地* light/DDFM = KENWARDROGER; 随机拦截物种; 跑;

Type 3 Tests of Fixed Effects 
Effect   Num DF Den DF F Value  Pr > F 
habitat    2  10  1.11  0.3681 
light    1  10  0.45  0.5159 
habitat*light  2  10  0.27  0.7716 
+0

SAS的差异真的很神秘。至少,交互的F统计值应该是相同的,不管决定分母DF,对比等的算法等等......你确定你使用的是相同的数据集和相同的变换(sqrt)...? –

+0

是的。为了确保我没有搞砸,我下载了我在这里提供的文件,并且刚刚用SAS重新运行分析。我将用SAS代码编辑我的评论。 – Rewarp

+0

你的意思是在'CLASS'语句中包含'sqrtabs'吗?我不确定那会做什么...... –

我不能告诉你到底为什么萨特斯韦特近似这里为您提供了一个零DF估计(这确实是为什么你的错误和相互作用没有$ P $ - 值);你必须仔细研究代码才能看到(键入lmerTest:::calcSatterthMultDF并开始挖掘...)我做了一个挖掘位;关键线在其中是

E <- sum((nu.m/(nu.m - 2)) * as.numeric(nu.m > 2)) 
nu.F <- 2 * E * as.numeric(E > q)/(E - q) 

其中(我认为)nu.m($ \ nu_m $)是*度的数目由Welch-Satterthwaite approximation作为估计。我不知道为什么(1)lmerTest设置为E,因此nu.F为0时为nu.m <= 2; (2)在一个数据集内的组内差异的特定组合给出nu.m < 2,并且在另一个数据集中不存在...

同时,如果你喜欢,你可以使用Kenward-Roger近似值(它在计算上更昂贵,但总体上稍微更精确...)使用来自第二链路的数据集:

frl_soil <- read.csv("frl_soil.csv") 
library(lmerTest) 
head(frl_soil,2) 
## X species habitat light  abs 
## 1 1 ANI2GR  gen G.cs 2.67477395 
## 2 2 DIPTAC  gen G.cs 0.09549154 
anova(lmer(sqrt(abs) ~ habitat*light + (1|species), 
      data=frl_soil, REML=TRUE), 
    ddf="Kenward-Roger") 
## Analysis of Variance Table of type III with Kenward-Roger 
## approximation for degrees of freedom 
##    Sum Sq Mean Sq NumDF DenDF F.value Pr(>F) 
## habitat  0.00842 0.004208  2 8.1220 0.3482 0.71602 
## light   0.01568 0.015679  1 2.0712 1.2973 0.36928 
## habitat:light 0.40886 0.204432  2 2.0713 16.9152 0.05212 . 
sessionInfo() 
## other attached packages: 
## [1] lmerTest_2.0-32 lme4_1.1-13  Matrix_1.2-6 
+0

感谢您的洞察力。但是,我没有从我向Kenward-Roger提供的数据集中获得相同的结果。运行'anova(as(m1,“merModLmerTest”),ddf =“Kenward-Roger”)不会给我任何p值,并且F值也大不相同。你有没有对提供的数据集进行任何转换? – Rewarp

+1

用最少的一组步骤更新了我的问题。 –

+0

感谢您不遗余力地帮助我进行此分析。我更新了我的问题,并详细介绍了正在抛出的lmerTest错误。同时,我已经尝试过使用SAS进行的相同分析,该分析给出了您设法运行的R分析的非常不同的值,即交互项的p值为0.77。这个结果老实说把我和其他人放在我的实验室里。 – Rewarp