在计算机实验室教授 R 语言的好方法是什么?

机器算法验证 r 教学
2022-01-18 12:26:32

在介绍性书籍或学习 R 的方法上有几个很好的问题和答案集,例如这里这里但我有一个稍微不同的问题 - 在计算机实验室运行一个小时的会话(或几个这样的会话)的最佳方式,这将使人们开始使用 R,熟悉它的基本方法等。

我目前的计划是有效地完成 Verzani 的 SimpleR 之类的介绍性章节,然后介绍一个熟悉的数据集,但是还有其他人们发现有用的方法吗?例如,直接引入真实数据好还是以更抽象的方式解决问题?我应该详尽地介绍如何使用方括号,还是用格子图形的例子来激发人们的兴趣?

我的目标受众熟悉统计数据(尽管不是专家)和有能力的 SPSS 用户;除了你在 SPSS 和类似的东西中获得的那种宏和脚本之外,不熟悉编程语言。

任何提示或对课程计划的参考将不胜感激。但是,我不想复制许多介绍 R 的在线材料的好列表 - 严格参考面对面的教学问题。

3个回答

我会主张一种完全不同的方法。我看过从两个不同角度教授的 R 教程:一种是构建块方法,向用户介绍 R 的基本概念,另一种是震惊和敬畏方法,其中向用户展示 R 的惊人功能,但留下对如何做任何事情的了解相对较少。后者肯定更能引起学生的共鸣,但在实际培养用户方面似乎没有一个非常有效。

相反,我会在 SPSS 中执行一个常见且相对简单的任务,然后将其转换为 R,您会有点假装天真 - 例如,按照 Xi'an 的极好建议,查找一些所需的函数,??而不仅仅是从记忆中召回正确的功能。您的新手在学习 R 时几乎肯定会转换现有流程,而不是从头开始编写它们 - 那么为什么不向他们展示您将如何进行呢?

一个很好的例子可能包括加载数据、执行一些描述和弹出一些基本图。 lm()可以非常非常简单,并产生他们可以理解的结果,并且可以与 SPSS 输出进行比较,因此也可以很好地涵盖。

对于家庭作业,让他们尝试转换他们的一个简单过程或加载和探索他们非常熟悉的数据集。给他们一些一对一的时间来找出哪里出了问题,然后在下一个会话中通过更多示例转换来涵盖这些问题。您列表中的概念将不可避免地出现(我的赌注:因素与字符向量,for 与 apply) - 然后您将有一个涵盖它们的真实动机。如果他们没有出现(attach),那么他们还不是真的需要 - 如果这意味着你的新手在早期(for而不是apply)编写一些非惯用代码,我看不出有什么害处。

这样,你的学生可以像外语学生一样进步(或者至少是我做的):简单表达的粗略翻译会激发对更复杂表达的渴望,从而导致对语法的更深入理解的渴望,最终导致惯用表达。不要过早跳到“语法”,也不要太担心教他们他们不问的东西,因为他们可能会忘记它。关于惯用表达的温和指针很棒(forvs apply),但主要是让他们自己生成输出和探索。

好的,到目前为止,这是我自己的答案,关于我认为可以让人们开始并激励他们学习更多的东西(我正试图让他们摆脱 SPSS,它实际上不能做我们需要的一些事情,例如复杂的调查分析,至少无需购买更多我拒绝购买的模块)。

在第一次会议结束时,您应该能够:

基本

  • 使用界面进行简单的计算(使用 R 作为计算器)
  • 启动、保存和加载脚本窗口并有效地使用它
  • 在工作区中创建和删除对象
  • 查看哪个文件夹是您的工作文件夹
  • 了解 P:/R/yourid 文件夹的工作原理以及退出时保存工作区的作用
  • 加载包含 XXX(我们常用的数据)的工作空间的图像
  • 列出内存中的对象
  • 列出数据框中列(变量)的名称
  • 将对象打印到屏幕上
  • 附加和分离数据框
  • 了解含义:对象、函数、参数(函数)、工作区、向量、数据框、矩阵、数字、因子
  • 知道如何查找函数的帮助
  • 采用 ??查找相关功能列表
  • 在哪里上网以及我们的本地书籍和局域网以获取更多资源
  • 了解足够的 R 基础知识以参加有关特定统计技术的实验课程

数据操作

  • 使用 : 运算符创建数字向量
  • 为一个变量做一张计数表
  • 对两个变量进行计数交叉表
  • 创建一个新对象(例如上面的表格之一)以进行进一步操作
  • 转置矩阵或表格
  • 使用 tapply() 通过一个因子创建一个连续变量的均值向量
  • 使用 cbind() 或 data.frame() 将多个向量绑定在一起
  • 使用 [] 创建矩阵的子集
  • 创建一个简单的变换,例如对数或平方根

统计数据

  • 计算两个连续变量的相关性

图形

  • 创建连续变量的直方图
  • 创建一个图形窗口并将其分成 2 或 4 个部分
  • 创建连续变量的密度线图
  • 创建两个连续变量的散点图
  • 向散点图添加一条直线(垂直、水平或 ab)
  • 为轴和标题创建标签

三节课结束并在其间进行一系列练习时,您还应该能够:

基本

  • 以 SPSS 或 .csv 格式导入数据
  • 删除工作区中的所有对象以重新开始
  • 使用包库
  • 保存工作区图像并了解 R 和内存的基本原理
  • 生成随机变量
  • 使用 c() 创建一个向量
  • 对去哪里学习新方法和技术有一个很好的感觉

数据操作

  • 在真实数据集上使用聚合(),例如按月份和国家/地区的访客人数
  • ==、!= 和 %in% 运算符;逻辑向量;并使用它们对数据进行子集化
  • ifelse() 并使用它来创建新变量
  • 最大值、最小值和类似函数以及它们如何与向量一起使用
  • 创建一个向量或矩阵来存储大量结果
  • 使用循环多次重复类似的功能
  • 使用 apply() 将函数应用于矩阵的每一列或每一行
  • 创建有序因子
  • 使用 cut() 重新编码数值变量

统计数据

  • 列联表的卡方检验
  • 稳健版本的相关性
  • 将线性模型拟合到两个连续变量,将结果放在一个对象中并使用 anova()、summary() 和 plot() 查看结果
  • 充分了解模型及其在 R 中的工作方式,以便准备好将您的技能应用于更广泛的模型类型
  • 使用 boot() 对 cor()、mean() 或 var() 等基本函数执行引导
  • 在现实生活中的数据集上使用 sample()

图形

  • 给定不同水平的因子,创建连续变量的格密度线图
  • QQ规范
  • 用不同的颜色和字符点构建散点图,显示一个因素的不同水平;向现有散点图添加点或线
  • 添加图例
  • 点图
  • 错误栏()
  • 使用循环在页面上绘制多个图表

在 Peter 的列表中,我要添加:

  1. 数据帧子集:观察子集(例如,3 以上的所有响应),变量子集。
  2. 使用 ifelse 语句(这对我来说是一个巨大的学习曲线,我一直在尝试使用 if 语句的类型),尤其是嵌套的 ifelse。
  3. 使用聚合命令将数据汇总到较小的数据框中。
  4. 学习使用 == 运算符。
  5. 使用 <- 而不是 =
  6. 重命名变量
  7. 基本向量化陷阱,例如 SAS 中的 max(A,B) 不会像 R 中的 max(A,B) 那样做,如果 A 是数据帧中的变量而 B 是单个值。为了执行 SAS 代码(可能还有 SPSS 代码)的等效操作,我使用了 ifelse 语句。
  8. 使用 with 而不是 attach。:)

更多想法:他们可能在 中使用COMPUTE了很多SPSS,所以介绍如何做到这一点R会很好。另外,如何RECODE在 R 中设置变量。当我使用时,SPSS我认为我的大部分“非分析”工作都是使用这两个命令。