纵向数据

2023-11-22

I've been working with the R Orthodont dataset in the "nlme" package. Just use install.packages("nlme");library(nlme);head(Orthodont) to take a look. The dataset is comprised of distance between the pituitary and the pterygomaxillary fissure measured in 27 children over time. enter image description here Using the lme4 package I can fit a nonlinear mixed effects model using a logistic curve as my functional form. I can choose to have the asymptote and midpoint entered as random effects

nm1 <- nlmer(distance ~ SSlogis(age,Asym, xmid, scal) ~ (Asym | Subject) + (xmid | Subject), Orthodont, start = c(Asym =25,xmid = 11, scal = 3), corr = FALSE,verb=1)

我真正想知道的是性别是否会改变这些参数。不幸的是,在线示例不包括主题和组示例。 lme4 包是否可以做到这一点?


我相信通过创建自定义模型公式及其梯度的函数可以做到这一点。标准SSlogis函数使用以下形式的逻辑函数:

f(input) = Asym/(1+exp((xmid-input)/scal)) # as in ?SSlogis

而不是调用SSlogis,您可以修改上述语句以满足您的需要。我相信您想看看性别是否对固定效应有影响。这是修改特定性别的示例代码Asym亚群效应Asym2:

# Just for loading the data, we will use lme4 for model fitting, not nlme
library(nlme)
library(lme4)
# Careful when loading both nlme and lme4 as they have overlap, strange behaviour may occur

# A more generalized form could be taken e.g. from http://en.wikipedia.org/wiki/Generalised_logistic_curve
# A custom model structure:
Model <- function(age, Asym, Asym2, xmid, scal, Gender) 
{
    # Taken from ?SSlogis, standard form:
    #Asym/(1+exp((xmid-input)/scal))
    # Add gender-specific term to Asym2
    (Asym+Asym2*Gender)/(1+exp((xmid-age)/scal))
    # Evaluation of above form is returned by this function
}

# Model gradient, notice that we include all 
# estimated fixed effects like 'Asym', 'Asym2', 'xmid' and 'scal' here,
# but not covariates from the data: 'age' and 'Gender'
ModelGradient <- deriv(
    body(Model)[[2]], 
    namevec = c("Asym", "Asym2", "xmid", "scal"), 
    function.arg=Model
)

引入性别效应的一种相当典型的方法是使用二进制编码。我将改造Sex- 变量为二进制编码Gender:

# Binary coding for the gender
Orthodont2 <- data.frame(Orthodont, Gender = as.numeric(Orthodont[,"Sex"])-1)
#> table(Orthodont2[,"Gender"])
# 0  1 
#64 44 
# Ordering data based on factor levels so they don't mix up paneling in lattice later on
Orthodont2 <- Orthodont2[order(Orthodont2[,"Subject"]),]

然后我可以拟合定制模型:

# Fit the non-linear mixed effects model
fit <- nlmer(
    # Response
    distance ~ 
    # Fixed effects
    ModelGradient(age = age, Asym, Asym2, xmid, scal, Gender = Gender) ~ 
    # replaces: SSlogis(age,Asym, xmid, scal) ~ 
    # Random effects
    (Asym | Subject) + (xmid | Subject), 
    # Data
    data = Orthodont2, 
    start = c(Asym = 25, Asym2 = 15, xmid = 11, scal = 3))

发生的事情是当性别==0(男),模型实现数值:

(Asym+Asym2*0)/(1+exp((xmid-age)/scal)) = (Asym)/(1+exp((xmid-age)/scal))

这实际上是标准的 SSlogis 函数形式。然而,现在有一个二进制开关,如果性别==1(女性):

(Asym+Asym2)/(1+exp((xmid-age)/scal))

因此,随着年龄的增长,我们达到的渐近水平实际上是不对称+不对称2, 不只是Asym,对于女性个体。

另请注意,我没有指定新的随机效应Asym2。因为Asym与性别无关,女性个体的渐近水平也可能存在差异,因为Asym-学期。模型拟合:

> summary(fit)
Nonlinear mixed model fit by the Laplace approximation 
Formula: distance ~ ModelGradient(age = age, Asym, Asym2, xmid, scal,      Gender = Gender) ~ (Asym | Subject) + (xmid | Subject) 
   Data: Orthodont2 
   AIC   BIC logLik deviance
 268.7 287.5 -127.4    254.7
Random effects:
 Groups   Name Variance Std.Dev.
 Subject  Asym 7.0499   2.6552  
 Subject  xmid 4.4285   2.1044  
 Residual      1.5354   1.2391  
Number of obs: 108, groups: Subject, 27

Fixed effects:
      Estimate Std. Error t value
Asym    29.882      1.947  15.350
Asym2   -3.493      1.222  -2.859
xmid     1.240      1.068   1.161
scal     5.532      1.782   3.104

Correlation of Fixed Effects:
      Asym   Asym2  xmid  
Asym2 -0.471              
xmid  -0.584  0.167       
scal   0.901 -0.239 -0.773

看起来可能存在性别特异性效应 (t -2.859),因此随着“年龄”的增加,女性患者似乎会达到较低的“距离”值:29.882 - 3.493 = 26.389

我不一定建议这是一个好的/最好的模型,只是展示如何继续自定义非线性模型lme4。如果您想提取非线性固定效应,则模型的可视化需要进行一些修改(与中线性模型的可视化类似)如何通过观察提取 lmer 固定效应? ):

# Extracting fixed effects components by calling the model function, a bit messy but it works
# I like to do this for visualizing the model fit
fixefmat <- matrix(rep(fixef(fit), times=dim(Orthodont2)[1]), ncol=length(fixef(fit)), byrow=TRUE)
colnames(fixefmat) <- names(fixef(fit))
Orthtemp <- data.frame(fixefmat, Orthodont2)
attach(Orthtemp)
# see str(Orthtemp)
# Evaluate the function for rows of the attached data.frame to extract fixed effects corresponding to observations
fix = as.vector(as.formula(body(Model)[[2]]))
detach(Orthtemp)

nobs <- 4 # 4 observations per subject
legend = list(text=list(c("y", "Xb + Zu", "Xb")), lines = list(col=c("blue", "red", "black"), pch=c(1,1,1), lwd=c(1,1,1), type=c("b","b","b")))
require(lattice)
xyplot(
    distance ~ age | Subject, 
    data = Orthodont2,
    panel = function(x, y, ...){
        panel.points(x, y, type='b', col='blue')
        panel.points(x, fix[(1+nobs*(panel.number()-1)):(nobs*(panel.number()))], type='b', col='black')
        panel.points(x, fitted(fit)[(1+nobs*(panel.number()-1)):(nobs*(panel.number()))], type='b', col='red')
    },
    key = legend
)

# Residuals
plot(Orthodont2[,"distance"], resid(fit), xlab="y", ylab="e")

# Distribution of random effects
par(mfrow=c(1,2))
hist(ranef(fit)[[1]][,1], xlab="Random 'Asym'", main="")
hist(ranef(fit)[[1]][,2], xlab="Random 'xmid'", main="")
# Random 'xmid' seems a bit skewed to the right and may violate normal distribution assumption
# This is due to M13 having a bit abnormal growth curve (random effects):
#           Asym       xmid
#M13  3.07301310  3.9077583

图形输出:

Model fits

请注意,在上图中,女性 (F##) 个体略低于男性 (M##) 个体(黑线)。例如。 M10 F10 中间区域面板的差异。

Residuals

Random effects

用于观察指定模型的某些特征的残差和随机效应。个人M13似乎有点棘手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

纵向数据 的相关文章

  • 在 R 中进行 Cox 回归后,将预测危险比列添加到数据帧中

    在 R 中运行 Cox PH 回归后 我需要在数据框中添加预测风险比的列 数据框是面板数据 其中 numgvkey 如果公司标识符 和年龄是时间标识符 您可以从此链接下载一小部分日期 https drive google com file
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • 表单提交时出现 rvest 错误

    我想从以下网页中抓取数据 https swgoh gg u zozo collection 180 emperor palpatine https swgoh gg u zozo collection 180 emperor palpati
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug

随机推荐

  • 从析构函数中调用虚函数

    这样安全吗 class Derived public PublicBase private PrivateBase Derived FunctionCall virtual void FunctionCall PrivateBase Fun
  • C# 问题:如何将 DataGridView 中所做的更改保存回所使用的 DataTable?

    我从 DataSet 获取 DataTable 然后将该 DataTable 绑定到 DataGridView 一旦用户编辑了 DataGridView 上的信息 我如何获取这些更改并将它们放回到使用过的 DataTable 中 然后我可以
  • 为什么 SonarQube 重新打开标记为误报的问题?

    我们的组织刚刚开始使用 SonarQube 我们看到了一些对我们来说似乎很奇怪的东西 我们有一个插件 允许用户将问题标记为 误报 但我们标记为 误报 的任何问题都会在下次 SonarQube 运行时将其状态重置为 打开 对于标记为 无法修复
  • 使用 Python 以编程方式检测 Windows XP 上的系统代理设置

    我开发了一家跨国公司使用的关键应用程序 全球各地办公室的用户都需要能够安装此应用程序 该应用程序实际上是 Excel 的一个插件 我们有一个基于 Setuptools 的 easy install 的自动安装程序 可确保用户每次打开 Exc
  • 将导航控制器与选项卡栏控制器相结合

    正如我在标题中提到的 我想添加Navigation Controller到我的应用程序已经有一个Tab Controller 所以尝试给员工做一些类似的事情page 无论如何 有些事情是错误的 UINavigationController正
  • 将块内的变量分配给块外的变量

    我收到错误 变量不可分配 缺少 block 类型说明符 在线上aPerson participant 我怎样才能确保该块可以访问aPerson变量和aPerson变量可以返回吗 Person aPerson nil participants
  • .NET 4.0 和 .NET 4.7.2 标头选择之间 DataGridView 的重大变化

    我最近迁移了一个项目 NET 4 to NET 4 7 2其中引入了 WinForms DataGridView 标头的更改 Pre Migration looks like this As you can see the Header o
  • 在 Spring MVC 中将文件路径作为 @PathVariable 发送

    有一个任务将文件路径传递为 PathVariable在 Spring MVC 到 REST 服务中GET要求 我们可以轻松地做到这一点POST发送 JSON 格式的文件路径字符串 我们可以怎样做GET请求和 Controller像这样 Re
  • iOS应用审核流程:应用需要外部硬件(通过WiFi连接)

    我们为客户编写了一个应用程序 通过 Wifi 连接到外部硬件 由我们客户设计的硬件 我的问题是 我们如何提交此供审核 没有硬件 软件就起不到多大作用 需要明确的是 该硬件并不通过电缆直接连接到 iPad 而是仅通过 WiFi 连接 我只是想
  • 解析logstash列表中的json

    我有一个 json 形式的 foo bar 我正在尝试使用logstash 中的json 过滤器来过滤它 但这似乎不起作用 我发现我无法使用logstash中的json过滤器解析列表json 有人可以告诉我这个问题的任何解决方法吗 UPDA
  • 带 bo​​otstrap 的水平按钮切换

    我试图获得一个按钮来水平展开 折叠其他元素 共享按钮 并使用引导框架内联 我在两件事上失败了 该按钮不会展开内联和实际 按钮之后的其他元素 当它向后折叠时 其中的元素会打破行并堆叠在一起 我准备了一把小提琴 http jsfiddle ne
  • SSRS 的性能问题[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 大家好 最近我加入了一家公司 他们给我分配的一项任务是提高现有 SSRS 报告的性能 我
  • 历史记录replaceState不再在Chrome中为本地文件工作

    我正在使用 window history replaceState 更改使用 file C 访问的 HTML 文件的查询字符串 这曾经适用于 Chrome Internet Explorer 和 FireFox 但不再适用于 Chrome
  • 如何从 Java 漂亮地打印 XML?

    我有一个包含 XML 的 Java 字符串 没有换行或缩进 我想将其转换为具有格式良好的 XML 的字符串 我该怎么做呢 String unformattedXml
  • 如何解决DTS_E_OLEDBERROR。在ssis中

    在一个ssis包中由数据流任务组成 包含 OLEDB 源和 OLDB 目标 provider 是 sql 本机客户端 这曾经运行良好 但现在出现错误 如下所示 请告诉我如何解决它 将其更改为ado net 操作系统 windows 7 pr
  • 使用 Python 读取文件并绘制 CDF

    我需要读取带有时间戳 以秒为单位 的长文件 并使用 numpy 或 scipy 绘制 CDF 绘图 我确实尝试过使用 numpy 但似乎输出不是它应该的样子 下面的代码 任何建议表示赞赏 import numpy as np import
  • 离散数据拟合:负二项式、泊松分布、几何分布

    在 scipy 中 不支持使用数据拟合离散分布 我知道有很多关于这个的话题 例如 如果我有一个如下所示的数组 x 2 3 4 5 6 7 0 1 1 0 1 8 10 9 1 1 1 0 0 我无法申请这个数组 from scipy sta
  • 如何调整一个克隆的形状/尺寸以影响场景视图中的所有其他克隆

    我想通过调整一个来更改 调整场景视图中多个克隆对象的形状 尺寸 该对象可以是需要扩展的四边形或线渲染器 例如 当一个游戏对象线渲染器在场景视图中扩展 使用鼠标 时 所有其他克隆都会受到影响 我知道在克隆一个对象之前调整它的形状 尺寸要简单得
  • LINQ 查询返回第一个结果的多个副本

    我在数据库中定义了一个视图 archiveContentPreviews 它将多个表连接在一起 并且在 Linq 中它有一个实体键 ArchiveID 我想使用以下简单查询来查询此视图 var x from fields in entiti
  • 纵向数据

    I ve been working with the R Orthodont dataset in the nlme package Just use install packages nlme library nlme head Orth