%…检查最终结果,如下所示此输出$plot2%dplyr::select(“disease status”)%>%filter(row_number()%mutate_all(as.character)%>%pull(“disease status”)))4)现在我们还想为每个分配了集群的患者创建一个表。因此,我们对自己的:clust%排列(cluster_assigment)执行集群和树切割,最终代码:output$cluster_table“/>

指南:一个应用程序在R闪亮可视化活检数据-在一家制药公司

1月7日,2019
通过

(本文首次发表于 塞巴斯蒂安·沃尔夫的媒体报道,并对 188bet appR-bloggers)

教程:R Shining中的一个应用程序,在一家制药公司中可视化活检数据-

了解如何为集群结果的可视化构建一个闪亮的应用程序。该应用程序有助于更好地识别患者数据样本,如。在临床研究期间。

本教程是一项联合工作。本教程由奥拉夫Menzer在一个车间里ODSC西部会议将于2018年在旧金山召开.塞巴斯蒂安狼作为一名生物制药网络应用专家,正在共同实施这个应用程序。

它是关于什么的?金宝搏网址

这个应用程序背后的故事来自于一个真实的部门内部应用程序,它评估了诊断学中的临床研究。

由于临床研究的快速招募,患者队列似乎不均匀。因此,一位研究人员和一位临床研究统计学家想知道,通过这个参数他们可以找到病人,那似乎不适合他们想要的班级。也许在病人的疾病状态标签上有错误?也许一个或两个测量可以用来轻易地找到这样的病人?

这里使用的示例数据是来自1990年研究的真实数据,被称为活检数据集,也托管在UCI ML数据存储库上.本教程中应该构建的应用程序是初步的,并且是专门为本教程构建的。其中的一部分应用于实际的生物统计应用。

起点

请开始分叉教程在:网址:https://github.com/zappingseb/biopharma-app

然后在R会话中运行依赖项的安装:

install.packages (c(“模仿”、“dplyr”,“magrittr”、“igraph”、“viridisLite”,“质量”,“闪亮的”))

如果安装了所有的软件包,您将有一个文件可以处理。这个文件是app.r.这个app.r允许你建立一个闪亮的应用。

我们将使用此文件插入正确的可视化效果和正确的表,以便研究人员完成上述任务。要检查应用程序最终的外观,您可以在控制台中执行runApp(),浏览器将打开应用程序。

app已经包含:

有我们需要的所有输入的侧栏面板

  • 患者滑块
  • 所需群集/组的滑块
  • 选择测量值-的空输入应由您完成。
  • 聚类方法的下拉字段

将提供的服务器功能

  1. 选择度量的空输入
  2. 观察聚类结果的热图
  3. 观察聚类结果的系统发生树图
  4. 查看群集结果的表

它已经包含一个函数,可以为您提供输入数据集biophy和biophy numeric(),因为活检数字是反应性.

在本教程中,我们将通过步骤1-4来构建应用程序

输入数据集

数据集中的病人来自威斯康星大学医院,麦迪逊医生威廉HWolberg。他评估了699名患者的乳腺肿瘤活检结果。截至1992年7月15日;九个属性中的每一个都被分为1到10分,结果也是已知的。共699行,11列。

数据集可以通过app内的可变活检调用。第2-10列存储在反应性活检_numeric()中,后者通过输入$patients进行过滤,不使用所有699名患者,但是在1到100之间。

1)selectinput的构造

选择输入应允许用户不使用所有9个测量变量,但只有他想要的。这将有助于找到测量值,对病人进行分类是必要的。什么是闪亮的selectInput?因此,我们可以通过

?闪亮::选择输入

看到

我们现在需要将这些选项构建为活检数据集的列名称,从2到10。所选输入将是相同的。我们将允许多种输入,所以multiple将设置为true。此外,我们将把输入端命名为“vars”。所以我们可以将app.R文件中的部分输出$variables替换为:

输出$variables<-rendrui({
选择输入(inputid=“vars”,
label = "要使用的变量",
选择=名字(活检)[2:10],
倍数=真,
选定=姓名(活检)【2:10】

})

你就完成了。

2)观察聚类结果的热图

的基本热图函数允许您绘制热图。在这种情况下,我们想改变一些事情。我们希望将hclust函数内的集群方法更改为用户定义的方法。我们可以使用input$method获取用户定义的方法,因为我们已经将这个输入字段定义为下拉菜单。我们必须用我们的方法覆盖默认的hclust方法,方法为:

我的clust<-函数(…){
hclust(方法=我的方法,…)
}
我的方法<-输入$method

请注意,您在这里定义了全局变量my_方法,这在本教程的范围内就足够了。然而,请记住,全局变量在许多其他情况下可能会有问题,并自行研究最适合您的应用程序的内容。

现在对于heatmap调用,我们基本上需要更改一些输入。请参见结果:

热图(x = t (as.matrix (biopsy_numeric ())),Rowv = NA,hclustfun = my_hclust,
labcol=活检$“疾病状态”,
Cy= ViRIDIS(15)

我们需要转换活检数字矩阵,就像我们想让病人在专栏里一样。因为只有一维聚类,我们可以通过将rowv设置为na来切换行标签。hclustun被函数my-hclust覆盖。

对于绘图的着色,我们使用Viridis调色板,因为它是一个色盲友好的调色板。我们列的标签现在不仅仅是病人的id,还有疾病的状态。您可以看到我们在文件R/utils.R中定义的所有列的名称。你可以看到活检的最后一栏叫做"疾病状态"这将用于给每个病人贴标签。现在我们得到:

输出美元plot1 < - renderPlot ({
我的clust<-函数(…){
hclust(方法=我的方法,…)
}
我的方法<-输入$method
热图(x = t (as.matrix (biopsy_numeric ())),Rowv = NA,hclustfun = my_hclust,
labcol=活检$“疾病状态”,
Cy= ViRIDIS(15)

})

第二部分完成

3)绘制系统树

为了绘制系统发生树,我们提供了一个名为phyltree的函数。您可以在r/utils.r中读取函数的整个代码。此功能作为输入

  • 一个数字矩阵> biopsy_numeric()检查
  • 聚类方法>输入$方法检查
  • 集群数>输入$NC检查
  • A颜色函数>Viridis检查

您可以阅读为什么在biopsy_numeric后面使用()在这里.

硬的部分现在是标签。活检数字数据集由患者过滤。因此我们必须过滤标签,了。因此,我们使用

labels=biopsy%>%dplyr::select(“疾病状态”)%>%
筛选(row_number()<=input$patients)%>%
mutate_all (as.character) % > %
拉(“疾病状态”)

这是一个使用R包dplyr的函数式编程的工作流。功能选择允许我们只选择“疾病状态”。filter函数过滤行数。mutate_all函数将as.character函数应用于所有列,最后使用pull将标签导出为矢量。

  • 树节点标签>活检%>%…检查

最后的结果是这个

输出$plot2<-renderplot({
phyltree(x=活检_numeric(),
方法=输入$method,
NC =输入$ NC,
color_func=“Viridis”,
labels=biopsy%>%dplyr::select(“疾病状态”)%>%
筛选(row_number()<=input$patients)%>%
全部变异(如字符)%>%
拉(“疾病状态”)

})

4)根据聚类结果创建表

现在我们还想看看她被分配到哪个组的每个病人。因此,我们自己执行集群和树木切割:

clust<-hclust(dist(biopsy_numeric()),方法=输入$method)
群集分配=树(clust,k =输入$nc) #集群分配

群集分配现在是一个向量,其中包含每个患者群集的数字,如c(1,2,1,1,1,2,2,1,…)。如果我们将这些信息与患者表中的患者和疾病状态相结合,这些信息将是有帮助的。

任务将使用r的cbind函数执行:

out_table < cbind (
cluster_assigment,
活检%>% filter(row_number() <= length(cluster_assigment)) %>% select(c(1,11))
)# cbind

现在,该表将按集群分配进行排序,以便更快地查看哪些患者进入了错误的集群。

Out_Table%>%排列(群集分配)

最后的代码:

输出美元cluster_table < - renderTable ({

#-------执行群集--------------

通过层次聚类进行聚类
clust<-hclust(dist(biopsy_numeric()),方法=输入$method)
群集分配=树(clust,k =输入$nc) #集群分配

#用集群创建一个表,病人id和疾病状态
out_table < cbind (
cluster_assigment,
活检%>% filter(row_number() <= length(cluster_assigment)) %>% select(c(1,11))
)# cbind
#按群集分配排序
Out_Table%>%排列(群集分配)
}

多恩

现在该怎么办?

现在可以运行runapp()函数。

如果你选择100个病人,2集群,“ward.d2”集群和您将看到的所有变量都非常快,患者:

  • 一百万二千九百四十五
  • 一百零一万六千二百七十七
  • 一百零一万八千零九十九
  • 一百零九万六千八百

可以确定为聚集错误的患者。现在,您可以在集群中搜索问题,或者查看这些患者的表单。通过更改标签,例如在phyltree函数调用中使用patientid,您甚至可以检查哪些其他患者对这些患者进行了密切的测量。探索和玩!

进一步阅读


指南:一个应用程序在R闪亮可视化活检数据-在一家制药公司最初发表于数据驱动的投资者介质上,人们通过突出和回应这个故事来继续对话。

留下评论作者,请关注他们博客上的链接和评论: 塞巴斯蒂安·沃尔夫的媒体报道.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻和 教程关于下列主题: 数据科学, 大数据, R的工作,可视化( GGPROTT2, 箱形图, 地图, 动画)编程( RStudio, 斯威夫特, 乳胶, SQL, 日食, 吉特, 哈多普, 网页抓取)统计 回归, 主成分分析, 时间序列, 交易还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择你的味道: 电子邮件, 推特, 1188bet app,或 脸谱网

注释已关闭。

搜索R-blo188bet appggers


赞助商

永远不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

点击此处关闭(此弹出窗口将不再出现)