我有来自参与者的受试者内部生理数据(part),他们都在三轮(round)中查看了刺激(阅读报纸),每轮都有五篇论文(paper),并且在报纸中每个都有不同的访问次数(visit) .我有两个固定的因素(CONDhier和CONDabund)加上相互作用来预测生理状态(例如EDA),这通常是自回归的.我试着考虑生理学中随机效应的个体差异(让我们暂时解决拦截问题),并且可能会因为其他随机效应而导致疲劳.
因此,我希望在R中运行的模型在SPSS中是:
MIXED EDA BY CONDhier CONDabund
/FIXED=CONDhier CONDabund CONDhier*CONDabund | SSTYPE(3)
/RANDOM=INTERCEPT | SUBJECT(part) COVTYPE(VC)
/RANDOM=INTERCEPT | SUBJECT(part*round) COVTYPE(VC)
/PRINT=SOLUTION
/METHOD=REML
/REPEATED=visit | SUBJECT(part*round*paper) COVTYPE(AR1).
Run Code Online (Sandbox Code Playgroud)
现在,我已经明白,虽然lme没有做好交叉术语,lmer(处理交叉术语没有问题)不能使用不同的协方差结构.我可以运行简单的lme模型,如
lme(EDA ~ factor(CONDhier) * factor(CONDabund), random= ~1
|part, na.action=na.exclude, data=phys2)
Run Code Online (Sandbox Code Playgroud)
但是更复杂的模型超出了我的范围.我已经读过lme中的交叉术语可以用随机定义来完成
random=pdBlocked(list(pdCompSymm(~part), pdCompSymm(~round-1), pdCompSymm(~paper-1),
pdCompSymm(~visit-1)))
Run Code Online (Sandbox Code Playgroud)
但这似乎阻止了AR1结构,并且第二次随机拦截了部分*round,来自我.而且我不太确定它和我的SPSS语法一样.
那么,有什么建议吗?虽然在lme和lmer上有很多不同的着作,但我找不到一个既有交叉术语又有AR1的作品.
(另外,关于lme的语法看起来很模糊:从几个不同的来源我已经理解了|在左边的东西下面是什么,组成嵌套术语,~1是随机截距,~x是随机斜率,和~1 + x都是,但似乎至少有:和-1定义,我在任何地方都找不到.是否有一个教程可以解释所有不同的定义?)
我可以使用nlme包中的gls()来构建没有随机效果的mod1.然后我可以将使用AIC的mod1与使用lme()构建的mod2进行比较,其中包含随机效果.
mod1 = gls(response ~ fixed1 + fixed2, method="REML", data)
mod2 = lme(response ~ fixed1 + fixed2, random = ~1 | random1, method="REML",data)
AIC(mod1,mod2)
Run Code Online (Sandbox Code Playgroud)
是否有类似于gls()的lme4包,它允许我构建没有随机效果的mod3,并将它与使用lmer()构建的mod4进行比较,其中包含随机效果?
mod3 = ???(response ~ fixed1 + fixed2, REML=T, data)
mod4 = lmer(response ~ fixed1 + fixed2 + (1|random1), REML=T, data)
AIC(mod3,mod4)
Run Code Online (Sandbox Code Playgroud) library(nlme)
fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc),
data = Loblolly,
fixed = Asym + R0 + lrc ~ 1,
random = Asym ~ 1,
start = c(Asym = -10311111, R0 = 8.5^4, lrc = 0.01),
verbose = TRUE)
**Iteration 1
LME step: Loglik: -312.2787, nlminb iterations: 23
reStruct parameters:
Seed
10.41021
Error in nlme.formula(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, :
Singularity in backsolve at level 0, block 1
Run Code Online (Sandbox Code Playgroud)
我试图nlme通过观察粗麻布来研究为什么有些模型不能成功.有办法以某种方式提取这个矩阵吗?
我也在查看fdHess函数(也来自同一个pacakge),"使用有限差分评估一个近似Hessian和一个标量函数的梯度"这是否等同于函数中当前实现的内容nlme …
我正在尝试使用这些数据运行lme模型:
tot_nochc=runif(10,1,15)
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0))
age=runif(10,18,75)
agecu=age^3
day=factor(c(1,2,2,3,3,NA,NA,4,4,4))
dt=as.data.frame(cbind(tot_nochc,cor_partner,agecu,day))
attach(dt)
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu,
random = ~cor_partner+agecu+cor_partner *agecu |day,
na.exclude(day))
Run Code Online (Sandbox Code Playgroud)
我收到此错误代码:
na.fail.default出错(列表(cor_partner = c)(1L,1L,2L,1L,1L,1L,:对象中缺少值)
我知道论坛中有类似的问题.但是,在我的情况下:
我可以用na.action排除那些NA值,但我想知道为什么函数正在读取缺失值 - 以准确理解我的数据发生了什么.
数据来自这里
library(nlme)
dat0 <- read.table("aids.dat2",head=T)
dat1 <- dat0[dat0$day<=90, ] # use only first 90-day data
dat2 <- dat1[!apply(is.na(dat1),1,any),] # remove missing data
# Next, let's treat the data as longitudinal (or grouped) data
aids.dat <- groupedData(lgcopy ~ day | patid, data=dat2)
# A NLME model fit, with random effects on all 4 parameters
start <- c(10,0.5,6,0.005) # starting value
aids.dat$log10copy = log10(aids.dat$lgcopy)
nlme.fit <- nlme(log10copy ~ exp(p1-b1*day) + exp(p2-b2*day + 1),
fixed = list(p1 ~ 1, b1 ~ 1, …Run Code Online (Sandbox Code Playgroud) 当我尝试加载'car'包时出现此错误:
library(car)
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) :
namespace 'nlme' 3.1-122 is already loaded, but >= 3.1.123 is required
Error: package or namespace load failed for 'car'
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时update.packages(),没有什么可以更新的.如果重要的话,我正在使用MRO 3.2.3.
I am facing a problem I do not manage to solve. I would like to use nlme or nlmODE to perform a non linear regression with random effect using as a model the solution of a second order differential equation with fixed coefficients (a damped oscillator).
I manage to use nlme with simple models, but it seems that the use of deSolve to generate the solution of the differential equation causes a problem. Below an example, and the problems I …
我正在使用REML在nlme包中进行线性混合效果模型拟合.这些代码对我有用:
# Linear mixed-effects model fit by REML (intercept and not slope)
x <- lme (DV ~ IV1 + IV2 + IV1*IV2, data=a.frame, random=~1|speaker)
summary(x)
# Linear mixed-effects model fit by REML (slope and no intercept)
x1 <- lme (DV ~ IV1 + IV2 + IV1*IV2, data=a.frame, random=~IV3-1|speaker)
summary(x1)
# Linear mixed-effects model fit by REML (slope and intercept)
x2 <- lme (DV ~ IV1 + IV2 + IV1*IV2, data=a.frame, random=~IV3|speaker)
summary(x2)
#nested random effect
x5 <- lme (DV ~ …Run Code Online (Sandbox Code Playgroud) 作为此链接的非线性回归分析的输出图
https://stats.stackexchange.com/questions/209087/non-linear-regression-mixed-model
使用此数据集:
zz <-(" iso temp diam
Itiquira 22 5.0
Itiquira 22 4.7
Itiquira 22 5.4
Itiquira 25 5.8
Itiquira 25 5.4
Itiquira 25 5.0
Itiquira 28 4.9
Itiquira 28 5.2
Itiquira 28 5.2
Itiquira 31 4.2
Itiquira 31 4.0
Itiquira 31 4.1
Londrina 22 4.5
Londrina 22 5.0
Londrina 22 4.4
Londrina 25 5.0
Londrina 25 5.5
Londrina 25 5.3
Londrina 28 4.6
Londrina 28 4.3
Londrina 28 4.9
Londrina 31 4.4
Londrina 31 4.1
Londrina 31 4.4 …Run Code Online (Sandbox Code Playgroud) 我知道在混合效应模型中将连续或数字变量作为随机效应并没有多大意义(例如,请参阅此处)。
但我想知道的是,是否lme4::lmer或nlme::lme在 R 中故意阻止你这样做......
具体来说,我要问的是:如果我提供lmer(或lme)任何非因素(非分类)变量作为随机效应,函数是否会自动将其视为一个因素?
插入factor()直接进入11聚物(如当使用常规方法lm)产生以下错误:
lmer(y ~ z + (1|factor(x)), data = dat)
Error: couldn't evaluate grouping factor factor(x) within model frame: try adding grouping factor to data frame explicitly if possible
Run Code Online (Sandbox Code Playgroud)
虽然上面的错误提到直接向数据添加分组因子,但它没有指定所述分组因子是否需要是一个因子(或者这可能是选择一词隐含的)?
我知道直接从我的数据创建一个新的因子类变量相当简单,但我很好奇在使用lmer(或lme)时是否真的有必要。
nlme ×10
r ×10
lme4 ×4
mixed-models ×4
error-code ×1
ggplot2 ×1
list ×1
missing-data ×1
ode ×1
r-car ×1
random ×1