zhangjunpeng的个人博客分享 http://blog.sciencenet.cn/u/zhangjunpeng

博文

R入门十个简单规则

已有 499 次阅读 2024-6-17 10:46 |个人分类:科普|系统分类:科普集锦

R入门十个简单规则

跨学科对数据科学技能的需求导致了大学数据相关项目、独立课程和其他学习材料的大量增长。虽然需求很高,但项目管理人员经常很难找到教师。许多学习者最终自学成才,学习曲线非常陡峭。另一方面,具有深厚研究背景的科学家往往在缺乏经验或指导的情况下进行教学。为忙碌和/或经验不足的教师提供更好的资源,是满足编程技能教育需求的解决方案的一部分。

开放教育资源(OER)运动通过提高免费材料的质量、深度和可用性推动了数据科学的发展。这包括教科书、教程、小插图、数据集、软件工具、案例研究,当然还有编程课程。尽管存在着挑战,比如人们对计算机的认识和使用,但教育资源的民主化使全球受众都能获得高质量的内容。这反过来又会促进合作和创新。随着数据科学继续影响我们生活的方方面面,我们必须考虑在课堂和环境中采用材料的关键要点。

在这里,Hoffman等人为负责教授初学者编程的教师提供指导,特别是R语言的介绍。它们的观点来自于约翰霍普金斯大学公共卫生学院、华盛顿大学和弗雷德哈钦森癌症中心等机构的300多名专业人士、研究生和本科生实习生的共同教学。学习者通常缺乏计算机科学背景,而且经常要兼顾全职工作和课程。他们提出的10条规则是从教授R语言的经验中提炼出来的关键反思。希望这些规则能帮助教师们规划自己的课程结构,结合一般的指导和方法,并了解学习者可能遇到的具体陷阱。

规则1:内容要密集

大多数人都感受到日常分心的压力,比如回复和阅读电子邮件、垃圾信息和各种其他提示音。这些形式的交流,虽然(可能)很重要,但可能会分散注意力,妨碍深入工作。编程是关于解决问题的,如果你在考虑你的待办事项清单上的下一个任务,这可能会令人沮丧甚至不可能。建议用一种浓缩的形式来介绍R,而不是用小块的方式来学习R,这样可以最大限度地减少学习者的分心。强化课程可以带来更好的学习者体验和结果,如更高的课程有效性、更低的感知压力、更好的注意力和更高的学生成功率。作为讲师,你还应该在精简课程中尽可能减少会议和不相关的通信,充分致力于为学习者提供服务。

学习编程语言和学习口语没有什么不同。它需要专注、承诺和实践。一定程度的沉浸感也是有帮助的。例如,课程公共卫生研究人员R入门”(1)在约翰霍普金斯大学夏季和冬季研究所进行,为期9天,每次3小时。会议被记录下来,以帮助参与者复习材料,并最大限度地提高可访问性。在9天的互动之后,学习者有一周的时间来提交作业和期末项目(见规则6)。根据经验和学生的反馈,其形式有效地平衡了R的沉浸感和措施,在很大程度上防止学习者感到不知所措。

image.png 

1 约翰霍普金斯大学的“R入门课程为期9天,之后是独立项目。在第1周,介绍了再现性、数据输入、基础R、数据子集、汇总和清理等主题。第2周包括数据操作、可视化GUI的介绍、程序化可视化、统计和函数。第三周允许学习者完成项目

规则2:团队教学

没有一个讲师在R编程的各个方面都有专业知识。将教学视为一个团队,多个教师轮流深入研究主题。教学团队在复习材料时提供更广泛的技能、知识和个性。以不同方式解释问题的解决方案,这有助于为更多的学习者解锁编程原理。团队教学还有其他好处,如对教师提供更多的专业和社会支持。

无论你的团队多么接地气,许多学习者都觉得编程很吓人。学习者经常有很多问题,或者不知道该问什么问题。利用SlackZoom聊天工具来促进沟通和同行协作。这些平台使学习者能够提出问题,寻求澄清,并以一种更熟悉的方式从同龄人的对话线索中学习。Slack等平台上的异步交流可以补充现场会议,并适应不同的学习风格。确保有充足的提问机会,既可以直接向你的团队提问,也可以在公共论坛上与同事交流。

作为一个教师团队,管理这些沟通渠道变得更加容易。例如,当一名教师指导讲座和演示时,另一名教师可以通过Zoom聊天或Slack提供实时帮助。这种方法创造了一种支持性的学习氛围,并确保学习者在整个学习过程中获得及时的指导。这种支持对于包容和多样化的学习者群体至关重要。它还确保演示的讲师能够保持主题并坚持在预期的时间限制内。

规则3:使用动态文档进行可重复的教学

维护R的当前版本可能是一项挑战,更不用说跟上R生态系统的不断更新了。使用版本控制系统(GitGitHub)进行深思熟虑的规划,可以使更新更容易,并最大限度地减少上课前的准备时间。为了确保材料在许多发布平台上的一致性,作者们设计了一个内部基于Github的工具,称为OTTR (ottrproject.org),用于从纯文本R Markdown文档自动渲染材料,包括网站。使用GitHub的其他功能,例如问题和项目,实时跟踪更改和想法。这简化了学习者识别和解决课程材料中难点的过程,在它们出现之前,在你忘记之前。

同样,建议在现场演示和实验室中使用R MarkdownQuarto文件格式。使用这些工具可以鼓励初学者遵循最佳实践,包括默认情况下将代码组织成部分和注释代码。对于经验丰富的程序员来说,在主机中快速输入内容可能要快得多,但初学者通常缺乏应该保存哪些代码以及哪些代码可以丢弃的直觉。学习者应该练习将所有代码保存在可复制的文档中,这样他们也可以在整个过程中做笔记和记录他们的想法。

规则4:直觉优先于记忆

编程不仅仅是记忆函数。在编程入门课程中,学习者应该开始培养对语言的直觉。换句话说,他们将开始理解函数、对象和代码块如何排序和定向的语法。然而,学习者经常会陷入细节中,感到不知所措。重要的是要向学习者重申,关键目标是练习并获得对R编程的熟悉和直觉。

强烈建议学习者从一开始就具备这种期望。明确这个目标可以帮助他们改变对自己经历的态度和期望,变得更加积极和以成长为导向。他们也更有可能掌握未来R编程之旅的关键技能,比如解释文档和寻求帮助。在代码就绪的大型语言模型(ChatGPT)时代,更重要的是教授如何解释、测试和调试,而不是回忆特定的函数。

为了鼓励直觉,在断点处包括关键函数的摘要,例如在进入编码实验室之前或在模块结束时。这有助于学习者专注于关键功能和行为的应用,而不是回忆。与课程内容相匹配的总结页和小抄也可以作为整个课程的关键参考点。

另一个策略是让你的班级接受“谷歌搜索”的实用解决方案。教学习者如何适当地搜索,参考文档,并以批判的眼光评估来自StackOverflow等众包论坛的代码。您还可以解释说,专业人员定期检查文档,因为软件包经常更新。分享你如何寻找答案是成为一个真正的老师的一部分,这可以导致更有意义和更深入的学生学习。

规则5:增加实时代码和实验时间

与讲师一起进行实时编码使初学者更容易理解编程过程、代码调试和良好的编码实践。虽然在大班教学中实施起来可能很有挑战性,但实践经验对于学习者整合新信息、犯错误和相互学习至关重要。建议优先进行现场编码演示,并为学习者分配充足的实验时间进行练习。在学生的反馈中,这一直被强调为最强的课程组成部分。

在现场演示时,在门口检查一下你的自尊心,在全班面前接受你犯的错误。这是一个绝佳的机会,你可以问全班同学,“谁能指出我哪里出错了?”让我们猜猜是什么导致了这个问题,甚至让我们查阅文档以获取线索。对于团队授课的课程,将班级分成更小的小组进行实验是很有用的。学习者有不同的偏好,有些人希望在实验过程中得到更多的指导,有些人希望自己先尝试所有的东西,而另一些人则需要更多的一对一的关注。教师可以采取不同程度的指导,以满足这些偏好。

规则6:以一个项目结束课程

就像学习开车一样,现实世界的实践可以说是成为精通的最佳途径。R编程应该是一种实用的、以目标为导向的技能,并牢记负责任的实践。为了加强这一点,你应该将课程围绕一个综合项目展开。采用以项目为导向的方法使学习者能够将概念应用于现实场景,包括他们自己的(非敏感的)数据,从而培养更深层次的理解、好奇心和动力。这对研究生和专业人士尤其有效,因为他们更有可能拥有自己的数据。你可以进一步鼓励在项目选择上的创造性和自主性,以迎合个人的兴趣和目标。缺乏数据的本科生或学习者将受益于更多的指导,例如他们可以找到公开可用数据的存储库。最终,项目应该通过一个明确的标准来测试知识的应用,如果提前完善,评分压力就会小一些。

确保学习者可以轻松访问许多在线资源,在那里他们可以定制他们的项目并继续他们的发展。在可能的情况下,花时间单独与班级成员见面,并支持他们找到正确的下一步。以开放的心态进行这些对话,讨论可能包括申请学术界和工业界的工作,如何处理他们特定类型的数据,或者如何转换来自其他平台(SASStata)或接口(Shiny)的命令。请记住,您现在是学习者的数据科学榜样。

规则7:经常获得(并给予)反馈

课堂调查是了解学习者背景、建立融洽关系、使课程更具包容性的极好方法,尤其是在在线环境中。使用一个免费的平台,比如Google Forms,来收集关于学习者兴趣的信息。例如,你可以询问他们的专业/研究领域,他们为什么选这门课,以及他们以前的计算机经验。这些信息有助于课程的基础,帮助您确定在基础与更高级或小众主题上花费多少时间。了解学习者的一般兴趣可以帮助你选择更相关的数据集和示例。

确保学习者能够在整个课程期间提供反馈。使用“脉冲检查”反馈表,在整个课程中可以多次使用。鼓励学习者每天提供反馈,尽管这不是必需的。将表格默认为匿名,如果学习者愿意,可以选择填写电子邮件地址或姓名。反馈表可以揭示学习者的总体感受(如李克特1-10量表),但也可以帮助你了解哪些进展顺利,哪些具有挑战性,节奏如何,或者他们希望看到更详细的内容或回顾(如通过免费文本)。例如,在课程早期收到的反馈是,学习者对清理字符数据(即使用stringr)和处理缺失数据(即使用naniar)更感兴趣。在以后的迭代中,将更详细地研究这些主题,而不是其他主题,如“日期”数据类型。匿名表格也为学习者提供了提醒您注意更严重问题的机会,例如与行为准则有关的问题。

在提供反馈时,努力营造一个包容和支持的环境,以鼓励持续成长和改进。不是简单地纠正错误,而是鼓励实践、机智和解决问题的技能,因为它们在R编程的实际应用中是必不可少的。这包括向学习者展示他们如何在文档或小短文中找到正确答案,搜索StackOverflow.com,或使用ChatGPTPhind等人工智能工具来翻译一大块代码。重要的是,如果学习者将代码定位到其他地方,他们应该能够在一个非常一般的层面上解释正在发生的事情和原因。与任何教学一样,如果适用的话,要非常清楚学习者的评分标准(见规则6)

规则8:提交到tidyversebase R

R中,您可以通过从一开始就致力于Tidyverse生态系统或基础R来帮助新学习者建立坚实的基础。在相关语言或语言方言之间切换会削弱学习者的信心,造成混乱。例如,学习器经常纠结于何时使用dplyr::pull()提取数据集的一列作为向量。混合基本的$符号使水更加浑浊。新程序员可以使用reader::read_csv (Tidyverse)read.csv() (base R)来完成他们的最终目标,并且在开始时不需要知道这两种方法。

R生态系统的选择取决于您的经验和舒适程度,以及您的学生受众的目标。例如,如果是公共卫生领域的研究人员和从业人员,他们之前没有R经验。这些学习者对数据清理、分析和可视化更感兴趣。Tidyverse很好地实现了这些目标,并因其可读性、一致性和用户社区而受到教师的重视。然而,如果你的学习者对软件开发、依赖性最小化、优化或数学应用更感兴趣,base R可能更合适。 一些研究人员发现基础R对学习者来说更容易,而另一些研究人员则发现没有差异。

规则9:从数据整理开始

R编程的介绍应该侧重于数据整理和基本统计,而不是深入研究数据类型、类和函数式编程的复杂性。大多数R用户对分析和数据转换感兴趣,很少有用户将自己描述为软件开发人员。现实情况是,大多数R学习者不会编写软件,至少不会马上编写。数据整理或清理、准备、转换和/或操作数据的过程,通常是数据分析中最耗时的部分,也是可视化、报告和其他统计见解的先决条件。

数据整理在大多数领域都是一项实用而重要的技能,它允许学习者从一开始就使用有趣的、真实的数据集。一旦学习者通过数据清理和操作技术获得对R的直觉,他们将为探索更高级的主题做好更好的准备。正如规则8所建议的那样,讲师在数据整理上花费的时间确实在一定程度上取决于你的听众。将R技能带回到应用领域的学习者将从花更多时间处理数据中受益。有其他编程语言经验的学习者可能更渴望更快地进入高级主题。通过调查了解你的班级(规则7),这样你就可以做出相应的调整。

规则10:了解常见的陷阱

明确指出常见错误可以帮助学习者避免错误,而不会增加焦虑。它还可以帮助他们专注于实际学习所需的材料。鼓励包含专门解决常见错误的资源,在开始新主题时介绍常见错误,并在演示过程中展示常见错误。鼓励学习者分享和描述错误通常会让其他学习者感到更舒服和自信。这些时刻也提供了一个讨论为什么会发生这些错误的机会。一些常见的陷阱参见表1

1 在教授R入门内容时遇到的常见陷阱,以及建议的解决方案和/或缓解措施

image.png

R语言的学习曲线是陡峭的,许多学习者希望有一个平缓的入门阶段。然而,除了规定自我指导的前期工作和提供保证之外,还没有找到一种持续有效的方法来解决这一挑战的根源,同时又不牺牲内容。有趣的是,那些不喜欢学习曲线的学习者通常觉得这门课很有意义,他们学到了很多东西。最终,在指导时你会遇到许多权衡,你应该考虑到你的听众的利益和缺点。

鼓励探索更多的资源和参考资料,以进一步提高您的教学方法。这些不仅包括学术期刊,还包括Data CarpentryRStudio Education等平台上的教材和课程计划,以及博客、数据科学会议和包装小插图。可以共同为繁荣的社区和资源收集做出贡献,确保学习者能够获得高质量的编程教育。

犯错误,尝试新事物。谷歌东西,阅读文档。探索新的沟通方式,比如通过社交媒体。利用社区并向同事寻求支持。利用开源资源来发展你的教学计划。讲述你的R之旅,并享受将你所知道的传递给下一波R用户的过程。

参考文献

[1] Hoffman AM, Wright C. Ten simple rules for teaching an introduction to R. PLoS Comput Biol. 2024;20(5):e1012018. doi:10.1371/journal.pcbi.1012018

以往推荐如下:

1. 分子生物标志物数据库MarkerDB

2. 细胞标志物数据库CellMarker 2.0

3. 细胞发育轨迹数据库CellTracer

4. 人类细胞互作数据库:CITEdb

5. EMT标记物数据库:EMTome

6. EMT基因数据库:dbEMT

7. EMT基因调控数据库:EMTRegulome

8. RNA与疾病关系数据库:RNADisease v4.0

9. RNA修饰关联的读出、擦除、写入蛋白靶标数据库:RM2Target

10. 非编码RNA与免疫关系数据库:RNA2Immune

11. 值得关注的宝藏数据库:CNCB-NGDC

12. 免疫信号通路关联的调控子数据库:ImmReg

13. 利用药物转录组图谱探索中药药理活性成分平台:ITCM

14. AgeAnno:人类衰老单细胞注释知识库

15. 细菌必需非编码RNA资源:DBEncRNA

16. 细胞标志物数据库:singleCellBase

17. 实验验证型人类miRNA-mRNA互作数据库综述

18. 肿瘤免疫治疗基因表达资源:TIGER

19. 基因组、药物基因组和免疫基因组水平基因集癌症分析平台:GSCA

20. 首个全面的耐药性信息景观:DRESIS

21. 生物信息资源平台:bio.tools

22. 研究资源识别门户:RRID

23. 包含细胞上下文信息的细胞互作数据库:CCIDB

24. HMDD 4.0miRNA-疾病实验验证关系数据库

25. LncRNADisease v3.0lncRNA-疾病关系数据库更新版

26. ncRNADrug:与耐药和药物靶向相关的实验验证和预测ncRNA

27. CellSTAR:单细胞转录基因组注释的综合资源

28. RMBase v3.0RNA修饰的景观、机制和功能

29. CancerProteome:破译癌症中蛋白质组景观资源

30. CROST:空间转录组综合数据库

 

image.png

 



https://wap.sciencenet.cn/blog-571917-1438517.html

上一篇:面向表格基础模型:现状、挑战和机遇
下一篇:dbCRAF:人类癌症中放疗反应调控知识图谱
收藏 IP: 112.116.155.*| 热度|

1 杨正瓴

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-26 16:38

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部