Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R lme4的混合模型起始值_R_Lme4_Mixed Models - Fatal编程技术网

R lme4的混合模型起始值

R lme4的混合模型起始值,r,lme4,mixed-models,R,Lme4,Mixed Models,我正在尝试使用lme4软件包中的lmer功能来拟合混合模型。但是,我不明白start参数应该输入什么。 我的目的是使用一个简单的线性回归来使用那里估计的系数作为混合模型的起始值 假设我的模型如下所示: linear_model = lm(y ~ x1 + x2 + x3, data = data) coef = summary(linear_model)$coefficients[- 1, 1] #I remove the intercept result = lmer(y ~ x1 + x2

我正在尝试使用
lme4
软件包中的
lmer
功能来拟合混合模型。但是,我不明白
start
参数应该输入什么。 我的目的是使用一个简单的线性回归来使用那里估计的系数作为混合模型的起始值

假设我的模型如下所示:

linear_model = lm(y ~ x1 + x2 + x3, data = data)
coef = summary(linear_model)$coefficients[- 1, 1] #I remove the intercept
result = lmer(y ~ x1 + x2 + x3 | x1 + x2 + x3, data = data, start = coef)
这个例子是我正在做的一个过于简单的版本,因为我将无法共享我的数据

然后我得到以下类型的错误:

Error during wrapup: incorrect number of theta components (!=105) #105 is the value I get from the real regression I am trying to fit.
我尝试了许多不同的解决方案,试图提供一个列表并命名那些值
theta
,就像我在一些论坛上看到的那样

Github代码还测试长度是否合适,但我找不到它所指的内容:

# Assign the start value to theta
if (is.numeric(start)) {
        theta <- start
}

# Check the length of theta
length(theta)!=length(pred$theta)
#将起始值指定给θ
如果(是数字(开始)){
θ几个点:

  • lmer
    实际上并没有明确地拟合任何固定效应系数;这些固定效应系数是经过分析的,以便在非线性估计过程的每个步骤中隐式求解。估计只涉及对方差-协方差参数的非线性搜索。这在(方程式30-31,第15页)。因此,不可能提供固定效应系数的起始值,并且无用
  • glmer
    确实作为非线性优化的一部分明确拟合固定效应系数(如@G.Grothendieck在评论中讨论的),如果
    nAGQ>0
  • 诚然,这是相当模糊的,但是
    theta
    参数的起始值(在
    lmer
    拟合中明确优化的唯一参数)对于Cholesky因子的非对角元素为0,对于对角元素为1:这是编码的
对于该模型,我们有一个2x2随机效应方差协方差矩阵。
theta
参数以列顺序对应于该矩阵的下三角Cholesky因子,因此第一和第三个元素是对角的,第二个元素是非对角的

  • 你有105个θ参数这一事实让我担心;拟合这样一个大的随机效应模型会非常慢,需要大量数据才能可靠拟合。(如果您知道您的模型是有意义的,并且您有足够的数据,您可能希望寻找更快的选项,例如使用Doug Bates的
    MixedModels
    包为Julia或可能的
    glmmTMB
    ,对于大型
    theta
    向量的问题,这可能比
    lme4
    扩展得更好。)
  • 你的模型公式,
    y~x1+x2+x3 | x1+x2+x3
    ,看起来很奇怪。我想不出在什么情况下,将相同的变量作为随机效应项,并在同一模型中对变量进行分组是有意义的

如果您不这样做,它将提供一个起始值。省去它吧。为了加快计算速度,我想提供一个起始值。我的想法是运行线性回归,并使用获得的系数作为起始值。它已经在内部进行计算,以获得良好的起始值,特别是当您唯一的混合项为1 | x.请注意,lme4在性能方面有一个小插曲。它的形状是y~x | x。它如何决定使用哪些起始值?您最好尝试使用停止标准,而不是起始值。再次,请参见小插曲。让
y
成为一个人
i
对一个s由假人表示的属性组合
x
x2
x3
。考虑到每个人
i
没有完全相同的评分模式,一些响应者的评分产品非常少,我们想捕捉与这些假人相关的系数仅使用他们的反应很难确定他们自己的模式。估计预测因子
x1
x2
x3
(以及人群平均反应)的人与人之间的差异将由公式
y~x1+x2+x3+(x1+x2+x3 | i)指定……是的,抱歉,这就是我所做的。谢谢你的更正。好的,它仍然是非常具有挑战性的,它适合于一个14×14的方差协方差矩阵……在我给你的例子中一共有多少个主题,总共有多少个OBS?我们有735个观察者和50个响应者和13个假人用来校准模型。例如,由于我们正在开发一种人们将使用的工具,提供自己的数据,因此我们无法控制响应者、观察者或预测者的数量。
   ll$theta[] <- is.finite(ll$lower) # initial values of theta are 0 off-diagonal, 1 on
library(lme4)
ff <- lFormula(Reaction~Days+(Days|Subject),sleepstudy)
(lwr <- ff$reTrms$lower)
## [1]    0 -Inf    0
ifelse(lwr==0,1,0)  ## starting values
## [1] 1 0 1