groupedData()的问题

时间:2015-07-18 02:02:25

标签: r lme4 mixed-models nlme

我正在学习混合效果模型的教程。本教程使用来自mlmRev包的egsingle数据集。作为教程的一部分,作者使用groupedData()作为:

egsingle <- groupedData(math ~ year | schoolid/childid, data = egsingle)

有人可以帮我理解&#34; schoolid / childid&#34;是指?

请注意,schoolid和childid都是因素!

此外,在本教程的后面,作者采用大小为50的样本,并使用lmList()通过使用以下内容来适合每个主题的OLS回归:

egsingle <- groupedData(math ~ year | schoolid/childid, data = egsingle)
samp <- sample(levels(egsingle$childid), 50)
level2.subgroup <- subset(egsingle, childid %in% samp)

# fitting a separate OLS regression line to each student
level2 <- lmList(math ~ year | childid, data = level2.subgroup)
plot(augPred(level2))

当我在上面运行lmList命令时,我收到了以下错误:

Error in eval(expr, envir, enclos) : object 'childid' not found
In addition: Warning messages:
1: In lmList(math ~ year | childid, data = level2.subgroup) :
lmList does not (yet) work correctly on groupedData objects
2: In Ops.factor(schoolid, childid) : ‘/’ not meaningful for factors

有谁可以帮我弄清楚为什么我会收到这些错误?

1 个答案:

答案 0 :(得分:2)

  1. 正如RomanLuštrik评论的那样,lmList表示“学校ID”和“嵌套在学校ID中的子ID”都是分组变量。嵌套格式正式构建了更高层次和更低层次之间的相互作用;启发式地,它让计算机知道“学校1中的孩子1”和“2中的孩子1”是不同的个体。

  2. nlmelme4个软件包中的## load data without loading package & dependencies data(egsingle, package="mlmRev") library("nlme") egsingle <- groupedData(math ~ year | schoolid/childid, data = egsingle) samp <- sample(levels(egsingle$childid), 50) level2.subgroup <- subset(egsingle, childid %in% samp) # fitting a separate OLS regression line to each student level2 <- lmList(math ~ year | childid, data = level2.subgroup) plot(augPred(level2)) 版本之间存在冲突问题。如果从干净的R会话中运行完全这些行:

  3.  
    library("mlmRev")

    它应该可以正常工作。如果您在之前nlme 加载nlme(因此lme4在搜索路径中nlme::lmList之前),或者您明确地指定lme4::lmList,这样您就不会意外地选择public void Modifier_Supplier() { SamsonEntities db = new SamsonEntities(); try { action = "MODIF"; if (gridSuppliers.CurrentRow != null && gridSuppliers.CurrentRow.DataBoundItem != null) { SupplierDisplay supAct = (SupplierDisplay)gridSuppliers.CurrentRow.DataBoundItem; Supplier supUpd = db.Suppliers.Single(sup => sup.SupplierID == supAct.SupplierID); supUpd.SupplierName = txtNom.Text; supUpd.Address = txtAdresse.Text; supUpd.City = txtVille.Text; supUpd.PostalCode = mskPostal.Text; supUpd.Contact = txtContact.Text; Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); Match match = regex.Match(txtCourriel.Text); if (!match.Success) { MetroMessageBox.Show(this, "Ce courriel est invalide", "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); supUpd.Email = null; return; } else supUpd.Email = txtCourriel.Text; supUpd.Phone = mskPhone.Text; Regex regexWeb = new Regex(@"^(https?://)?([\da-z.-]+)\.([a-z\.]{2,6})([/\w .-]*)/?$"); Match matchWeb = regexWeb.Match(txtWeb.Text); if (!matchWeb.Success) { MetroMessageBox.Show(this, "Ce site web est invalide", "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); supUpd.Website = null; return; } else supUpd.Website = txtWeb.Text; db.SaveChanges(); FillSuppliers(); MetroMessageBox.Show(this, "Fournisseur mis à jour", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Question); } }