使用 geom_smooth 将 glm 拟合到分数

2024-01-02

这篇文章有点相关这个帖子 https://stackoverflow.com/questions/62974766/removing-alpha-transparency-from-ggplot-legend-and-setting-x-axis-labels-to-be-f/62986181#62986181.

这里我有xy分组数据,其中y是分数:

library(dplyr)
library(ggplot2)
library(ggpmisc)

set.seed(1)
df1 <- data.frame(value = c(0.8,0.5,0.4,0.2,0.5,0.6,0.5,0.48,0.52),
                 age = rep(c("d2","d4","d45"),3),
                 group = c("A","A","A","B","B","B","C","C","C")) %>%
  dplyr::mutate(time = as.integer(age)) %>%
  dplyr::arrange(group,time) %>%
  dplyr::mutate(group_age=paste0(group,"_",age))
df1$group_age <- factor(df1$group_age,levels=unique(df1$group_age))

我想要实现的是绘制df1作为条形图,如下所示:

ggplot(df1,aes(x=group_age,y=value,fill=age)) +
  geom_bar(stat='identity')

但我想适合每一个group a binomial glm with a logit link function,它估计这些分数如何受到影响time.

假设每个观察值有 100 个age (time) 每一个group:

df2 <- do.call(rbind,lapply(1:nrow(df1),function(i){
  data.frame(age=df1$age[i],group=df1$group[i],time=df1$time[i],group_age=df1$group_age[i],value=c(rep(T,100*df1$value[i]),rep(F,100*(1-df1$value[i]))))
}))

然后glm对于每个group (e.g., group A) is:

glm(value ~ time, dplyr::filter(df2, group == "A"), family = binomial(link='logit'))

所以我想添加到估计上方的图中regression slopes对于每个group以及它们相应的p-values(类似于我为连续所做的事情df$value in 这个帖子 https://stackoverflow.com/questions/62974766/removing-alpha-transparency-from-ggplot-legend-and-setting-x-axis-labels-to-be-f/62986181#62986181).

我认为使用:

ggplot(df1,aes(x=group_age,y=value,fill=age)) +
  geom_bar(stat='identity') +
  geom_smooth(data=df2,mapping=aes(x=group_age,y=value,group=group),color="black",method='glm',method.args=list(family=binomial(link='logit')),size=1,se=T) +
  stat_poly_eq(aes(label=stat(p.value.label)),formula=my_formula,parse=T,npcx="center",npcy="bottom") +
  scale_x_log10(name="Age",labels=levels(df$age),breaks=1:length(levels(df$age))) +
  facet_wrap(~group) + theme_minimal()

可以工作,但我收到错误:

Error in Math.factor(x, base) : ‘log’ not meaningful for factors

知道如何做对吗?


我相信这会有所帮助:

library(tidyverse)
library(broom)

df2$value <- as.numeric(df2$value)

#Estimate coefs
dfmodel <- df2 %>% group_by(group) %>%
  do(fitmodel = glm(value ~ time, data = .,family = binomial(link='logit')))
#Extract coeffs
dfCoef = tidy(dfmodel, fitmodel)
#Create labels
dfCoef %>% filter(term=='(Intercept)') %>% mutate(Label=paste0(round(estimate,3),'(p=',round(p.value,3),')'),
                                                  group_age=paste0(group,'_','d4')) %>%
  select(c(group,Label,group_age)) -> Labels
#Values
df2 %>% group_by(group,group_age) %>% summarise(value=sum(value)) %>% ungroup() %>%
  group_by(group) %>% filter(value==max(value)) %>% select(-group_age) -> values
#Combine
Labels %>% left_join(values) -> Labels
Labels %>% mutate(age=NA) -> Labels
#Plot
ggplot(df2,aes(x=group_age,y=value,fill=age)) +
  geom_text(data=Labels,aes(x=group_age,y=value,label=Label),fontface='bold')+
  geom_bar(stat='identity')+
  facet_wrap(.~group,scales='free')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 geom_smooth 将 glm 拟合到分数 的相关文章

  • R - 重塑 - 熔化错误

    我正在尝试融化数据框 但出现了这个奇怪的错误 有什么想法吗 str zx7 data frame 519 obs of 5 variables calday new Date format 2011 01 03 2011 01 04 201
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 当设置 coord_fixed 时,ggplot/shiny 中的鼠标悬停坐标是错误的

    我正在使用问题中的答案 当您将鼠标悬停在闪亮的 ggplot 上时出现工具提示 https stackoverflow com questions 27965931 tooltip when you mouseover a ggplot o
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • 如何在Rstudio中快速给几个单词加上引号?

    如何将 MI ID FL 转换为 MI ID FL 而无需键入每个双引号 Hmisc 包有一个函数 Cs 它将评估逗号分隔的文本是否带有引号 Cs MI ID FL becomes MI ID FL
  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • R - 基于列名称的子集

    我的数据框有超过 120 列 变量 我想根据列名称创建子集 例如 我想创建一个子集 其中列名称包含字符串 心情 这可能吗 我一般用 SubData lt myData grep whatIWant colnames myData 我很清楚
  • 计算 R 行中的非零条目数

    我有以下类型的数据 mode1 mode2 mode3 1 8 1 0 2 0 0 0 3 6 5 4 4 1 2 3 5 1 1 1 数据使用dput structure list mode1 c 8L 0L 6L 1L 1L mode2
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 在 R 上安装 TDA 包时出错:目标“diag.o”的配方失败

    使用 Ubuntu 16 04 和 R 3 4 1 安装 R 包 TDA 时收到错误消息 它似乎与制作 CGAL diag cpp 和 或 diag o 最后的完整错误打印输出 有关 我仔细看了这个 在 R 上安装 TDA 包时出错 htt
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x

随机推荐

  • 无论如何,要让(包装)NSTextField 在按回车键时写入回车符?

    我想在我的应用程序中使用可能包含回车符的换行文本字段 有没有什么方法可以强制 NSTextField 对象在文本区域中写入回车符 而不是在按下 Return 键时将其操作发送到目标 这涵盖在技术问答 QA1454 http develope
  • 如果小于则 MIPS 汇编分支

    我一直在开发一个非常基本的 MIPS 程序 用于计算门票销售的一些内容 我已经实现了所有功能 但是当我执行 IF 语句 blt gt 如果小于则分支 时 我遇到了一些错误 我将以下数据存储在临时寄存器中 t0 of VIP tickets
  • 如何禁用 ion-datetime 中的特定日期?

    我在用离子日期时间 https ionicframework com docs api components datetime DateTime 用于选择我的特定日期Ionic3 Angular应用 我想禁用某些特定日期ion dateti
  • 可以有多个“:root”选择器吗?

    在 TWBS 4 中 bootstrap css 有一个 root带有颜色变量的选择器 Can my 子样式表还有有一个 root选择器 用于我自己的变量 我正在猜测 root 可以像任何其他选择器一样被覆盖和添加 但我还没有找到任何讨论或
  • 动态创建方法中的 Ruby 动态参数

    我有以下类型的方法定义 method name foo method arguments bar baz method mandatory arguments quux gt true method body gt quux bar baz
  • JavaFX 8,带有复选框的列表视图

    我想创建一个简单的ListView 我发现我可以使用 setCellFactory 方法 但我不明白如何正确使用它们 到目前为止我有 myListView setCellFactory CheckBoxListCell forListVie
  • 使用替代语言代码的异步语音识别响应没有语言代码

    我正在尝试使用新的测试版替代语言功能 https cloud google com speech to text docs multiple languages允许在创建转录作业时提供一组语言 并返回检测到的语言以及该语言的转录结果 当我从
  • 如何访问新的浏览器选项卡

    瓦蒂尔菜鸟在这里 我正在尝试连接并操作新生成的浏览器选项卡 但对如何识别新选项卡有点困惑 这是我所拥有的 Windows 7 32 位 IE 10 红宝石 1 9 3 p392 TDM 32 4 5 2 本地宝石 瓦提尔 4 0 2 x86
  • JSF:如何不在验证消息中显示元素 id?

    我有一个简单的 JSF 表单 对输入文本进行了一些验证 就像是
  • jquery 自动完成下拉菜单是透明的

    我正在尝试在我的一个文本字段上使用 jquery 自动完成功能 除了下拉列表由于某种原因是透明的这一事实之外 一切似乎都正常 我链接了 jquery ui js 和 jquery ui css 两者都是版本 1 11 4 似乎可以正常加载值
  • 调度另一个 Substrate FRAME Pallet 中定义的函数

    我熟悉实现此问题标题中描述的目标的一种机制 在调用在另一个托盘中编写的外部 如 Sudo 托盘或实用程序托盘中定义的多重签名功能 跨托盘调度功能还有哪些其他选项 具体来说 我想包括一个托盘 托盘 A 作为Trait 另一个托盘 托盘 B 的
  • 使用 re.findall() 替换所有匹配项

    Using re findall 我已经设法返回字符串中正则表达式的多个匹配项 然而 我返回的对象是字符串中的匹配列表 这不是我想要的 我想要的是用其他东西替换所有匹配项 我尝试使用与您在 re sub 中使用的类似语法来执行此操作 如下所
  • 以正确的方式重用 setter 和构造函数中的验证逻辑

    我有一个类 其中的属性带有自定义设置器来执行验证 我也希望能够将该属性作为构造函数参数传递 并从构造函数中调用 setter 以重用验证逻辑 class Part object def init self pn self pn None s
  • 如何以编程方式切换 Chrome 的 FPS 仪表?

    经过搜索 我发现this https stackoverflow com questions 22038065 show fps meter chrome 33主题 但这就是如何通过用户界面启用 显示仪表 我想知道是否可以通过启用 禁用仪表
  • 在 Oracle 过程中的字符串中调用函数

    我使用 Oracle 10g 编写一个应用程序 我目前面临这个问题 我将 文件名 作为 varchar2 类型的参数 文件名可能包含的示例值是 TEST to char sysdate DDD 在该过程中 我想获取该文件名的值 如 TEST
  • 是否有使用频率对数除法的 FFT?

    维基百科的小波文章 http en wikipedia org wiki Wavelet Comparisons with Fourier Transform 28Continuous Time 29包含以下文字 离散小波变换的计算复杂度也
  • 如何在 R 中通过高效过滤和分组来对数据进行子集化

    我正在开发一个项目 正在寻求一些帮助以使我的代码运行更有效 我搜索过类似的问题 但似乎找不到像这个问题那么细致的问题 我想出的解决方案非常笨拙 我相信一定有一种更有效的方法来使用像这样的包来做到这一点dplyr data tables et
  • 查找与所有类别匹配的产品 (Rails 3.1)

    我正在努力处理 Rails 3 1 1 中的 ActiveRecord 查询 我有 2 个模型 产品和类别 从产品到类别有一个 has and belongs to many 一个产品可以有多个类别 我正在尝试编写一个搜索查询 它将找到具有
  • Jackrabbit Oak:入门并通过 RMI 连接到独立存储库

    我对长耳大野兔和长耳大野兔橡树完全陌生 不过 我与 Alfresco 进行了很多合作 这是另一个符合 JCR 的开源内容存储库 我想启动一个独立的 Jackrabbit Oak 存储库 然后通过 Java 代码连接到它 不幸的是 Oak 文
  • 使用 geom_smooth 将 glm 拟合到分数

    这篇文章有点相关这个帖子 https stackoverflow com questions 62974766 removing alpha transparency from ggplot legend and setting x axi