| 扬声器 |
文字稿 |
| 杰夫·珀金森 |
在谈到JMP功能开发时,我们的下一位演讲嘉宾John Sall对如何确定优先级有着独到的见解。我们确实需要对功能进行优先级排序…… |
| |
我们想投资哪些功能?那么,我们如何判断哪些功能最重要?那些能增强产品功能的功能才是我们应该努力的方向吗? |
| |
那么,那些使其更具吸引力或更性感的功能,或者那些专注于缓解疼痛、减轻分析负担的功能呢? |
| |
约翰认为,缓解疼痛应该是我们研发团队的主要动力。约翰是SAS的联合创始人,也是JMP的首席架构师,JMP是他30多年前创立的。 |
| |
对于拥有数据并需要一种方法来探索数据的科学家和工程师来说,他们需要一种在桌面上轻松进行可视化探索的方法。 |
| |
他将谈到JMP开发的驱动力,以及我们如何发现并着手开发想要的功能。那么,约翰,我谨代表JMP欢迎你。谢谢。 |
| 约翰·霍尔 |
谢谢你,杰夫。我们现在正在北卡罗来纳州卡里市新建的数字会议中心进行现场直播,这里可以容纳更多的人。 |
| |
那么,我们把灯光调暗一些吧。 |
| |
其实我不在视频会议中心,我其实在家。所以我有个家庭办公室。哎呀,不是那个。 |
| |
和大家一样,我也是在家主持这场会议。不过,我们先切换到企业背景,然后开始吧。 |
| |
那我应该聊些什么呢? |
| |
嗯,JMP 发布新版本的时候,如果大会联盟也配合 JMP 的新版本发布,那我们就会讨论新版本。但隔年,我总是会选择一个主题。比如,有一年我选了“大型统计”,有一年选了“幽灵数据”,还有一年选了“隐藏功能”。 |
| |
两年前。今天我的主题是字母A开头的长单词。 |
| |
嗯,这些词语概括了JMP开发的主题。那么,让我分享一下我的屏幕。 |
| |
和 |
| |
最小化 |
| |
这里。分享。 |
| |
那么,哪个主题最重要呢?以下是三个以字母 A 开头的单词……这些单词都很长,以字母 A 开头。 |
| |
正如杰夫刚才提到的,首先是合成代谢。合成代谢的作用就是促进肌肉生长,从而增强JMP的效力。 |
| |
合成代谢过程构建器官和组织,这些过程促进细胞生长和分化,从而增加身体体积。 |
| |
因此,提升 JMP 的功能将是一个契机,这当然非常重要,但接下来…… |
| |
它具有催情作用,让JMP更性感、更刺激,充满探索的快感。所以我们也希望这成为它的一个特点。 |
| |
但我们也关心您在工作流程中的进展,所以止痛药是第三个词,意思是缓解疼痛。 |
| |
缓解疼痛。 |
| |
所以我希望大家能表达类似以下这些虚构的引言:“版本 15 刚刚帮了我大忙……节省了我以前需要辛勤工作数小时甚至数天的时间!”这真是大大减轻了我的痛苦。 |
| |
或者,“我以前必须一个一个地做,现在一次性就能搞定!”真是省了不少事。或者,“我以前必须用好几个工具才能完成所有工作,现在用 JMP 就能搞定一切!” |
| |
或者,“我向同事们展示了我是如何轻松完成的,他们都惊呆了!”或者,“我以前必须手动编写所有这些程序,现在只需点击几下鼠标就搞定了!” |
| |
或者“JMP 让我保持专注,让我能够专注于分析数据,而不是过多地分散注意力到操作细节上。” 这正是我们想要听到的缓解痛苦的表达。 |
| |
为什么呢?因为痛苦和挫败感会严重打击积极性。心流状态至关重要。进入心流状态时,你不会分心。在心流状态下,你更有可能从数据中学习并有所发现。 |
| |
赋能固然重要,但新功能往往只有少数人使用,而旧功能则被很多人使用。因此,我们希望让旧功能更好地发挥作用。 |
| |
为了减少使用过程中的痛苦。当然,生产力很大程度上取决于我们工具在时间利用方面的效率。因此,如果我们能够让用户更轻松、更快速地获得结果,那将是巨大的胜利。接下来,让我们来看一些例子。 |
| |
首先是数据表自带的脚本。这里并排显示的是早期 JMP 版本的一个示例。我记得是 JMP 14 或 13 版本。 |
| |
以前你需要按住鼠标键点击这个按钮,然后会弹出一个菜单项,然后你才能找到运行按钮来运行该脚本。 |
| |
但新方法在脚本旁边直接添加了一个播放按钮。你只需点击该播放按钮,就无需下拉菜单了。 |
| |
嗯,这算不上什么巨大的进步,你可能会觉得点击按钮和下拉菜单之间的差别并不大。但对新用户来说,这却是一大进步,因为新用户不再需要理解…… |
| |
热键下方会有一条提示信息。但脚本旁边就是播放按钮。这样就能更好地理解这些是脚本。 |
| |
在 JMP 中,能够将脚本与数据一起存储是一项非常重要的功能,我们希望用户能够立即掌握这项功能。 |
| |
这样就不用到处翻找或者查看提示来了解它的工作原理了。而且能够存储所有脚本也非常方便。 |
| |
数据表本身就存储了这些数据,没有其他地方可以存储。这样,对于新用户来说,播放按钮就很容易被忽略。仅仅是这个简单的改动就减轻了不少用户的痛苦。 |
| |
我们很遗憾没有在 JMP 中更早地做出这样的改变。 |
| |
我们来谈谈数据准备。数据准备过程中最重要的事情之一就是将来自多个数据源的数据整合起来。 |
| |
JMP 从第一个版本开始就必须具备连接实用程序的功能。但这仍然涉及复杂的对话和处理多个数据表。 |
| |
这里有一个经典的例子,我出租电影,我们有电影租赁交易表。 |
| |
其中包含客户信息、商品编号、订单日期、订单年份,以及我们的电影租赁库存,包括每部电影的详细信息。然后是客户信息……客户信息等等。我们想提出一些问题,需要用到所有这三个表,例如: |
| |
哪些性别在哪些类型的电影中占主导地位?嗯,这涉及到 |
| |
需要遍历所有三个表,当然,使用连接命令是最佳方法。我获取交易数据,然后我 |
| |
将其与客户信息合并。当然,客户 ID 就是匹配项。 |
| |
我想把一列数据也包含进去,并且我想把交易端的不匹配项也包含进去。这样,即使我没有客户数据,也不会丢失交易数据。这叫做左外连接,这样就创建了一个新的数据表。现在,我想把这个数据表连接到…… |
| |
到库存数据。所以我按物料编号连接,然后进行匹配,我还想进行左外连接,现在我有了 |
| |
又多了一张表。所以现在,我不再只有三张表,而是有五张表,这是连接的结果。但现在我可以按类型来回答性别问题了。 |
| |
不同性别的人租看哪种类型的电影比较多? |
| |
而且还涉及到创建所有这些新的中间数据表。 |
| |
原来还有更简便的方法,可以大大减少这些额外步骤和表格带来的麻烦。所以,让我撤销这张表格。 |
| |
我想指出的是,在“表格”命令下,有一个名为“JMP 查询生成器”的命令,它会打开 Sequel 功能。 |
| |
对于连接表来说,这比所有那些连接对话框都要容易得多,但它仍然会创建一个新的数据表。 |
| |
但就在几个版本前,我们推出了一项更出色的功能,可以进一步减少痛苦,那就是虚拟连接。所以,如果我查看这个事务表, |
| |
我注意到它已经加入了。 |
| |
所以,当我准备电影库存表时,每部电影都通过项目编号进行唯一标识。所以我给每部电影分配一个项目编号。 |
| |
链接 ID 表示它是唯一标识的,我可以通过它为该表建立索引。类似地,我有一个项目 ID 来标识客户数据。当我准备交易数据时,这两个 ID 在某种意义上是外键。 |
| |
这是一个链接引用,它通过它们之间的标识 ID 引用不同的数据表。因此,它会自动链接,我已经有了回答这个问题所需的一切信息。所以我可以这样做。 |
| |
对于每个 |
| |
性别,我可以 |
| |
找到我想拍的电影类型。然后我发现,动作片更受男性欢迎,而家庭电影更受女性欢迎。 |
| |
rom.com 上更多是女性用户等等。所以我已经回答了涉及三个表的问题,而无需遍历所有连接,因为通过匹配表中的 ID 列,它们实际上已经连接起来了。 |
| |
所以我做了 |
| |
这样可以大大缓解疼痛。所以,我们还是就此打住吧。 |
| |
所以我认为,数据表连接在各个版本中都带来了很多痛点。 |
| |
录制, |
| |
这是我们准备数据集时主要做的另一件事。 |
| |
很多版本以前,我们开始进行非常简单的重新编码,当时我们只设置了一个字段用于存储旧值和新值,新值的初始值与旧值相同,然后我可以剪切、粘贴或编辑这些值来进行重新编码。 |
| |
添加到新列或现有列中。 |
| |
Recode 的每个版本都经历了显著的改进,我们对目前的状况感到非常兴奋。现在让我们来看一下这个医院数据集,特别是地区医院的数据集。现在 Recode 的表现非常出色…… |
| |
在列标题中点击右键或右键菜单。然后我可以逐个操作。 |
| |
选择一堆事物,并将它们分组为新的值,例如诊所。 |
| |
但我认为也有很多捷径。我最喜欢的捷径之一是…… |
| |
将相似的值分组。因此,我可以设定一个字符差异数量的阈值等等,它会自动将所有这些分组。例如,它会将所有拼写略有不同的地区医院归为一组。 |
| |
我仍然可以…… |
| |
好像漏掉了一个。不过没关系,我现在可以把它和其他的归为一组了。 |
| |
所有乡村医院都已按匹配项自动分组,看起来我这里还能再匹配到一家。 |
| |
现在突然之间,我有了成果。我省去了重新编码的大量精力。 |
| |
当然,JMP 15 还添加了一些新功能,这里我就不一一展示了,但我想提一下。如果您有另一个包含所有数据的数据集, |
| |
……证明了……对于这些类别,我可以进行匹配,并在找到与所有这些事物都匹配的名称时,选择最接近的匹配项。 |
| |
因此,Recode 在各个版本中经历了多次迭代改进,以减少操作上的繁琐。当然,想想看,我们花在准备数据上的时间和分析数据的时间相比,究竟哪个更多? |
| |
通常,我们70%到90%的时间都花在了数据准备上。因此,减少这项工作的繁琐程度和耗时,就成了巨大的胜利。所以,减轻数据录入的痛苦至关重要。 |
| |
点击数值。这里是 |
| |
城市数据集。 |
| |
假设我在查看某些数据的细节时,比如某个数据可能是一个异常值,我想更详细地了解它。那么我可以把它转换成一个链接。所以,我们…… |
| |
我们把它转换成维基媒体页面之类的东西。我要把那段文字复制到那里,然后转到“列信息”部分,再把它转换成链接,也就是表达式处理程序。 |
| |
现在我可以拿 |
| |
这 |
| |
表格并将其转换为网页 |
| |
地址。所以 |
| |
我打算去wikipedia.org,然后…… |
| |
将该城市名称更改为首字母大写,然后我可以在该行上进行测试,结果显示为奥尔巴尼。 |
| |
所以现在我要说…… |
| |
哦,好的。 |
| |
现在我可以点击任何城市,然后查看该城市的维基百科条目。或者,它也可以将其转换为地图坐标。所以我可以……我们复制这段文本,然后转到“信息”列,现在,我将不再显示之前的内容,而是…… |
| |
标题要用大写字母。 |
| |
我们来看看解析是否正常。现在我可以点击丹佛,它会查询丹佛和谷歌地图上的信息。 |
| |
好的,我已经把一些操作做成了链接……我可以进行搜索,可以提交地图请求等等。我甚至可以 |
| |
把这段代码粘贴进去,然后点击它,它就会读出城市的名字。我认为这赋予了我们在数据表中存储链接的强大功能。 |
| |
无论是链接到网页还是执行其他操作,任何可以用访问控制列表 (ACL) 表达的功能,都可以用这些事件处理程序来实现。这可以大大减少很多麻烦。 |
| |
我最喜欢的缓解疼痛技巧之一就是批量处理,也就是按住 Command 键或 Control 键进行多次重复操作,这样就能进行很多类似的分析。好的, |
| |
这不仅适用于菜单命令,还适用于许多按钮、调整图表框架大小以及执行其他操作、将内容粘贴到图表中等等。 |
| |
那我们来看一个例子。我们点击……或者直接对所有这些列进行分布计算。 |
| |
假设我想摆脱 |
| |
这是箱线图。 |
| |
如果我一直按住 |
| |
对于该菜单项,我会移除该项的箱线图。但我想要移除所有菜单项的箱线图。所以我要按住 Command 键,取消勾选箱线图,现在所有这些菜单项的箱线图都已取消勾选。现在我可以取消勾选分位数了。 |
| |
它将取消所有检查,因为它已接收该命令并向该窗口中的所有活动对象广播,对于理解该命令的活动对象(例如,分位数命令),它将服从该命令。 |
| |
现在,即使是与弹出对话框相关的某些操作也适用。那么,我们来看看统计摘要。我按住命令键,自定义统计摘要。 |
| |
假设我不需要置信区间,但需要缺失值的数量。我会说,好的,它会将此应用于所有…… |
| |
所有的一切。为了做到这一点,它必须 |
| |
将对话结果整理成脚本,然后将该脚本广播到该窗口中的所有其他位置。 |
| |
这种情况并非总是发生。有时,每次分析都会收到提示。我们每次发布都会尝试这样做。 |
| |
为了实现更多细节,对话会在广播之前完成,这样就能将相同的对话广播到所有可用的地方。当然,我还可以广播其他所有更改,比如更改所有这些项目的大小,或者我可以广播 |
| |
更改背景颜色,我可以将所有图表的背景颜色都更改为橙色。 |
| |
这似乎与该帧框相关。因此,这种广播方式成为了一种非常强大的工具。 |
| |
所以, |
| |
这为我们大多数人省去了很多痛苦,但仍然有一些情况,比如今年早些时候出现了 40,000 个分组,他想对所有 40,000 个分组进行反向预测,这会提示你 40,000 次。 |
| |
这个问题将在版本 16 中修复。这对那位用户来说无疑是个好消息。 |
| |
正在保存公式列。 |
| |
我喜欢公式列。当你拟合模型时,可以保存一列预测结果。但在这个预测结果中,有一个实时公式,因此你可以查看该公式,可以修改它,可以将其应用于新传入的数据。你可以对其进行分析,以便保存公式。 |
| |
如果你有 |
| |
使用 JMP Pro,您可以访问公式库并执行许多其他操作。您可以从中生成代码等等。因此,保存公式的功能非常重要,但有时 |
| |
例如,如果按组保存公式,保存公式就会有很多额外的微妙之处。 |
| |
例如,我们来拟合一下,这是糖尿病数据,我们在这里拟合响应变量。 |
| |
针对所有这些预测因素,我们希望分别针对每个性别进行分析。 |
| |
那我们就这么做吧。 |
| |
因此,我们按性别一和性别二分为两组。现在假设我们想要保存 |
| |
事实上,这两者都是预测值。现在 |
| |
过去,我们曾尝试过很多止痛方法, |
| |
保存后,数据会保存到本地数据表中。在“重做”菜单下的数据表窗口中,可以看到按组划分的表格。 |
| |
所以,对于 gender=1,这个虚拟数据表中有 235 条记录,你可以显示 gender=1 的数据。这里有一个表格变量,显示了按组划分的数据。 |
| |
它会将数据保存到这个临时表中,而不是保存到你实际保存的表中。 |
| |
但 |
| |
之前您保存预测公式时,我们会将其保存到实际数据表中。我看一下,我刚刚保存了 gender=1 的数据。 |
| |
如果我查看该公式,它显示如果 gender=1(即按组划分的子句),则它具有该变量的线性组合,从而形成预测。 |
| |
然后,如果我输入 gender=2,或者按住命令键来广播预测公式,现在它就包含了这两个值,我就可以同时使用 gender 1 和 gender 2 这两个子句。所以它每次都会按组向输出中添加一个子句。 |
| |
顺便说一下,保存其他内容时也会发生同样的情况,比如我保存一列残差时,这次我们按住命令键。 |
| |
如果我保存一列残差,它会按组保存每个残差,并保存与该组对应的残差。这就像从原始响应中减去预测公式一样,但这次不是公式列。 |
| |
在 JMP 中,我们几乎在所有地方都这样做了(虽然并非所有地方都如此),并将文件保存到不同的组。 |
| |
或者在某些情况下,通过 WHERE 子句,它会将结果保存到原始数据表中,并满足 if 语句中的条件。好的,就是这样。 |
| |
省了不少事。如果没有这个功能,数据就会保存在一个临时表中,然后你就得把公式复制粘贴到原始表中,再创建条件语句。所以我们解决了这些问题。现在假设我又保存了一遍,重新走了一遍流程, |
| |
和 |
| |
然后又做了另一件事,比如说使用不同的变量,其中一些变量被移除, |
| |
然后又保存了一遍。 |
| |
所以, |
| |
我保存预测公式时,这次按住了广播键,但它实际上创建了一个新的公式,而不是保存到旧的公式中,并在公式后面加了一个2。那么,它怎么知道不要保存到旧的公式中呢? |
| |
嗯,每次拟合都有一个 ID。如果我查看属性 |
| |
通过 ID,它有一个编号,这是一个每次拟合都会重新生成的唯一编号,因此只要它具有不同的 ID, |
| |
不同的分组将与一个分区具有相同的 ID。但只要分组 ID 相同,它们就会保存到同一个位置。否则,它将创建一个新的位置来保存它。 |
| |
此外,每当我们提到预测值时, |
| |
尤其是预测公式, |
| |
它会创建一个属性,其中包含创建者信息,在某些情况下还会包含其他信息。在本例中,它包含目标变量 y(即预测变量),以及拟合最小二乘法的创建者信息。 |
| |
然后,当您使用其他平台(例如 JMP Pro)进行模型比较时,该模型比较工具就能识别出哪些预测值对应哪些创建者,以及目标受众。因此,它可以跟踪所有这些信息,从而为这些增值平台带来更多价值。 |
| |
所以, |
| |
公式列通过添加新子句和其他属性(包括按 ID)来工作。 |
| |
如果将预测子句保存为分类变量,它会保存一系列变量,其中包含每个响应级别的概率,以及所有元数据和所需信息。这应该能省去很多麻烦。 |
| |
所以, |
| |
从模型中移除效果。 |
| |
好,我们来看一个例子。 |
| |
合身 |
| |
身高体重刚好合适。 |
| |
好,这里有一个高次多项式的例子。这是一个七次多项式。 |
| |
比 |
| |
六次多项式等等。但你会相信这种拟合吗? |
| |
结果表明,如果通过引入高阶多项式项或增加变量来赋予模型更大的灵活性,就能提供更多拟合的机会。而在这个例子中,情况是…… |
| |
这样一来,就可以灵活地对先前的数据和最后一个数据点进行深入分析,以便更好地拟合最后一个数据点。 |
| |
所以这是过拟合。它……它用那个参数来拟合噪声,而不是拟合…… |
| |
数据本身。 |
| |
因此,当模型规模庞大时,过拟合始终是一个问题。 |
| |
你想拟合的是信号,而不是噪声。好的,大型模型往往会给预测结果引入更多变异,因为预测结果毕竟是…… |
| |
它取决于他们使用的 y 变量,但该 y 变量也是该变量的系统部分加上该变量的误差部分(如果该变量部分存在误差)。 |
| |
如果结果具有随机性,那么你的预测就包含了这种随机性。如果你赋予它过大的灵活性,最终结果就会…… |
| |
过拟合问题是指,如果将所有变量都纳入模型,预测结果反而会变得更差。 |
| |
因此,解决之道在于缩小模型规模,即减小模型的大小或减小模型中系数的大小。 |
| |
这样一来,模型随机项的这种变异性传递到预测值中的幅度就会更小。 |
| |
在小规模的实验设计问题中,这不成问题,因为数据量小,而且数据分布均衡,能够很好地拟合你想要构建的模型。但对于任何大型模型中的观测数据而言,过拟合都是一个切实存在的问题。 |
| |
因此,直到我们在 JMP Pro 中引入交叉验证功能,用户才开始意识到这一点。如果您拥有 JMP Pro,您可以设置一个验证列。 |
| |
这将保留部分数据,以便估计保留数据集的误差。例如,我正在尝试预测混凝土的性质。 |
| |
这取决于混凝土中所有这些成分,我为此建立了一个庞大的模型。如果我运行这个模型,但保留一部分数据,然后查看其 R 平方值, |
| |
我用SLUMP模型拟合得很好,R平方值为79。但是在验证集上,我的R平方值却为负值。 |
| |
任何负的 R 平方值都意味着它的拟合效果比仅拟合均值更差。所以,如果我只拟合均值,R 平方值将为零。如果我拟合整个模型,R 平方值会比这差得多。因此,对于大型模型,拟合效果可能会比仅拟合均值更差。 |
| |
这其实有点适得其反,因为模型规模太大,而且我们没有努力缩小模型规模。模型主要受噪声而非信号的影响。所以这是一个你应该注意的问题。 |
| |
因此,关键在于能够减小模型的大小。 |
| |
现在我们引入了一个模型对话框命令来实现这一点。 |
| |
让我们深入了解一下糖尿病模型。 |
| |
我可以运行这个模型,假设我想剔除很多不太重要的因素,比如年龄。 |
| |
年龄对模型的影响完全可以忽略不计,所以我希望排除年龄因素。这样的话,我就可以重新拟合模型了。 |
| |
要么先把年龄因素考虑进去,然后再排除掉。或者,我可以直接回到模型对话框,调整年龄并将其移除,但我这里可能有一长串模型,来回切换操作会很费劲。 |
| |
所以,与其那样做…… |
| |
让我想想,我在这里做什么? |
| |
几个版本前,我们推出了一个名为“效果总结”的新报告。 |
| |
借助事实摘要功能,可以轻松地对模型进行子集化,从而提高预测精度。 |
| |
降低其灵活性。 |
| |
所以我可以说,年龄,我可以把这个因素去掉。 |
| |
或者说,变量很多。我们再去掉三个。 |
| |
LDL,嗯,这看起来更重要。所以我可以保存这个模型了。 |
| |
我们把它保存到数据表中吧。 |
| |
后来我回来后说,嗯,让我记住那个有这个功能的型号。 |
| |
我其实可以撤销之前的操作。所以我可以撤销那个操作,然后它就恢复原状了。 |
| |
三个变量,我可以撤销操作,它会恢复年龄。所以实际上,当我使用效果汇总编辑模型时,它实际上会存储所有这些信息。如果我查看该脚本, |
| |
我可以看到这个历史记录。所以每次我使用效果模型时,它都会存储一个历史记录子句。当我执行撤销操作时,它会撤销到该历史记录的状态。 |
| |
所以删除很容易。我也可以添加东西。如果我减去这两个东西,我可以把它们加回来。比如说,我可以把年龄加回来。 |
| |
这样做不太好,但我可以做到。我还可以通过导入一个缩小版的模型来编辑模型。 |
| |
在模型对话框中添加复合效果等等。 |
| |
现在,大型模型还会出现另一种情况: |
| |
(让我撤销一下)。 |
| |
使用大型模型时, |
| |
你做了很多假设检验。 |
| |
因此,如果您有大量的假设检验,则需要考虑一些调整,其中之一称为错误发现率。因此,您不应将所有这些 p 值视为独立的检验, |
| |
我想进行调整,使这些 p 值能够校正多重检验偏差以及模型子集选择偏差。这样我就可以应用错误发现率 (FDR)。 |
| |
对此进行了修正。因此,我不再使用常规的 p 值,而是使用错误发现率调整后的 p 值。现在我的做法更符合实际情况。这有助于我解决过拟合问题和假设检验中的选择偏差问题,尤其是在进行大量多重检验时。 |
| |
事物。 |
| |
所以, |
| |
现在 |
| |
我们来吧 |
| |
接下来学习下一个主题,即变换。 |
| |
认为 |
| |
你想做一个模型, |
| |
但 |
| |
你想拟合的是 y 的对数,而不是 y。 |
| |
首先,你需要在数据集中创建一个新列。 |
| |
记录并 |
| |
然后对于 Log y,你 |
| |
请指定一个…… |
| |
计算公式。 |
| |
我可以接受 |
| |
一份日志。 |
| |
现在我可以回到我的模型规范并执行 Log y 操作了。 |
| |
然后我就找到了合适的衣服。 |
| |
哦,它不见了,我做错了什么? |
| |
忘记输入 |
| |
客观论证。 |
| |
所以现在我可以 |
| |
拟合 Y 的对数 |
| |
现在 |
| |
我已经完成了。但我们来运行性能分析器吧。 |
| |
我的分析器是基于 Y 的对数进行的。让我保存预测值。我的预测公式是基于 y 的对数进行的。 |
| |
现在我得去手动编辑一下了…… |
| |
用这个公式,然后取其指数。 |
| |
把它恢复到原来的规模。所以,用这种方式进行转换会非常痛苦。 |
| |
嗯,几个版本之前。 |
| |
我们引入了变换。 |
| |
所以我可以进行这种变换, |
| |
将其转换为对数 |
| |
现在可以直接在那里将其用作转换,它并不属于数据表。它是一个带有公式的虚拟变量,但并未添加到数据表中。 |
| |
现在我可以将我的模型拟合到对数 y 上。我们开始吧。 |
| |
去掉年龄信息,这样更合适一些。 |
| |
哎呀。 |
| |
我也选了那个。 |
| |
现在我已经拟合了响应 Log y。 |
| |
如果我进行这样的分析,我会得到什么结果? |
| |
因子剖面分析,简称剖面分析器。它不是分析 y 的对数,而是分析 y 本身。剖面分析器将 y 视为一种变换,然后判断:我可以反转这种变换,从而回到原始尺度。它正是这样做的。 |
| |
它 |
| |
通过对 y 取对数进行反变换,将预测值转换回原始尺度。 |
| |
对于大多数可以展开的变换,它都会这样做。如果变换涉及多个变量等等,它就无法展开,只会执行变换本身。所以原始的 |
| |
保存列时也会出现同样的问题。保存预测公式时, |
| |
它保存的是以 y 为单位的预测公式,而不是以 y 的对数为单位的预测公式。 |
| |
因此,这些方法可以极大地节省时间,并且在使用变换时节省大量精力。 |
| |
所以,还有…… |
| |
让我 |
| |
再次患上糖尿病 |
| |
再做一次……考虑另一种变换。 |
| |
当你进行变量运算时, |
| |
你可以进行 Box-Cox 转型。 |
| |
和 |
| |
在因子分析中,Box-Cox 选项 |
| |
它会告诉你你是否改变了一系列的功率函数, |
| |
什么,最好的做法是什么?直接取消转换吗?那样的话 Box-Cox lambda 值就等于 1 了。 |
| |
如果计算结果为零,就相当于取其对数;如果计算结果为-1,就相当于取其倒数。 |
| |
负一次方。如果你计算的是 0.5 左右,那就相当于求它的平方根。 |
| |
它告诉你,如果这个模型更接近平方根变换,其中 lambda 为 0.453,那么在针对该变换调整的变换尺度上,该模型会拟合得更好。这是 Box-Cox 变换中的最优值。 |
| |
你可以放大查看。 |
| |
用放大镜看清 |
| |
为了更精确地获取它。 |
| |
所以, |
| |
所以现在我可以变形了,而且是在几个版本之前。 |
| |
我可以……我添加了几个列。其中一列是使用变换重新拟合的,它会创建一个新窗口来显示变换后的响应。 |
| |
另一个方法是替换变换,我这就去做。与其用 0.453,我不如直接取平方根变换 (0.5),现在我用这个变换拟合模型。 |
| |
现在 lambda 的最佳值在 1 左右,这才是它应该在的值,因为它已经通过 Box-Cox 变换进行了转换。现在我可以保存这个预测值了。 |
| |
进行分析等等。我甚至可以撤销这些操作。所以如果我不喜欢这次的调整,想恢复到原始状态,我可以恢复到原始状态并重新调整。 |
| |
所以, |
| |
我们已经做了很多减轻痛苦的工作。 |
| |
在转变反应方面。 |
| |
现在 |
| |
当你拥有大量数据时,会有一种特殊的痛苦,一种特殊的痛点。 |
| |
我们投入了大量精力,力求以更少的痛苦解决重大问题。 |
| |
无论你有很多行、很多列、很多组,还是有很多模型要尝试, |
| |
当今世界,我们生活在一个大数据时代,也面临着诸多重大问题。 |
| |
因此,如果我们有一些最初设计用于处理小问题的分析方法,那么它可能不适用于大问题,而大问题的核心问题在于需要处理的输出太多了。 |
| |
如果将同一个模型拟合到 1000 个变量,我就需要处理 1000 份报告。如果我要在 1000 列中查找异常值,那么就只有异常值,你知道,每一列都会生成单独的报告,以此类推。我希望能够…… |
| |
为了更高效地处理大量大型数据集,我们开发了筛选菜单。 |
| |
它旨在解决这类大型问题。此外,JMP 中还有许多其他功能可以更好地解决大型问题。例如,时间序列分析。新的时间序列预测平台可以预测多个时间序列,而不仅仅是一个。 |
| |
因此,筛选平台上的项目会探索异常值、探索缺失值、探索模式。这些用于检查数据,然后寻找关联性,进行响应筛选。 |
| |
过程筛选、预测因子筛选。当然,时间序列预测是新增功能。它不在筛选菜单中,但它是专门为处理大型问题而设计的。 |
| |
所有这些功能不仅利用了更简洁的结果呈现方式(无需生成成千上万份报告),而且还提高了计算效率。它们采用多线程技术,从而充分利用了您的…… |
| |
多个 |
| |
CPU 中的核心数越多,速度就越快。 |
| |
假设您有很多过程数据,有 568 个变量。那么,哪些变量看起来正常呢?过程筛选功能正是为了解决这个问题而设计的。它可以按稳定性排序,也可以按能力(Ppk)排序,还可以按哪些变量异常排序。 |
| |
控制图指标、失控账户等等。 |
| |
但是,我更喜欢的是那些能将所有流程展示在一张图表中的工具。其中有两个我特别喜欢。一个是…… |
| |
目标图显示 |
| |
每个进程在规范限制下的表现如何,如果是符合规范的进程,则位于此处的绿色区域。 |
| |
如果数值处于临界值,则位于黄色区域;如果不是临界值,则位于红色区域;如果数值很高,则说明波动过大;如果数值偏离临界值,则说明存在问题。 |
| |
和... |
| |
它偏离中心,它偏离目标。 |
| |
但如果它处于绿色区域,那么这是一个良好的流程,我们在版本 15 中引入了 |
| |
图形元素,悬停帮助 |
| |
这样,当你把鼠标悬停在某个进程上时,就能看到它。然后是另一个进程。 |
| |
我最喜欢用一张图表来概括所有这些信息,并减少查阅所有报告的痛苦,那就是流程性能图。纵轴显示的是能力 Ppk 是否在规格限制范围内。 |
| |
所以,如果你的值高于 1.33 这个线,那么就数值分布而言,你的数值符合规格限制,一切正常。你完全在规格限制范围内。 |
| |
如果……那么稳定性指标就在 x 轴上。所以,如果一个过程相当不稳定,即使它可能具备某种能力,但仍然不稳定。因此,如果你观察这个过程,它可能存在一些问题。 |
| |
稳定性问题,有时会有些不稳定。如果你处于黄色区域,那么你…… |
| |
能力强但不稳定等等。红色区域是糟糕的区域,既无能力又不稳定。因此,现在查看成百上千个进程变得轻而易举,而过去这却非常痛苦。 |
| |
问题是,变化最大的是什么?以下是一些调查数据: |
| |
多年来,你曾多次询问他们的活动情况。你当时是否…… |
| |
去露营?还是去赌场赌博?或者你感冒了?你知道,所有这些活动,你想知道在所有这些活动中,哪一项(还有……) |
| |
我认为,在95项不同的活动中,哪一项的影响最大?所以你要做的就是,你知道……你可以做的一件事就是一次只做一项。 |
| |
并按调查年份匹配该活动。 |
| |
与其一次只看一个,我可以查看反应筛选结果。 |
| |
只需看一张图表,就能看出哪些方面变化最大。 |
| |
所以这里展示的是所有95项指标的图表。首先是P值负对数所代表的显著性, |
| |
我们称之为对数价值,它已经根据错误发现率进行了调整。因此,它能消除一些选择偏差,因为你对所有p值进行了排序。 |
| |
选择后面的……低P值。我发现租录像带的变化最大,录像带从录像盒式磁带变成了录像带,当然,录像带最终被淘汰了。所以,变化是必然的。 |
| |
另一盘录像带改变了很多,收集东西进行回收利用也改变了很多,娱乐家人也改变了很多。 |
| |
还有一个影响较小但效应量很大的问题:你是否使用互联网?当然,这项调查是在互联网出现之前进行的。因此,情况已经发生了很大变化。所以,关于变化最大的问题是什么? |
| |
现在很容易了,而以前却很难。 |
| |
你还问了一个关于大数据的问题,那就是缺失值在哪里。所以,这里是…… |
| |
280 个变量。 |
| |
缺失值在哪里?我需要担心吗?我查看了“检查缺失值”报告,发现只有五个变量存在缺失值。 |
| |
有些数据集只有一个变量或一个缺失值,但有些数据集有很多缺失值。因此,当我进行分析,尤其是多变量分析时,我可能不想包含所有缺失值。 |
| |
452 个变量中有 376 个。或者,如果我想包含 J,我可以这样做。 |
| |
并填补这些缺失值 |
| |
这样做就可以了。 |
| |
所以, |
| |
下一个问题,数据中是否存在异常值? |
| |
在这个过程中,我一共收集了 387 个测量值。我想找出其中是否存在异常值。现在,我们在筛选菜单中添加了这项功能。我可以 |
| |
调整灵敏度。 |
| |
让我们提高它的灵敏度。 |
| |
这样一来,异常值和重新扫描的次数就会减少。 |
| |
我可以看 |
| |
在 |
| |
9。很多时候,一串9被用来表示缺失值,这些9可能是真实的9,但它们也可能只是缺失值的指示符。因此,对于这种情况,我可以说,将这些9添加到缺失值代码中,这样内存就改变了。 |
| |
现在我可以 |
| |
返回上一级目录(这里有很多变量),重新扫描,这样就不用担心缺失值的问题了。 |
| |
所以,以前查找异常值是一件很麻烦的事。 |
| |
虽然仍然是一项繁重的工作,但比以前容易多了。 |
| |
现在,在版本 15 中,我们添加了另一个筛查平台。数据是否存在可疑模式?这里有一些来自临床试验的实验室数据。这是尼卡地平的实验室模式数据。有 27 个实验室结果可能需要查看。所以我调用 |
| |
新平台可以探索缺失值。它会向我展示,我是否有连续的值?例如,我有一个值 0.03536,但它连续出现了七个,从第 1 行开始。 |
| |
2065。我可以给这些单元格着色,也可以查看这些值,也许是最后一个结转的值,这可能没什么可疑之处。在这种情况下,是…… |
| |
是同一个人。所以,或许将最后一个值结转到下一个值是合理的,但如果你已经分发了这些东西,这种情况就非常罕见了…… |
| |
如果,如果你假设这些事物呈随机分布的话。 |
| |
还有最长重复序列。所以对于这个变量,我们从第 2816 行开始,也从第 3034 行开始,有连续四行的值相同。所以如果我给这些行着色,就能看到连续四行。如果我 |
| |
转到下一个序列,你会发现连续有四个序列的值相同。这可能是由于将相同的值从一个地方剪切粘贴到另一个地方造成的。 |
| |
所以,探索模式就是在寻找这些内容。你还可以查看这27个变量中的每一个的详细信息,寻找可疑情况的迹象等等。 |
| |
数据处理方式的不良影响等等。 |
| |
所以, |
| |
探索模式是解决重大问题的一部分。 |
| |
所以, |
| |
缓解疼痛。我们的大部分研发工作都集中在使分析流程更顺畅、更轻松、更省时、更舒适。镇痛药。 |
| |
我们并不总是知道什么才是真正的痛苦。所以我们需要依靠反馈来确定关注点。当我收到那些我不得不回复数百次的邮件时, |
| |
我们听取了反馈,感同身受,并已修复此问题,现在您可以向拥有数千条信息的群组进行广播。 |
| |
这样可以只公布一次对话的结果,而不是重复多次对话。所以,您的反馈对其他人更有帮助,因为我们第一次没有注意到这个问题。因此,请给我们提供您的反馈意见。 |
| |
经过我们已经取得的所有改进,我们认为数据准备和分析过程已经变得更加顺畅,中断更少,流程更加顺畅。 |
| |
所以, |
| |
与其把时间花在克服障碍上,不如把时间花在从数据中学习、理解数据上。 |
| |
分析。人们可能会想它们是否源自同一个词根,当然,我们不喜欢缩写这两个词。 |
| |
分析(Analytics)一词源于希腊语analyein,我不知道该如何发音。 |
| |
但在希腊语中,它的意思是打破、释放或解脱。它指的是将复杂的事物分解成一个个部分,以便我们能够理解。 |
| |
当然,这正是我们进行数据分析,也就是数据科学的工作。而“镇痛药”(analgesics)一词则是由不同的词根组合而成:“an-”意为“无”,“algesis”意为“疼痛”。所以,前缀相同,但词根略有不同。 |
| |
不要缩写这些词语。 |
| |
具有合成代谢和催情作用。我们追求力量。 |
| |
我们所做的很多工作都是为了给您提供更强大的数据分析工具,其中很多工具都在 JMP Pro 和 JMP 中。 |
| |
我们希望数据能带来激动人心的感觉,你知道,那种发现的快感。 |
| |
学习如何使用JMP的强大功能令人兴奋,我们觉得这很刺激。你知道,这就像催情剂一样。 |
| |
所以,力量和激情对我们来说也很重要。它不仅仅是缓解疼痛。 |
| |
那么我们明年要做什么呢? |
| |
嗯,以字母 B 开头的长单词。 |
| |
先从A开始,接下来是B,对吗? |
| |
明年我们将发布 JMP 16,所以我们今年要讨论的就是它。至于后年我们要讨论什么,就不得而知了。非常感谢。我们希望您在分析数据时能少受些苦。 |
| 杰夫·珀金森 |
非常感谢你,约翰。我们很感激。这是一次精彩的演讲,多年来我们目睹了许多痛苦, |
| |
你说的完全正确。缓解疼痛对我们来说非常重要。 |
| |
我们确实收到了一些问题,其中一个问题其实已经回答过了,我们在问答环节中也回答了一些,但我还想问问你们。 |
| |
它既能缓解疼痛,又能带来一些吸引力,还让JMP更强大? |
| 约翰·霍尔 |
我觉得大家最喜欢的就是图表构建器了。 |
| |
只需拖拽这些变量,再点击几下,就能得到想要的图表,而且修改起来也非常方便,这种感觉真是太棒了。 |
| |
所以,这很刺激。它功能强大,还能缓解疼痛;以前很难做到。所以我认为这是每个人都喜欢它的原因。 |
| |
当然还有……JMP 是一款功能丰富的产品,我们为其中的所有功能感到自豪。实验设计等等。 |
| |
这其中蕴含着巨大的力量,我们也努力让这个过程变得简单。很多事情都涌上心头。 |
| 杰夫·珀金森 |
非常好。非常感谢你,约翰,我很感激。如果你喜欢这次演讲,我有两点建议。第一,我们会把这个发布出去。 |