查看原文
其他

社计文库 | 计算社会科学怎么教?

Jae Yeon Kim等 社计未来 2023-10-24

点击蓝字

关注我们

导语

计算方法在社会科学中的应用正取得越来越多的注目,本文介绍的是在大学里如何教授计算社会科学的心得,虽然讲述的内容是政治学中计算方法的应用,但对于其他的社会科学依然具有重要的启发意义。以此为基点,我们编译这篇文章,以飨读者。


摘要


计算方法已经成为政治科学研究的一个组成部分。然而,帮助学生获得这些新技能是具有挑战性的,因为其对编程的熟练程度有着必然要求,而大多数政治学学生并没有编码经验。本文介绍了一些教学策略,使得从Excel过渡到使用R或Python进行数据分析的过程中不那么痛苦,反而更加激动人心。首先,它讨论了两种使计算方法变得易懂的途径:展现大局和分解工作流程。接下来,我们通过三个例子提供了典型课程的分步指南:学习编程基础知识,处理混乱数据,和交流数据分析。


计算社会科学的精确定义仍然难以捉摸。然而,一个广泛使用的定义是,它是一个跨学科的领域,其中应用了计算工具和技术来推进社会科学研究(Salganik 2019, xviii)。其核心观点是,计算工具和技术可以使社会科学家,包括政治科学家,能够以前所未有的规模对非常规数据源进行创新分析(Alvarez 2016;Grimmer, Roberts, and Stewart 2021)。在大规模的非结构化文本(Grimmer and Stewart 2013; Gentzkow, Kelly, and Taddy 2019)、图像(Won, Steinert-Threlkeld, and Joo 2017; Torres and Cantú 2021),或音频数据(Knox and Lucas 2021)中寻找模式范本曾经耗费了巨大的成本和时间。计算工具和技术已经可以使这些数据的收集(如网页抓取)和分析(如机器学习)更容易、更迅速,并且相当准确。通过补充现有的定量和定性方法,计算方法为学者们解决政治科学中的关键问题提供了许多新的机会(Clark and Golder 2015; Monroe 等人,2015;Brady 2019),从美国的两极分化和错误信息(Tucker et al. 2018)到中国的集体行动(King, Pan, and Roberts 2013)。


机会也伴随着挑战。对于政治学学生来说,学习计算工具和技术是具有挑战性的,因为这需要熟练掌握他们之前几乎没有接触过的编程。他们选择政治学是基于对政治的兴趣,而不是数据分析。人们可能会问,为什么学生需要学习编程语言。如果数据分析只限于传统的定量数据分析(如,假设检验),那么编程语言的知识可能并没有必要。数据分析可以使用Microsoft Excel(Excel)、Stata或IBM SPSS Statistics 等软件。然而,编程教学对于学生学习广泛和快速发展的计算工具和技术是必不可少的。Excel是一个优质的电子表格创建和管理工具,然而,它很少被用来搜索网站,使用机器学习来分析大量的文本数据,或创建交互式数据可视化。它很少被用来进行网络抓取,使用机器学习分析大量的文本数据,或创建交互式的数据可视化。为了进行广泛的现代数据分析项目,有必要从 Excel过渡到适用于现代数据分析的编程语言,如R或Python。


本文介绍了一些策略以使这一过渡不那么痛苦并更加令人兴奋。几年来,我们共同在本科生和研究生水平上以学期制课程和短期讲习班的形式教授了计算社会科学。基于这些广泛的经验,我们首先提出两个原则:(1)展示大局;(2)分解工作流程。随后,我们说明了这些原则在课程设计中的应用,以使具有不同技术背景的学生都能够掌握计算方法。


关于计算社会科学教学实践方面的讨论,是带有警示意味的。一个计算社会科学项目应该从一个理论上的研究问题开始,而不是从最新的计算技术开始。收集尽可能多的社交媒体数据或者应用最强大的机器学习技术并不能直接增加政治科学研究的价值。将计算方法与关键的政治科学议题联系起来,可以提高学生对这种方法的兴趣,从而使他们能够发现这种方法与他们研究调查的相关性(Williams等人,2021)。


然而,有强烈的动机或对实质性问题的更深入了解并不能自动地将研究设想变成研究项目。研究思路的执行需要培训和技术熟练度。能够顺利完成由学生设计的研究项目,不仅涉及计算方法的运用,还需要他们对编程及其实施拥有充分的理解。本文通过介绍降低这些令人激动的新工具和技术的学习障碍的原则和具体步骤,丰富了政治学科领域计算方法教学的讨论。


1.

计算方法教学原则


如果教师在教授计算方法时向学生展现大局或工作流程,可以培养学生的能力。例如,一个教师可能旨在教授数字数据收集,即从网站、便携式文档格式(PDF)文件和社交媒体帖子中收集和解析数据。教师可以在不提及总体目标的情况下解决这个问题,着眼点可以是最新的软件包和库及其在全面的数字数据收集和解析中的应用。这种教学方法有两个限制。首先,最先进的工具在不断变化。这一点在一个快速发展的领域尤为突出,比如计算社会科学。第二,由于时间限制,教学通常依赖于相对直接的,往往是过度简化的案例。如果隐藏的语境没有被澄清,学生可能很难将他们学到的技能转换到复杂的现实世界中去。


由于这些限制,在新工具和技术的开发过程中,必须考虑到大局,即关于具体任务开始和结束的广泛模式。在数字数据收集中,大局被定义为将半结构化数据转化为结构化数据。例如,一个教师可能会教授网页抓取。这项活动的目标是什么?网页抓取这个词提供了一个指示,但并未给出输入和输出数据的清晰含义。如果学生抓取一个网页,他们将获得超文本标记语言(HTML)、层叠样式表(CSS)和JavaScript的组合,这些都是半结构化的数据。尽管它们看起来很乱,缺乏类似电子表格的结构,但它们有其他类型的结构,如键值对。学生可以利用这些结构来定位信息,提取它们,并将这些元素结合起来。因为学生们通常想对这些信息进行总结、建模和可视化,将这些元素保存为类似于电子表格的数据框架是有效的。


学习这一目标有助于学生建立一个可以应用于其他类型数字数据收集的思维框架。由于输入数据类型和所需软件包的不同,PDF文件和社交媒体帖子的收集和解析之间有细微的区别。然而,将半结构化数据转换为结构化数据的总体目标是相同的。对大局的介绍使学生能够认识到广泛的基本模式,并迅速跨技术转移他们的技能。


一旦学生对每个步骤有了认识,就可以教他们掌握全局了。学习如何结合这些组件与学习如何正确执行每个程序同样重要(甚至更重要)(Perkins 2010)。首先,编程的目标是有效地结合(人与机器的交流)步骤来实现识字编程(人与人的交流)(Knuth 1984)。这个过程使学生能够更清楚地感知到他们解决问题的能力。


其次,结合这些步骤需要不同种类的编程技能。由于学习每一个组成部分和学习结合它们的方法之间存在着相当大的差异,所以应该教授关键的元素和整个过程。例如,一个学生可能想抓取一个报纸网站,以收集在特定时期发表的文章。然而,在一个页面上可以显示多少篇文章通常会有限制。这样一来,学生就需要抓取多个页面。为了解决这个新问题(迭代),学生需要了解各种技术,包括它们的优势和劣势,以实现自动迭代(例如,for循环和函数式编程)。


2.

应用


本节重点介绍这些原则在设计以学期为单位的计算性社会科学课程中的应用。以下是三个例子:学习编程基础知识,处理混乱的数据,以及交流数据分析。


2.1 案例1:编程基础知识


政治学家并不需要成为统计学家来使用统计方法。然而,对统计学的充分理解对于正确应用和解释这些方法至关重要。这同样适用于计算方法。学生可以通过在互联网上搜索,即时获得他们的编程问题的帮助。这种做法是学习编程的一个有价值的、不可或缺的部分。然而,复制别人发布的解决方案,并不能提供同样水平的理解。如果学生没有完全理解问题产生的背景,他们最终会再次遇到同样的问题。


R和Python都是面向对象和函数型的编程语言。对象定义了角色,而函数定义了他们的行为。在R或Python中执行数据分析时,学生可以创建,操纵和组合对象和函数。编程不是魔术。它是有逻辑地组合对象和函数的艺术。例如,一个学生使用R导入一个逗号分隔的数值(CSV)文件,并将其保存为一个名称为 "df "的数据框架,使用了CSV导入函数来创建一个新的名为 "df "的数据框架对象。从Excel到R和Python意味着从指向和点击过渡到创建和操作对象与函数。


明智的做法是,先用前几周的时间帮助学生们完全掌握这些基本概念,然后再教他们中级和高级应用。正如Buchler (2009, 527)认为,"一边行进,一边尝试从上下文中找出答案"的学习方法,对于需要技能进步的学科来说是行不通的。学生可以复制、粘贴和运行机器学习的样例代码而不去理解这个过程。事实上,他们的代码运行没有错误,并产生了所需的输出,但这并不一定意味着他们完全理解这个过程。


重要的是要建立学生的信心,通过把他们知道的东西和不知道的东西联系起来,增加他们的理解。学生可能知道各种数据类型,但并不是在计算的意义上。例如,他们可能知道电子表格,但不一定知道数据框架。应该解释出两者的相似之处,电子表格和数据框架有固定的行和列的数量。也应该强调两者的区别,使用颜色来区分单元格在电子表格中是有用的,但在数据框架中却不是,因为当电子表格被导入R或Python中的数据框架时,着色的单元格会丢失。学生们对这些异同的理解将提高他们对数据分析工作流程的理解,以及他们为进一步分析而准备数据的能力。


2.2 案例2:处理混乱的数据


在讲完编程基础知识后,教师应通过展示编程如何提高研究效率来激励学生。除非学生对编程充满热情,否则学习编程就不是他们的目的。因此,应该让他们知道为什么学习编程是值得投入时间和精力的。


数据处理说明了学习编程的好处,因为几乎每个项目都需要它。在定量方法课程中,示例数据往往是预先准备好的。当学生开始处理现实世界的数据时,他们很快发现这些数据是杂乱无章的。80%的数据分析涉及到数据整理(Dasu and Johnson 2003)。学生可以在Excel中执行这项任务。问题是,他们需要手动完成这一工作,逐点进行。在处理大型文件或清理许多文件时,这是非常耗费人力和时间的。点选的方法可能更直观;但是,对于大规模的复杂问题来说,这种方法不太有效。更成问题的是这个过程具有不可重复性。使用编程能够使数据整理的过程可重复且更高效。


Wickham(2014)提出的整洁数据原则是对Codd的关系代数(Codd 1990)的扩展。它们说明了统计和计算分析中数据处理的大局。因此,输入数据需要是一个数据框架,即固定数量的行和列,以方便数据的汇总、建模和可视化。列是变量,而行是观测值。每个观察单元包括一个数据框架(Wickham 2014, 4)。对这个结局的认识使学生能够看到他们混乱的数据的具体问题,并考虑使用R和Python来解决这些问题。这很容易,因为R中的 "tidyr"(Wickham 2021)和 "dplyr"(Wickham等人,2021)软件包和Python中的 "pandas "库(McKinney等人,2011)为实现这个基础性框架提供了全面工具。


为了提高学生对这些问题的认识,可以根据数据的问题对数据处理进行分类。例如,一类问题是数据集的形状。为了方便人眼检查数据,许多电子表格是以宽格式存储的。如果这些是从2000年到2010年逐年收集的行政数据,数据集可能有标题为2000至2010年的列。不幸的是,总结、建模和可视化需要一个很长的格式。为了重塑数据,导师应该引导学生创建年份变量,代表所有这些年份的名称。


在学习数据整理问题和解决方案的类型学时,学生不应忽视大背景。因为有很多种数据整理技术,他们很容易迷失在细节中而看不到大局。整理数据的原则很有价值,因为数据有一个完整的生产周期。为什么他们要关心以一种有利于进一步分析的方式来准备数据?原因是,原始数据没有什么价值。它们无法自我解释。人们需要对原始数据进行总结、建模和可视化,以便为其他人增加价值。


2.3 案例3:交流数据分析


教师应考虑所提供的课程的独特价值。推理思维和计算思维在计算社会科学教学中同样重要(Nolan and Temple Lang 2010)。然而,统计和因果推理课程在大学和学院中更为普遍。计算社会科学课程的内容应该是独特而有价值的。正如数字数据的收集和整理一样,数据可视化是一个计算方法可以轻松补充其他训练方法的领域。


数据处理和可视化教学带来了不同类型的挑战。正如整洁数据原则中所总结的那样,数据整理有一个统一的目标,而数据可视化则没有。这里有一些抽象的原则,比如创建准确的、容易解释的和美观的图表(Tufte 1985)。然而,这些原则的实施是有背景的。使用直线图或柱状图或对数重新缩放Y轴的决定取决于(1)要传达的信息和(2)目标受众。区别在于,数据处理涉及建立一个有效的仓库,而数据可视化涉及构建一个有吸引力的门面。


在教授学生数据可视化时,重点应该是他们想要传达的关键信息。仅仅教授如何用R和Python中流行的包和库创建点、条或线图是不够的。学生们需要知道适合传递各种形式的数据的可视化类型。例如,用点(或散点)图表示原始数据点是很有价值的,因为描述性统计的总结可能会产生误导。Anscombe(1973)发现,四个数据集包含了几乎相同或回归的模型的属性(包括回归线)。原始数据点的可视化有利于快速发现这些模型的表格总结中遗漏的信息(Healy和Moody 2014)。


在了解每种可视化技术的目的后,学生可以学习从头开始建立他们所选择的可视化。然后,他们将学习到数据和图形之间的关系。这将提高他们对用于图表美学的变量(如,x轴和y轴)的理解,以及在他们需要方便向观众解释时增加和减少信息的能力。这种数据可视化方法被称为图形的语法(Wilkinson 2005),由于R语言中的ggplot2库被广泛接受(Wickham 2006, 2010),在学术界和工业界得到了广泛的应用。


2.4 选修科目


网络抓取、计算性文本分析和机器学习教学是可选的。这些是收集和分析大规模复杂数据,如文本、图像和视频的强大工具。然而,在同一课程中教授编程基础、数据处理和可视化,网络抓取、计算性文本分析和机器学习可能会让人不知所措。如果要这样做,应该让学生知道,这些课题是可供选择的。在他们研究兴趣的基础上,学生应该能够选择这些工具中的一个作为他们的最终项目。


2.5 评估


为了提供经常性的反馈,教师应该给学生许多小作业,而不是一个大作业。设计小练习可能会有问题。如果它们没有挑战性,那么学生就不会学到新的信息;如果它们太复杂,他们可能会失去信心。为了达到平衡,需要遵守一些原则。首先,练习应该是基于讲课中所涉及的内容。其次,应该鼓励学生将他们的技能应用到课堂上所讲的内容之外。第三,练习应该有一个相应的步骤指南和模板(如,R Markdown或Jupyter笔记本)。从本质上讲,学生需要得到他们可以使用的框架,可以探索的机会,以及可以在没有过度风险的情况下参与探索的约束条件(Wickham 2015)。


如果教师选择要求完成期末项目而不是考试,这些小作业可以使学生逐步发展必要的技能。他们可以增强动力,以尽最大的努力来完成每项任务,并在最后的项目中证明他们有能力整合在学期中获得的技能。


3.

结语


使计算方法可及的最后一项建议是创造一个包容性的学习环境。对于政治学学生来说,编程作为计算方法的入门,是一个具有挑战性的技术科目。错误应该被当做自我完善的机会,而不是惩罚的理由。应该教学生写代码,这样他们就可以快速,经常且系统地经历失败的经验教训。计算方法之所以有价值,不是因为它们能防止人们犯错,而是因为它们能使错误透明化。思考过程会留下数字痕迹,也就是说,一个人的代码揭示了他们对问题的定义和解决方案。编程中的调试类似于写作中的修改。写出不完美的代码是很好的,学生们可以通过重新评估他们的代码,使其更有效、更有文采,并将学到的经验应用到其他类似的案例中,从而提高他们的技能。了解编程错误是如何产生的为学习计算方法铺平了道路。



本文译者:朱明钰,宾夕法尼亚大学社会政策与实践学院硕士研究生

原文:Kim, Jae & Ng, Yee Man Margaret. (2021). Teaching Computational Social Science for All. 10.31235/osf.io/pf7n6.



说明:本文由中国社会科学院社会学研究所社计未来团队翻译和校对,如欲转载,请务必标明出处和作者译者姓名。


注释:

Jae Yeon Kim,通讯作者。加州大学伯克利分校政治学系博士生。jaeyeonkim@berkeley.edu

Yee Man Margaret Ng,伊利诺伊大学厄巴纳-香槟分校新闻系助理教授。ymn@illinois.edu




推荐阅读:

社计文库 | Science 最新综述:计算社会科学十年,反思与展望

社计文库 | 挖掘AI:机器学习训练集中的图片政治

社计未来

欢迎关注我们!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存