我有一个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]]
然而,这似乎并不复杂并且容易出错。
我正在研究gam具有随机效应的预测模型,以通过plot_ly.
这是我的代码;
x <- runif(100)
y <- runif(100)
z <- x^2 + y + rnorm(100)
r <- rep(1,times=100) # random effect
r[51:100] <- 2 # replace 1 into 2, making two groups
df <- data.frame(x, y, z, r)
gam_fit <- gam(z ~ s(x) + s(y) + s(r,bs="re"), data = df) # fit
#create matrix data for `add_surface` function in `plot_ly`
newx <- seq(0, 1, len=20)
newy <- seq(0, 1, len=30)
newxy <- expand.grid(x = newx, y …Run Code Online (Sandbox Code Playgroud) 我有一个小数据,其中有 3 组(A、B、C),每组有 5 名参与者。所有这些参与者在 7 项不同的考试中每项都被测量 6 次,因此每个参与者总共得到 6*7=42 分。建立了简单的线性混合模型mylmm<-lmer(score ~1+group+exam+group*exam+(1|participant), data = mydata)。anova(mylmm)我可以使用多重比较函数获得分组、考试及其交互的方差分析结果和事后成对比较。
但数据量很小(只有5个参与者),残差mylmm也不正常,所以威力不足。我知道使用稳健的混合模型robustlmm和使用残差引导混合模型lmeresampler。但是,我无法使用这些方法进行方差分析和多重比较。有人可以帮我解决以下问题吗?真的很感激。
simranova 方法来计算测试组、考试和模型对象交互的功效lme。另外,simr还可以用于查找事后成对比较的功效还是emmeans应该使用?谢谢我正在尝试拟合具有近50 个变量的非线性模型(因为存在年份固定效应)。问题是我有太多的变量,我无法像这样写出完整的公式
nl_exp = as.formula(y ~ t1*year.matrix[,1] + t2*year.matrix[,2]
+... +t45*year.matirx[,45] + g*(x^d))
nl_model = gnls(nl_exp, start=list(t=0.5, g=0.01, d=0.1))
Run Code Online (Sandbox Code Playgroud)
其中y是二元响应变量,year.matirx是 45 列的矩阵(表示 45 个不同的年份),x是自变量。需要估计的参数是t1, t2, ..., t45, g, d。
我有很好的起始值t1, ..., t45, g, d。但是我不想为这个非线性回归写一个很长的公式。
我知道如果模型是线性的,则表达式可以简化为
l_model = lm(y ~ factor(year) + ...)
Run Code Online (Sandbox Code Playgroud)
factor(year)在gnls函数中尝试过,但它不起作用。此外,我也尝试过
nl_exp2 = as.formula(y ~ t*year.matrix + g*(x^d))
nl_model2 = gnls(nl_exp2, start=list(t=rep(0.2, 45), g=0.01, d=0.1))
它还会返回我的错误消息。
那么,有没有简单的方法来写下非线性公式和 中的起始值R?
如何在R中指定随机因子?
如果我有一个x1 应该是随机的因素,我可以试试这样的东西吗?
lm(y ~ x1, data = p)
Run Code Online (Sandbox Code Playgroud)