一旦你掌握了在 JMP 中设计实验的便捷性,你对周围世界的看法就会彻底改变。一切皆可成为实验的机会!本次演示将通过一个实际案例,展示实验设计 (DOE) 的整个流程,包括实验设计、结果建模以及优化输入参数以获得最佳输出。
去年Discovery大会的与会者们体验了一次别开生面的趣味活动:在印第安维尔斯高尔夫度假村的练习场上击打夜光高尔夫球。该练习场配备了Toptracer技术,可以监测每一次击球。每次击球都会记录总距离、飞行距离、球速、发射角和弧线等数据。如此丰富的数据为使用JMP设计实验提供了绝佳的机会!
在与 JMP 用户和朋友们共度一个夜晚后,我们利用 JMP 的自定义设计器设计了一个实验。这个设计仅用了几分钟就完成了。设计中使用了基于高尔夫站姿设置的输入变量,包括握杆方式、杆头对准、站姿宽度和球位等。我们在练习场上执行了设计的实验,建立了一个模型,并找到了能够打出最远最直球的最佳设置。建模和优化工作在几分钟内就完成了,而且当时我们还在练习场上!这使得我们可以立即进行验证性测试。之后,我们也把这些优势应用到了实际的高尔夫球场上。
大家好,我是桑迪亚国家实验室的统计学家唐·利夫克。很高兴来到这里。我将给大家做一个与我日常工作略有不同的简短介绍,稍后大家就会明白原因。欢迎各位,请坐,我们开始吧。
我先简单介绍一下背景。我会用 PowerPoint 做一点演示,但我们不会让 PowerPoint 讲得太枯燥。我们会退出这个软件,直接进入 JMP 做个现场演示。
在桑迪亚国家实验室,我通常负责的项目是核威慑。我们还有其他五个研究领域。作为一名统计学家,我的工作实际上涉及所有这些领域,但更常是在核威慑小组。我几乎所有工作都使用JMP软件。再次强调,我的工作是统计学家,但我的本职工作其实是电气工程师。或者更准确地说,我的教育背景是电气工程师。
核威慑,我们参与的一些项目……这是我们公司演示文稿中的一张幻灯片,所以我想给你们展示一下我用JMP软件做过的一些项目。我们把它用在了B61项目和W80-4导弹上。很多武器部件都是用它做的。就像他们说的,我们的武器每天都在使用。它们是一种威慑力量,而且是非常有效的威慑力量。
这些是我使用过 JMP 的几个程序。实际上,除了一个程序之外,屏幕上显示的这些程序我都和工程师一起开发过,并且都大量使用过 JMP。
去年我参加了JMP大会,地点在加州印第安维尔斯。那地方美极了,简直令人惊叹。我以前做梦都没想到酒店房间居然就在高尔夫球场旁边,真是太酷了!那地方棒极了。我在大会上萌生了一个想法。我们举办了一个叫做“夜间畅饮”的活动,非常有趣。如果你是第一次参加JMP大会,你肯定会发现这些大会有多么精彩,以及它们是如何让你忙得不可开交的。你根本没有空闲时间,晚上也总是安排得满满当当。
这次活动真棒!地点在印第安维尔斯高尔夫度假村酒店的练习场,会议也在那里举行。我看看能不能播放这段视频。我们试试看,视频大概有[听不清 00:02:31]秒长。我不知道你的屏幕上能不能显示出来。
好了,就是这样。我觉得这个小视频挺酷的。最神奇的是这些高尔夫球在黑暗中会发光。他们把球放在一个带灯的小盒子里,这样你就能看到球的落点了。如果我的演讲能顺利进行,我希望也能在这里分享一些去年会议的照片。
这里其实是JMP大会租用的高尔夫练习场。那真是一场盛大的活动,几乎所有人都来了。值得一提的是,他们还请来了餐车。你看,杰夫就在右边。你可能认得他,他可是JMP很多届大会的主持人。我觉得杰夫头顶的小光环挺有意思的。我觉得这纯属巧合。也许并非如此。也许这背后有什么故事,杰夫。
你身后的这些小屏幕,我给你近距离看一下其中一个。这些击球区非常棒,因为它们会在你击球时显示各种统计数据。它会显示球的总飞行距离、飞行高度、平飞距离、球速等等。总共有10个变量。
当然,我最关心的是总距离。这里面还有一些其他因素你可能也关心,它也涵盖了这些,所以我把它们也记录下来了。但当时我想:“这真是太棒了。这正是一个绝佳的机会,可以对我的高尔夫球技做一个实验,看看我能不能稍微改善一下我的击球轨迹,也就是我击球的距离。” 我当时想:“这真是太棒的数据了。”
实际上,我很多年前在一次 JMP 会议上做过类似的实验,但当时我需要用到 GPS 定位,还要到户外进行一些计算,非常麻烦。而这个方法很棒,因为它会在屏幕左上角显示总进位数,而且数据采集也方便得多。
那么,我们来做一个实验。我之所以想做这个实验,是因为我很多实验内容都不能公开,因为它们并非完全保密。我需要一些可以公开分享的教学案例。这是一个绝佳的机会,因为我认为大多数人至少都能理解高尔夫挥杆的基本原理以及我接下来要讲解的各种变量。
这是我在准备这个演示文稿时随口说的一句话。当时我正坐在那里看高尔夫频道,突然看到这个画面,心想:“哦,这不错,我要拍下来。” 高尔夫运动的精髓就在于此,要尽可能减少不确定性,从而最大限度地提高确定性。
我在实验中考虑的变量,我会用图示的方式展示给你们,然后我们再深入设计实验并进行分析。为了让你们理解握法,我考虑了三种不同的握法:左图所示的交错式握法(小指和食指重叠握住)、分指式握法,以及介于两者之间的一种握法——双手并非分指式握法,而是直接接触,我称之为接触式握法。
同样,我观察了三种不同的握杆方式。我观察了杆头,这里我对比了三种不同的杆头:左边是完全闭合的杆头,右边是中立的杆头,还有介于两者之间的,我称之为闭合杆头。我发现,在我的高尔夫球技中,如果稍微闭合一下杆头,似乎能打出更远的距离,但我并不确定,因为我从未真正测量过,所以这是一个值得纳入实验的变量。
然后是右手,这里我只用了几种右手握杆姿势。我用了中立握杆和强力握杆。中立握杆就是标准的握杆姿势。强力握杆是指右手旋转,顺便说一下,我是右撇子高尔夫球手,你需要将右手旋转得稍微偏离球杆中心一点。我认为这会让挥杆更有力一些。它往往会让球杆向左偏,球也会向左偏,导致击球轨迹的可预测性降低一些。但我认为,我们也应该把这个因素作为一个变量考虑进去。何乐而不为呢?反正成本不高。DOE(实验设计)的好处在于,你可以加入很多变量,而运行次数却不会显著增加。
我注意到,打高尔夫球的时候,如果我把右脚稍微往后挪一点,有时候就能纠正我的右曲球。我觉得右曲球没法彻底根治,但这个方法确实有点帮助。所以我想,“好吧,也试试这个方法吧。” 就是把右脚稍微往后挪一点。
最后,说说我站位中球的位置。在这个实验中,我用的是九号铁杆,而不是一号木杆。九号铁杆通常放在站位的后部或中间位置,而不是前部。但我注意到,在打高尔夫时,如果我把球放在站位的前部,我往往会打得更远一些。这似乎与职业球员的说法相悖,他们通常建议使用九号铁杆、劈杆等高号铁杆时,球应该放在站位的后部。但这种方法对我来说似乎行不通,所以我们来做个实验,看看原因。
这个实验设计起来相当容易。事实上,我是在“黑暗中的射击”活动结束后立刻着手设计的,回到酒店房间后,我就用JMP软件完成了这个实验。我当时想:“好,等周四会议结束的时候再运行这个实验。”会议午饭后就结束了,我心想:“我直接去高尔夫练习场做这个实验,把数据输入进去,就能实时分析了。”
这就是实验过程,我会在JMP里演示给你看,但我想先通过截图展示一下我是如何输入所有因素的。我还添加了一些响应变量,它们也会显示出来,但我主要关心的响应变量是我击球的距离。但是,一、二、三,我这里有五个不同的因素。我有三乘三乘二乘二乘三,所以这里有很多可能的组合。
但正如您所知,在实验设计中,我们通过忽略三阶、四阶和五阶等高阶交互作用来解决这个问题。实际上,在这个实验中,我只关注主效应,暂不考虑交互作用。以后我可以回头完善这个设计,开始研究一些双因素交互作用。但现在,我只想知道哪些因素会影响主效应。JMP 告诉我应该运行 18 次,这差不多合适。效果很好。
这是我创建的脚本。我只是把它作为截图放在演示文稿中,这样如果你们想完全复现这个实验并进行修改,你们可以将随机种子设置为我没有设置的那个值,而是随机分配给我的那个值,这就是脚本。
然后,设计实验看起来是这样的。我这里要用到JMP软件,我们稍后再详细讲解。你可以看到它是如何安排我的18次练习的——我把每次练习称为一次“运行”——在每次运行中,我都设置了不同的变量。所以,我的第一次练习实际上是采用交叉握杆法,杆头保持中立,右手保持中立,右脚后移,球放在站姿的前部。我到练习场,做好这些准备,这就是我的第一次击球。
快速了解一下实验设计的作用。请注意,这张颜色图中显示的主要效应之间几乎没有相关性。右手和右脚之间存在微弱的相关性,比例为 1/9.111。相关性非常小。但令人欣喜的是,我可以进行包含五个不同变量(其中一些变量有三个设置)的实验,并且主要效应之间完全没有相关性。非常棒!这就是实验设计的强大之处。
周四午饭后,我立刻去了练习场。会议结束了。先在一家可以俯瞰印第安维尔斯高尔夫球场的漂亮餐厅吃了午饭,然后就去了击球区。这是他们给我的球杆的照片。有趣的是,这和我平时用的1号木杆一模一样。我觉得这些球杆和我平时在家用的铁杆也很相似。我根据照片上的时间戳设计了这个实验,稍后我会给你们看。我的第一杆和最后一杆都只用了20分钟,所以我花了5分钟设计这个实验,20分钟进行实验。
这是我第一次击球的设置。第一次击球时,我起身击球,屏幕上显示的就是这些设置。我直接拍照记录数据,因为我不想在击球间隙犹豫太久。这些照片就是我的数据。然后我坐下来,把这些数据导入JMP软件。我用的是笔记本电脑,所以导入数据和分析实验都很方便。我们来看数据吧。
这是我的数据。当时我在击球区,只输入了总分。这正是我最关心的。之后我又回去把屏幕上的其他变量都填进去了,这样我也可以对它们进行建模。如果你要设计实验,并且使用 JMP,并且选择了 DOE 和自定义设计,这就是我常用的设置。我在这里添加了我的因子。我就不赘述我的打字过程了,总之我添加了一个两水平离散数值因子,一个三水平离散……抱歉,这说法不对。去掉“非离散数值”部分。
我的分类因子有两个水平,有些有三个水平,总共五个变量。至于响应变量,我基本上包括……我想当初设计的时候,我以为会有三个响应变量。结果发现我真正关心的只有一个,所以实际上我用了八个响应变量。因为如果你不喜欢设计实验时设置的响应变量,你可以根据需要选择任何响应变量进行分析。
但是,在这个自定义设计中设置这个实验非常简单。你可以看到我是如何添加变量的,我在这里输入变量名称,然后我会在 JMP 中继续设计实验。下面你可以看到运行次数,但我不会输入完全相同的信息,因为我不想让你觉得无聊。
接下来我点击“创建设计”,JMP 会自动帮我设置设计。我的五个变量会在这里,而“相关性”中的颜色映射会在这里。我们运行一下 DOE 对话框,看看效果如何。
在设计这个实验方案时,我进行了计算,这是软件自动生成的。我输入的参数都在这里。我的输入方式很简单。我原本以为会得到切球、球速和距离这三个响应值。结果确实得到了距离和球速。我不确定这个切球变量(听不清 00:15:28)的曲线,但后来发现……当时我并不在意。我们可以在以后的实验中再研究它,但现在我只关心距离。球速和距离的相关性很高,所以我不需要同时考虑这三个变量。
但设置这个实验,我大概三分钟就能写完这些。设置好实验,让 JMP 生成表格。不过,让我再给你们展示一下这个相关性的颜色映射。旧版本的 JMP 相关性颜色映射实际上是一个彩色映射。现在它默认是黑白的。我通常会把它改成彩色映射,但这里显示的颜色和我之前在 PowerPoint 幻灯片里展示的颜色一样。
然后,用 JMP 生成表格,它会自动生成。现在我只需要用这些不同的设置投掷这 18 球,然后在这里输入距离,就可以开始分析实验了。我已经输入了数据,但我不会保存。我也不打算帮你保存。我回到这个自定义设计,因为我还想给你演示一下功效分析。我们运行一下模型,看看结果如何。
点击模型后,脚本会按照您创建自定义实验时输入的内容保存到数据表中。JMP 会提示:“我猜您想用这些作为效应,因为这是您在创建实验时输入的,所以我不需要重新输入任何内容。” 我的回答是,我的设计中已经展示了三个这样的效应。我并不关心进位或平进位。现在,我先移除这些效应,然后运行实验。看看总结果。我已经移除了所有其他效应。
现在又回到 DOE 对话框了。抱歉,我有点懒,不想打字。我要把这个删掉,还要把这个也删掉。我不小心选中了特效,也把它们删掉了。这是我要查看的模型。运行之后,我看到了很多噪点,因为你猜怎么着?唐的高尔夫球比赛噪点很多。这并不奇怪,对吧?
我只是在数据表中根据距离给这些点着色了。这是一个 JMP 演示,我们来演示一下如何操作。可以按行、按列着色或标记。你可以说我想按总距离着色。我已经这样做了。我的所有行都根据总距离着色了。如果我之前打开了另一个窗口,它去哪儿了?现在我的数据表显示在最上面。记住,在 JMP 中,你之前打开的任何窗口都会显示在下方。
观察这个模型,我主要关注的是P值。我还关注残差,也就是实际值减去预测值。本质上,它是模型中任意一点到拟合线的距离。如果我把这条线(红色拟合线)水平展开,你就会得到这样的结果。
实际得分和预测得分之间的差距有多大?实际得分和预测得分之间的差距有多大?我的比赛数据波动很大。你可以看到,我的模型给出的误差在正负五码左右。这意味着还有很多数据无法解释。我这里只用这些变量解释了距离变化的一半。
我的均方根误差实际上是 6。如果我看一下这些残差,[听不清 00:19:35] 都是 6 的均方根误差。我们看看还能看些什么。我想看看……我们直接往下看。先看看性能分析器,然后再开始调整模型。如果我看一下性能分析器,我发现了一个效果图,我把它放大给你看。
使用这个分析工具时要小心。如果你放大一个图表,所有图表都会跟着放大,很快就会占满整个屏幕。不过,如果我看一下我的分析工具,我可以粗略地看出,暂且不细说我稍后要讲的内容,这里我先简化一下模型。看起来我的触杆握法、中立的杆头和中立的右手都是最佳的。右脚与前脚齐平似乎是最佳的,球和站姿也都比较靠前。这些都是我手动计算出来的。
如果你点击预测分析器并查看优化设置,你会发现我已经添加了期望值函数。因为在设置实验时,JMP 会询问我刚才提到的响应值(听不清 00:20:58),你想如何处理它。我选择了最大化。设置实验时,你需要告诉它你是想最大化、最小化还是达到某个目标值。我选择了最大化,所以它已经自动添加了这个函数。
就让 JMP 帮我最大化目标点的期望值吧。我之前是手动设置的,所以它没动任何东西,但我们假设这些点在别的地方。然后我告诉 JMP 最大化期望值,它会说:“好的,为了最大化你的总距离,请使用这些设置。” 这是你预测的总距离,其中包含了不确定性 [听不清 00:21:35],所以是 117。我记得我最远的一次命中距离大概是 114。
设置好这个实验之后,我用这些设置做了几次组合练习。我打了几个球,我记得——等我们回到PPT里我再拿出来——打出了115和113的距离。这很好地证实了这些设置确实能让我打出最佳距离。我只打了几个球,主要是因为时间关系。天气有点热,我也有点饿了,但我只是想确认一下,如果使用这些设置,我的击球效果确实不错。
[听不清 00:22:22] 简化一下。记住,所有模型都是错误的,我们只是想创建一些有用的模型。这话不是我说的。你知道是谁说的吗?如果你不知道,可以上网搜一下。我们要去掉那些无关紧要的东西,为什么呢?因为它们对预测能力没有实际帮助,所以我们来简化模型。你可以在 JMP 里手动操作,只需点击你的效果并将其删除即可。[听不清 00:22:48]
P 值是什么?它是指仅仅由于随机性而观察到如此大效应的概率。我就不赘述统计细节了,但用电子工程术语来说,就是信噪比。小熊头似乎无关紧要,所以我把它从模型中移除。右脚似乎也无关紧要,所以我把它从模型中移除。现在我这里只剩下[听不清 00:23:11]边缘变量了。
统计学家喜欢在非常好的模型中使用 0.05 的显著性水平。我打算稍微放宽一些,因为我的挥杆动作有很多波动。我先剔除握杆这个变量,现在有些变量的显著性水平低于 0.25。如果你这样做,在进行逐步回归时,默认的变量剔除显著性水平阈值是 0.25。我只保留球和站姿这两个变量。[听不清 00:23:45] 这可能只是随机因素造成的。对我来说,保留这两个变量已经足够了,因为我知道我的挥杆动作有很多波动。
右手和球在站姿中的位置似乎是唯二真正产生明显影响的因素,具体情况如下。就我的高尔夫球技而言,看起来是右手姿势(听不清 00:24:05)比右手力量强(听不清 00:24:08)更好。我一直尝试用右手力量强来消除右曲球,但似乎我的中立右手姿势实际上能带来更远的距离。如果我只看击球数据,我可以看到中立右手姿势比右手力量强能多打出大约5码的距离。
保持球在站姿前部,我直觉上觉得这对我的挥杆动作有好处,这样更好。我们结束这个步骤。我们快速地对 y 轴和 x 轴进行拟合。我可以快速地查看每个变量与总距离的关系。[听不清 00:24:49] 总距离,我正在查看每个变量[听不清 00:24:52]。通过查看那里的数据。
我可以进行统计分析,让你觉得枯燥乏味,甚至抓狂。但我们还是直接看整体数据吧。看起来触球式握杆效果最好。我看不出闭合式握杆和中立式握杆之间有太大区别(听不清 00:25:15)。中立式握杆的距离稍远一些(听不清 00:25:20),但我只想快速地给你展示一下 y 轴和 x 轴的拟合曲线。看起来,把球放在中间和放在后面(听不清 00:25:28)的距离似乎并不那么重要,感觉和把球放在前面相比差别不大。
我拟合了模型。这是所有变量的快速散点图矩阵。我总是喜欢在设计实验时查看这些数据,然后在分析之后再查看,以便更好地了解我想要寻找的结果,比如[听不清 00:25:57]速度与特定变量之间的关系。我可以看到,我已经很好地覆盖了设计空间。
这些变量(听不清 00:26:10)涵盖了所有情况,包括这两个变量之间的所有组合,这已经很好地覆盖了这两个变量之间的所有相互作用。如果我们观察并消除数据点的抖动,就能看得更清楚一些。但现在每个点背后都有不止一个数据点。不过,能够全面覆盖这些变量之间的所有相互作用,这才是设计一个好的实验的精髓所在。
我还可以看到很多强相关性。这是我的平飞距离和总距离的对比。我最关心的变量是总距离。嗯,总距离。它和平飞距离、球速等等都有着密切的相关性,正如你所预期的那样。散点图矩阵总是很有意思。
最后我想谈谈功效分析。我设计这个实验时只做了18次重复。如果我们看一下实验设置时的功效分析,会发现功效相当不错。功效是指检测到信号的能力(如果信号确实存在的话)。如果我的表述不够准确,请统计学家们见谅。但请记住,我是一名工程师,只是在扮演统计学家的角色。总之,这个功效看起来不错。
但实际上,请记住,我的均方根误差大约只有 6。这样一来,我检测变量的能力就非常有限了。即便如此,我仍然检测到了一些现象。不过,在这种低效的情况下,我或许应该多击打几个球。我知道我能打……我告诉你我的成绩。我知道我能打出 90 杆,因为我一轮高尔夫就能打出 90 杆,所以 18 杆不应该是我的极限。我应该能打出 18 杆。我可以回头改进这个实验,增加一些次数,或许能提高检测某些变量影响的能力。
咱们回到 PowerPoint。我们已经完成了现场演示和 JMP 的使用。现在总结一下。总而言之,我们看到我的高尔夫挥杆动作有很多噪声。信噪比很低,噪声这么大,很难提取出信号。这并不奇怪。我不是世界上最好的高尔夫球手。我现在的差点略低于 15,这大概算是一个平均水平的柏忌球手。
在标准杆72杆的球场上,我通常会打出高于标准杆1杆的成绩,也就是加18杆,总共90杆。我的目标是成为一名柏忌球手。如果我每洞都能减少一杆或一杆半,我一年就能赚1000万美元。但对于懂高尔夫的人来说,每洞减少一杆可不是件容易的事。
我发现有些因素可能确实有影响,但真正让我觉得有效的只有保持右手中立和将球放在站姿前部。我已经把这些技巧运用到我的比赛中,现在我更多地使用中立的右手,而不是强力右手。我把球的位置前移,尤其是在使用短铁杆(比如九号铁杆)时,这样我的击球距离明显增加了。当然,击球距离的增加并非全部,更重要的是,我对击球距离的预测也更加精准了。
我之前说过我在练习场上的确认练习。我用那些最佳设置打了几个球,在15码的距离上打出了大约13杆的成绩。我记得这次实验我的最远成绩是114杆。这算是相当不错的确认了。这张照片是我其中一张记分卡,我当时特别兴奋。通常情况下,我那天能打出45杆。结果我打出了高于标准杆2杆的成绩。我会圈出我的标准杆,职业选手会圈出他们的小鸟球。像我这样的业余选手,打出标准杆就会很兴奋,我会把它们圈出来,如果打出小鸟球,我会圈出两个。
我今天打得还不错,高于标准杆两杆。我不会说这完全归功于我的设计实验和挥杆动作的调整,但当你试图让人们对你正在进行的项目感到兴奋时,你总是会展示最好的数据。
在此,我想把我的演讲献给我的哥哥。我的哥哥乔,我们在2020年末失去了他,他罹患了一种侵袭性极强的脑癌。乔教会了我热爱高尔夫。是他让我对这项运动产生了兴趣。这都是他的错。他以前经常和我一起参加JMP的会议,他自己也曾是JMP的用户。
他也是桑迪亚国家实验室的工程师,在卫星部门工作。所以我和乔以前每天都一起出去玩,一起吃午饭。我很想念他,想把这篇文章献给他。说起来,左边这张照片里,我和乔在博尔德斯高尔夫球场,当时他刚确诊脑癌。我们当时在凤凰城,因为他在梅奥诊所接受治疗。那天我们去打球,结果因为凤凰城的霜冻耽搁了,所以出发晚了。真是倒霉。我们打完九洞后,心想:“你肯定要错过预约了,我们得走了。”
我们打到一半就离开了,去梅奥诊所看病,回来后又继续打完了剩下的球。乔真是个难缠的家伙。果岭上这个球,其实是乔打得太远,撞到他身后的一块石头,然后又弹回果岭上的。我觉得这事儿太搞笑了,就拍了张照片。
这是乔和沃尔特·怀特,还有布莱恩·克兰斯顿,在我们常去的球场。这是我和乔在阿尔伯克基帕科岭高尔夫球场的合影。非常感谢。我希望这能启发您在工作中,甚至在娱乐中运用实验设计。谢谢。