我正在尝试使用 lme4 执行 LMM,并且弹出此消息:
initializePtr() 中的错误:包“Rcpp”未提供函数“dataptr”
我应该怎么办?
所以这是我的问题.我在R中有一个数据集,我需要运行混合效果模型.这是代码:
data <- read.csv("D:/blahblah.csv")
analysis.data <- lmer(intdiff ~ stress_limit * word_position * follows + (1|speaker), data)
summary(analysis.data)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行脚本时,它返回以下错误:
Error in mer_finalize(ans) : Downdated X'X is not positive definite, 15.
Run Code Online (Sandbox Code Playgroud)
我已将错误跟踪到"跟随"参数,因为当我只使用stress_limit和word_position时,它运行正常.如果有帮助,"跟随"中的数据只有3个字符串:n或l,辅音,元音.我试过用_替换空格但没有成功.在这种情况下,lmer()函数的内部工作是否阻止使用"跟随"?任何帮助都会很棒!
有关更多信息:intdiff包含数值,stress_limit是字符串(Stressed或Unstressed),word位置也是字符串(Word Medial或Word Initial).
编辑:这是一个重现错误的数据样本:
structure(list(intdiff = c(11.45007951, 12.40144758, 13.47898367,
6.279497762, 18.19461897, 16.15539707), word_position = structure(c(2L,
2L, 2L, 1L, 1L, 1L), .Label = c("Word Initial", "Word Medial"
), class = "factor"), follows = structure(c(4L, 4L, 4L, 1L, 2L,
4L), .Label = c("Consonant", "n or l", "Pause", "Vowel"), class = "factor"),
stress_limit …Run Code Online (Sandbox Code Playgroud) 考虑一个简单的例子:
> library(lme4)
Loading required package: lattice
Loading required package: Matrix
> set.seed(1)
> df <- data.frame(x = c(rnorm(7), NA), y = rep(c("A", "B"), 4))
> length(fitted(lm(data = df, x ~ y, na.action = na.exclude)))
[1] 8
Run Code Online (Sandbox Code Playgroud)
这表现得如我所料.虽然第8次观察没有拟合值,但因为x是该行的NA,所以拟合值用NA"填充",使得它们与输入数据帧df中的行数相同,这是非常的便利.但是调用na.action = na.exclude在lme4中不再具有相同的效果.
> length(fitted(lmer(data = df, x ~ (1 | y), na.action = na.exclude)))
[1] 7
Run Code Online (Sandbox Code Playgroud)
我相当肯定,在旧版本的lme4中,长度为8,最后一个值为NA,就像lm()一样.
如何让lmer以与lm相同的方式运行---用NAs填充拟合向量(在适当的位置),使其与输入数据帧中的行数长度相同?
更一般地说,是否存在一些关于na.action和na.exclude正在做什么和/或打算在这里做什么的东西?
我的目标是在应用于lmer模型对象时,使fit()返回一个与行数相同的向量作为输入数据帧(并以相同的顺序!)和"适当"中的NA "地点.有一个简单的方法吗?
谢谢,
戴夫凯恩
更新:感谢Ben Bolker的工作!虽然predict()与fits()不同,但使用它确实解决了我的主要问题.
> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 …Run Code Online (Sandbox Code Playgroud) 我曾经使用下面的代码来计算lmer模型的标准化系数。但是,随着 lme 的新版本,返回对象的结构发生了变化。
如何调整功能stdCoef.lmer使其与新lme4版本兼容?
# Install old version of lme 4
install.packages("lme4.0", type="both",
repos=c("http://lme4.r-forge.r-project.org/repos",
getOption("repos")[["CRAN"]]))
# Load package
detach("package:lme4", unload=TRUE)
library(lme4.0)
# Define function to get standardized coefficients from an lmer
# See: https://github.com/jebyrnes/ext-meta/blob/master/r/lmerMetaPrep.R
stdCoef.lmer <- function(object) {
sdy <- sd(attr(object, "y"))
sdx <- apply(attr(object, "X"), 2, sd)
sc <- fixef(object)*sdx/sdy
#mimic se.ranef from pacakge "arm"
se.fixef <- function(obj) attr(summary(obj), "coefs")[,2]
se <- se.fixef(object)*sdx/sdy
return(list(stdcoef=sc, stdse=se))
}
# Run model
fm0 <- lmer(Reaction ~ …Run Code Online (Sandbox Code Playgroud) 我有一个mer创建的对象,调用 to lmer()。
我可以获得随机效应,ranef()但我也希望每个随机效应都有相应数量的观察 - 有没有简单的方法来做到这一点?
附加信息:
上面我可能没有说清楚。举例来说,如果我有医院和随机拦截医院内聚集病人简单的2级车型,我想提取每个医院随机效应ranef() 一起与患者各医院内的号码。目前,我使用
ranef(fullmodel)[[1]]
Run Code Online (Sandbox Code Playgroud)
这给了我类似的东西:
(Intercept)
ADE -0.108195883
BEJ -0.005761677
CIS 0.124129426
CMH 0.270879048
CSI 0.285344837
CUL 0.189308979
Run Code Online (Sandbox Code Playgroud)
我想得到类似的东西:
(Intercept) n
ADE -0.108195883 77
BEJ -0.005761677 171
CIS 0.124129426 201
CMH 0.270879048 39
CSI 0.285344837 171
CUL 0.189308979 131
Run Code Online (Sandbox Code Playgroud)
为此,我一直在使用
fullmodel <- glmer(.....+(1|hospital), data=dt1)
freqs <- as.data.frame(table(dt1$hospital))
freqs <- freqs[foo$Freq>0,]
Run Code Online (Sandbox Code Playgroud)
然后cbind将其添加到结果中ranef(fullmodel)[[1]]
然而,这似乎并不复杂并且容易出错。
我正在使用一个脚本来调用包的lmer功能lme4数千次(不用担心,稍后会执行多次比较的相关更正)并且希望在单个调用期间尽可能多地节省时间.
我想从拟合模型中提取t值,这是最快(计算时间)的方法吗?我尝试过使用summary(model)但似乎比调用lmer自己要花费更多时间.是否有可能从获得的模型中获取t值而不使用summary()?
我对新手问题表示歉意,但我是 lme4 的新手。我正在使用 lme4 对三年内由不同类型的土地利用组成的六个地点中蜂群的生存进行建模,并在使用 REML 消除其他竞争模型后生成了以下模型:
land1=lmer(asin(sqrt(prop_survival))~log(area_forage_uncult) + (1|site) + (1|year))
Run Code Online (Sandbox Code Playgroud)
并制作了摘要:
Linear mixed model fit by REML ['lmerMod']
Formula: asin(sqrt(prop_survival)) ~ log(area_forage_uncult) + (1 | site)+ (1 | year))
REML criterion at convergence: -32.7
Scaled residuals:
Min 1Q Median 3Q Max
-1.4914 -0.5867 -0.0323 0.4945 1.7873
Random effects:
Groups Name Variance Std.Dev.
site (Intercept) 0.001080 0.03287
year (Intercept) 0.000000 0.00000
Residual 0.004983 0.07059
Number of obs: 18, groups: site, 6; year, 3
Fixed effects:
Estimate Std. Error t …Run Code Online (Sandbox Code Playgroud) 我有一个混合模型,数据如下所示:
> head(pce.ddply)
subject Condition errorType errors
1 j202 G O 0.00000000
2 j202 G P 0.00000000
3 j203 G O 0.08333333
4 j203 G P 0.00000000
5 j205 G O 0.16666667
6 j205 G P 0.00000000
Run Code Online (Sandbox Code Playgroud)
每个受试者为 errorType(O 或 P)提供两个数据点,并且每个受试者处于条件 G(N=30)或 N(N=33)。errorType 是一个重复变量,Condition 是一个变量之间。我对主效应和相互作用都感兴趣。所以,首先是一个方差分析:
> summary(aov(errors ~ Condition * errorType + Error(subject/(errorType)),
data = pce.ddply))
Error: subject
Df Sum Sq Mean Sq F value Pr(>F)
Condition 1 0.00507 0.005065 2.465 0.122
Residuals 61 0.12534 0.002055
Error: subject:errorType
Df Sum …Run Code Online (Sandbox Code Playgroud) 该调用mF@X应返回固定效应设计矩阵(对于glmm中的边际和条件R ^ 2是必需的).但它不起作用.甚至这样的矩阵列在模型结构中?
我很感激任何建议.
str(mF)
Formal class 'glmerMod' [package "lme4"] with 13 slots
..@ resp :Reference class 'glmResp' [package "lme4"] with 11 fields
.. ..$ Ptr :<externalptr>
.. ..$ mu : num [1:480] 0.168 0.356 0.168 0.356 0.284 ...
.. ..$ offset : num [1:480] 0 0 0 0 0 0 0 0 0 0 ...
.. ..$ sqrtXwt: num [1:480] 0.373 0.479 0.373 0.479 0.451 ...
.. ..$ sqrtrwt: num [1:480] 2.68 2.09 2.68 2.09 …Run Code Online (Sandbox Code Playgroud) 我正在使用lme4R中的包并试图适应随机斜率和随机拦截模型.当我运行随机斜率和随机拦截模型以及如何处理此错误时,如果有人能帮助我理解这个错误,我会非常有帮助:
mdl17<-lmer(yld.res ~ brk + (1+brk|state),data=data1,REML="FALSE")
Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 1.84098 (tol = 0.002, component 3)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge: degenerate Hessian with 1 negative eigenvalues
Run Code Online (Sandbox Code Playgroud)
非常感谢
为什么 glmulti R 包中的函数在 lmer fit(线性混合模型)和 gls fit 模型(lme 包)上不能很好地工作:
A. 提取模型平均系数?它的 coef 函数不起作用。
我在 lmer 拟合模型(即混合模型)上使用 glmulti R 包并运行模型选择。但我未能进行模型平均,因为即使我应用了此处提到的glmulti 和 liner 混合模型的包装器 getfit() 函数,coef 函数也不起作用
B. 它的 level=2 选择,即致力于包含 glmulti 对象上的成对交互的部分?有时它会起作用,而在另一种情况下它会失败。例如,当它失败时,我收到此错误消息。我选择了不同的方法=“h”,“g”,“d”来查看失败是否与计算能力有关,但没有一个选择有效。“.jnew("glmulti/ModelGenerator", y, .jarray(xc), .jarray(xq), : java.lang.ArrayIndexOutOfBoundsException: 10 中的错误:10 ” 这个问题的另一个问题是,一旦我在新的glmulti,以前那些做得很好的作品将不再起作用。
C. 如果我使用 MuMIn 包中的模型平均函数并根据其输出进行推断,会产生多大的差异?我的担忧来自 glmulti 包的作者对 MuMIn 包的批评。他们说“*MuMIn 可以处理包含交互作用的公式,但它将交互作用视为标准变量,这会引发几个问题”,请参见第 4 页倒数第二段http://www.jstatsoft.org/v34/i12/paper。
非常感谢您的帮助 :)
感谢本的快速回复和建议。这是我的数据。块和成分用作随机效应因子,六个变量(TShann、Alt、Slope、CPT、MAT 和 MARF)用作固定效应因子(协变量)。我想研究这六个变量对产量的主要和成对相互作用的影响。
Blocks TShann Alt Slope CPT MAT MARF PlotID Layer Composition Yeild
Block1 1.82 87 1 98.65 2.6 625 B1P1 …Run Code Online (Sandbox Code Playgroud) 我在Mac OS X 10_9_5上运行RStudio版本0.98.1062.我加载了包"lattice"和"nlme",并没有收到错误消息.我读了一些数据并使用了一些简单的函数.但是当我尝试使用lmer时,我得到错误:"找不到函数"lmer"".这是我做的:
> library("lattice", lib.loc="/Library/Frameworks/R.framework/Versions/3.1/Resources/library")
> library("nlme", lib.loc="/Library/Frameworks/R.framework/Versions/3.1/Resources/library")
> dat = read.table("StatsPrepDAT2005_2010.txt", T)
> table(dat$language, dat$data_time)
2005 2010
LW 37 69
Wrlp 33 62
> dat.lmer = lmer(casevowela ~ language + data_time + (1|speaker) + (1|story), family= "binomial", data= dat)
Error: could not find function "lmer"
Run Code Online (Sandbox Code Playgroud) lmer ×12
r ×10
lme4 ×4
mixed-models ×2
coefficients ×1
matrix ×1
modeling ×1
multi-level ×1
predict ×1
structure ×1
syntax-error ×1