如何在 R 中的 GLM 中将变量视为随机因子
How to treat a variable as random factor in GLM in R
我正在使用 R 中的 GLM 对数据集进行统计分析。基本上预测变量是:"Probe"(实验中使用的探针类型 - 具有 4 个水平的因子),"Extraction"(实验中使用的提取类型 - 具有 2 个水平的因子),"Tank"(从中收集样品的罐号 - 从 1 到 9 的整数),以及 "Dilution"(每个样品的稀释度 -数字:3.125、6.25、12.5、25、50、100)。响应是从多次重复实验 ("Rep") 中获得的正响应 ("Positive") 的数量。我想评估所有预测变量(及其相互作用)对正响应数量的影响,所以我尝试像这样拟合 GLM 模型:
y<-cbind(mydata$Positive,mydata$Rep - mydata$Positive)
model1<-glm(y~Probe*Extraction*Dilution*Tank, family=quasibinomial, data=mydata)
但后来我的主管告诉我,"Tank" 预测变量不应被视为基于水平的变量。即它的值为 1 到 9,但它只是油箱标签,因此 1 和 7 之间的差异并不重要。将此变量视为因素只会产生结果不佳的大型模型。那么如何将 "Tank" 变量视为随机因子并将其包含在 GLM 中呢?
谢谢
它被称为"mixed effect model"。查看 lme4 包。
library(lme4)
glmer(y~Probe + Extraction + Dilution + (1|Tank), family=binomial, data=mydata)
此外,您可能应该使用 + 而不是 * 来添加因数。 * 包括每个因素的所有相互作用和水平,这将导致巨大的过度拟合模型。除非您有特定理由相信存在交互,在这种情况下,您应该明确地对该交互进行编码。
我正在使用 R 中的 GLM 对数据集进行统计分析。基本上预测变量是:"Probe"(实验中使用的探针类型 - 具有 4 个水平的因子),"Extraction"(实验中使用的提取类型 - 具有 2 个水平的因子),"Tank"(从中收集样品的罐号 - 从 1 到 9 的整数),以及 "Dilution"(每个样品的稀释度 -数字:3.125、6.25、12.5、25、50、100)。响应是从多次重复实验 ("Rep") 中获得的正响应 ("Positive") 的数量。我想评估所有预测变量(及其相互作用)对正响应数量的影响,所以我尝试像这样拟合 GLM 模型:
y<-cbind(mydata$Positive,mydata$Rep - mydata$Positive)
model1<-glm(y~Probe*Extraction*Dilution*Tank, family=quasibinomial, data=mydata)
但后来我的主管告诉我,"Tank" 预测变量不应被视为基于水平的变量。即它的值为 1 到 9,但它只是油箱标签,因此 1 和 7 之间的差异并不重要。将此变量视为因素只会产生结果不佳的大型模型。那么如何将 "Tank" 变量视为随机因子并将其包含在 GLM 中呢?
谢谢
它被称为"mixed effect model"。查看 lme4 包。
library(lme4)
glmer(y~Probe + Extraction + Dilution + (1|Tank), family=binomial, data=mydata)
此外,您可能应该使用 + 而不是 * 来添加因数。 * 包括每个因素的所有相互作用和水平,这将导致巨大的过度拟合模型。除非您有特定理由相信存在交互,在这种情况下,您应该明确地对该交互进行编码。