简介:这是一份JMP统计软件培训讲义PPT,整包共1个文件,压缩包约2.54MB。内容面向质量管理、数据分析及六西格玛实践人员,覆盖JMP从数据表单创建、行列选择与增加,到列类型(Continuous/Ordinal/Nominal)定义、变量角色(X/Y/WEIGHT/FREQ/LABEL)设置等基础操作,也包含表单排序合并、快捷数据分组与统计计算;同时以柱状图、饼图、柏拉图、直方图与Cpk、控制图、GR&R、线性相关、线性拟合、t检验、方差分析、DOE等典型应用为主线,配有菜单入口和图表制作说明。相比同类统计工具,JMP的图形化界面与交互式分析更易上手,讲义中的逐步操作指引能帮初学者建立完整使用框架,也能为工程师做过程能力、测量系统分析及实验设计时提供可参照的步骤。目前已有923人学习下载,适合希望在Minitab之外掌握另一款强大统计软件的学习者。
1. JMP 培训讲义开篇:为什么数据一多,我优先打开的是 JMP 而不是通用表格工具
某工厂的质量工程师分析一组现场试验数据,在通用表格工具里折腾了一下午:批次号被当成数值求和、方差分析要装插件、交互作用图画不出来。同事把 JMP 培训讲义丢给他后,半小时内就完成了导入、正态性检验、方差分析和交互作用图。
这个反差不是个例。JMP 是一款以交互式可视化为核心的统计软件,菜单驱动、报告联动,在探索性数据分析、实验设计(DOE)和统计过程控制(SPC)这三类场景上,效率比通用表格工具高出一大截。这份讲义按“从数据表结构 → 分析平台调参 → 翻车现场 → 脚本自动化”的顺序展开,质量工程师、研发人员和数据分析方向的从业者,可以直接跟着走一遍。
2. 从数据表先认识 JMP:列属性、行状态与最小可跑通流程
很多人把 JMP 当“高级表格工具”用,上来就导入数据、点分析,结果第一步就在列类型上栽跟头。JMP 的分析结果完全取决于你对数据表的设定:列属性描述一列是什么,行状态描述哪些行参与计算。这两个概念不弄清,后面所有分析平台的输出都可能悄悄失真。
2.1 列属性是 JMP 的数据字典:建模类型设错,后面的分析全白做
JMP 的数据表看起来和表格工具差不多,但每一列都带着“列属性”,其中最核心的是建模类型(Modeling Type)。它决定了 JMP 怎么理解这列数据:连续型(Continuous)按真正的数值处理,回归时会给出斜率;名义型(Nominal)按分类标签处理,回归时会自动生成虚拟变量;有序型(Ordinal)保留等级顺序但不等距。三者用错任何一个,输出的报告都会与业务含义脱节。
导入 CSV 时 JMP 会按内容自动猜测建模类型,数字列默认判成连续型。这个自动判断几乎必然出错,最典型的就是“批次号”:批次号写的 1、2、3,只是三个批次的标签而不是数值。如果保持连续型,拟合模型时 JMP 会为“批次”拟合一条线性趋势,输出一个没有业务意义的回归系数;改成名义型之后,输出的是三个批次的均值对比,这才是你要的结论。
| 建模类型 | 典型数据 | JMP 的处理方式 | 常见误用 |
|---|---|---|---|
| 连续型 Continuous | 温度、强度、外径 | 数值参与计算,回归出斜率 | 把标签数字当数值 |
| 名义型 Nominal | 批次号、机台号、缺陷类型 | 按分类水平生成虚拟变量 | 把并列分类当等级 |
| 有序型 Ordinal | 等级评定 A/B/C | 保留顺序,用于有序比较 | 给等级强行赋 1/2/3 |
修改方式不复杂:右键列头 → 列信息 → 建模类型,直接换成对应类型。我在培训时会让学员先花五分钟把所有“看起来像数字但不是度量”的列统一改成名义型——批次、机台、操作员编码这类都属于这一挂。这一步不耗时,却能把后面大量的返工消灭在源头。
除了建模类型,列属性里还要关注“角色”(Role):Y 是响应变量,X 是分析时的自变量或分组变量,权重和频率用于加权计算与频数展开。大部分平台运行时会根据列的建模类型和角色自动安排位置,不需要每次手动指定,但前提是你把前两项设置对了。
2.2 行状态:排除、隐藏和标记,谁才是真正“不参与分析”
行状态是继列属性之后第二个必须讲清的概念。右键行号能看到三个选项:排除(Exclude)、隐藏(Hide)、标记(Label)。三者的语义完全不同,新学员几乎都会在这里栽跟头,因为“隐藏”两个字听起来很像“删掉”。
排除:该行不参与任何后续分析,行号变成灰色且带斜线。这是处理异常值、超差样品的标准做法,原始数据仍然保留在表里,只是分析时不考虑它。隐藏:只是把行折叠起来不显示,行仍然参与所有计算。很多人把隐藏当排除用,结果报告里的均值、标准差全把隐藏行算进去了。标记:只在图上把该行的标签显示出来,方便追溯是哪个样品,不影响任何计算。
区分方法看行号颜色:被排除的行号是灰色斜线状态;被隐藏的行号还在,只是行内容收起。培训中我给的排查口诀是:分析前先打开“行”菜单里的“行状态”面板,确认当前排除了几行,和你的预期是否一致。别靠记忆,靠面板。
用 JSL 设置的写法如下:
dt = Current Data Table(); // 手工指定行号:选中第 3、7、12 行 dt << Select Rows( {3, 7, 12} ); dt << Exclude(); // 按条件排除:把“不合格”列里标记为 1 的行全部排除 dt << Select Where( :不合格 == 1 ); dt << Exclude();第一句Select Rows({3,7,12})选中指定行,后面的Exclude()把选中行标记为排除;第二句Select Where(:不合格 == 1)先按列条件选中所有不合格行,再统一排除。实际项目里推荐按条件排除,因为手工行号在数据排序、补录之后很容易错位。注意 JMP 的排除不是删除,再次对灰色行执行Exclude()可以恢复参与分析,数据表本身始终是完整的。
2.3 最小可跑通流程:导入 CSV、改列属性、跑出第一份分布报告
培训第一天的目标是跑通“导入—清洗—出报告”三件套。假设手上有一份现场数据 process_data.csv,包含批次号、温度、强度三列,那么最小脚本是这样的:
// 打开 CSV,JMP 自动解析 dt = Open( "C:/data/process_data.csv", CSV, // 按 CSV 格式解析 Column Names Start( 1 ) // 第一行作为列名 ); // 修正列属性:批次号是名义型,温度和强度是连续型 Column( dt, "批次号" ) << Modeling Type( Nominal ); Column( dt, "温度" ) << Modeling Type( Continuous ); Column( dt, "强度" ) << Modeling Type( Continuous ); // 生成分布报告 dt << Distribution( Continuous Distribution( Column( :温度 ) ), Continuous Distribution( Column( :强度 ) ) );代码逐段看。第一段 Open 打开 CSV,CSV表示按逗号分隔解析,Column Names Start(1)表示第一行是列名。如果文件开头有几行说明文字,就要把这个参数改成列名真正出现的行号。第二段是列属性修正,Column(dt,"批次号")先按名字取到列对象,再发Modeling Type消息设置建模类型。第三段调用分布平台,Continuous Distribution(Column(:温度))表示对温度做连续型分布分析,输出直方图、均值、标准差和分位数。到这里,一份带完整统计量的报告就出来了。后面所有分析平台都沿用同一个模式:数据表 + 平台 + 参数。
提示:如果 CSV 第一行不是列名而是数据,请把
Column Names Start(1)改成Column Names Start(0),或者打开前先用文本编辑器看一眼文件头。这一步翻车率很高,但排查只需要十秒。
3. 常用分析平台怎么调参数:分布、拟合模型与控制图的实战设置
分布平台、拟合模型平台、控制图平台是这份讲义里出场率最高的三个。分析平台不是黑匣子,每个输出都能在参数设置里找到对应开关。菜单入口不展开说了,重点是每个平台的哪些参数必须动、动了之后报告会怎么变。
3.1 分布平台:看数据分布和异常值,这三个选项必须打开
默认的分布报告只有直方图和基础统计量,对一份没见过的数据远远不够。我让学员必开三个选项:分位数(Quantiles)、异常值盒形图(Outlier Box Plot)、正态分位数图(Normal Quantile Plot)。分位数看数据范围和离散程度;异常值盒形图识别离群点;正态分位数图判断分布是否接近正态——点如果基本落成一条直线,可以认为近似正态;明显弯曲或 S 形,说明有偏态或长尾。这三个一开,数据的长相就清楚了。
dt = Current Data Table(); dt << Distribution( Continuous Distribution( Column( :强度 ), Quantiles( 1 ), // 输出 0.1% 到 99.9% 分位数 Outlier Box Plot( 1 ), // 异常值盒形图 Normal Quantile Plot( 1 ) // 正态分位数图 ) );Quantiles(1)、Outlier Box Plot(1)、Normal Quantile Plot(1)里的 0/1 是开关,写 1 表示输出对应报表。盒形图中画在上下须之外的点,就是平台判定的离群点;双击盒形图还能交互查看离群点对应的原始行。如果数据有分组需求,比如按批次看强度分布,把批次号拖进“分组”角色再运行分布,就能一次输出多个批次的对比箱线图。这是培训课上用来解释“组间差异 vs 组内差异”最直观的图。
3.2 拟合模型:筛选显著因子时,用逐步回归而不是一上来就全模型
拟合模型平台是 JMP 最主要的建模入口。学员最常见的操作是把所有可能相关的因子一股脑塞进去,然后盯着满是 p 值的报表发呆。实际项目里一般先做因子筛选,再对筛出来的关键因子做正式拟合。常见做法是把人格(Personality)选成逐步回归(Stepwise),设置进入/退出概率,让软件按显著性依次选入因子。
dt << Fit Model( Y( :强度 ), Effects( :温度, :压力, :时间, :温度 * :压力 ), Personality( "Stepwise" ), // 逐步回归人格 Run( Direction( "Forward" ), // 前进法 Prob to Enter( 0.25 ), // 进入模型的 p 值阈值 Prob to Leave( 0.10 ) // 退出模型的 p 值阈值 ) );Y(:强度)指定响应;Effects里列出候选效应,温度*压力表示考察温度与压力的交互项。Direction("Forward")是前进法,每次从候选中挑 p 值最小且小于进入阈值的变量进模型;选Mixed混合法时,已进模型的变量后续如果变不显著也可能被踢出。进入阈值设 0.25 是因子筛选阶段的惯例——这个阶段宁可多保留候选,也不要因为设成 0.05 把潜在交互挡在门外;等筛选结束,再用 0.05 重新拟合标准最小二乘模型,做正式的假设检验和效应估计。这一步没有后悔药可吃,前期阈值太严,后期交互项漏掉就只能重跑试验。
一个必须提醒的点:逐步回归过程中输出的一串 p 值是搜索过程的副产品,不能直接当作最终假设检验的结论来引用。它的价值是“帮你缩小候选范围”,不是“给你最终结论”。正式报告里引用 p 值,应该用最后标准最小二乘模型的输出。这个细节在培训考核里几乎必考。
3.3 控制图与过程能力:制造业场景下选图和判异规则
控制图部分培训里只讲两类选择:数据是单个连续测量的(比如自动检测线下来的单件数据),用 I-MR 单值-移动极差图;数据是按子组抽样的(比如每班抽 5 件),用 XBar-R 均值-极差图。选错图的后果很直接:子组内变异被当成个体变异,控制限要么过窄要么过宽,图上假报警一片,现场会反复处理不存在的异常。
dt = Current Data Table(); // 单件数据:I-MR 图 dt << Control Chart Builder( Y( :外径 ), Control Chart( Individual Measurement() ) ); // 子组数据:按批次分组的 XBar-R 图 dt << Control Chart Builder( Y( :外径 ), Group X( :批次 ), Control Chart( XBar Chart( R() ) ) );Y指定监控质量特性,Group X指定子组分组变量——不写Group X时 JMP 按时间顺序当单值处理。Individual Measurement()生成 I-MR 组合图,XBar Chart(R())生成均值-极差组合图。不同版本生成的脚本里这两个括号内的写法略有差异,以实际保存脚本输出的为准。图出来之后还有两件事必须做:第一,打开“限值”设置,确认西格玛系数是 3。控制限宽度直接决定误报率,这不是玄学,改成 2 的后果是误报大幅增加。第二,打开“检验”(Tests)面板,把常用的判异规则勾上,比如连续 9 点在中心线同侧、连续 6 点递增或递减。默认只开一条规则,很多趋势性异常会漏看。
| 数据形态 | 控制图 | 适用场景 |
|---|---|---|
| 单个测量值 | I-MR | 自动检测、连续测量线 |
| 固定子组 | XBar-R / XBar-S | 每班/每批抽样质检 |
| 缺陷数 | C / U | 单位缺陷数监控 |
| 不合格品数 | P / NP | 合格率监控 |
过程能力分析紧接着控制图:给平台指定规格限 LSL/USL,输出 Cp/Cpk。注意区分两类西格玛:组内西格玛用于计算 Cpk,反映过程固有波动;总体西格玛用于计算 Ppk,包含批次漂移和长期波动。量产评审时两个都要看,Ppk 明显低于 Cpk,说明过程存在组间漂移,光盯着 Cpk 会过于乐观。
4. JMP 避坑指南:新人最容易翻车的 5 个场景与排查方法
下面 5 个场景每次培训都会出现,属于“交代多少遍还是会犯”的类型,按现象 → 原因 → 解决整理。每条都能对应到前面章节的某个知识点,建议对照着看。
4.1 建模类型设错:批次号当连续变量,方差分析变成了回归
现象:学员导入数据后直接做拟合模型,把批次号放进效应,结果报表里“批次”出现了回归系数和一个奇怪的斜率 p 值。业务上问“批次每增加 1,强度变化多少”,完全答不上来。
原因:数字列被 JMP 自动识别为连续型,批次标签被当成了数值量参与回归计算。
解决:进入分析前把编码型列统一改为名义型,右键列头 → 列信息 → 建模类型。改完重新运行拟合模型,批次会以分类水平的形式出现在效应框里,输出的是批次间均值对比而不是线性趋势。验证方法也简单:看效应框里批次是出现在“协变量”一栏还是分类因子一栏。这个检查应该成为导入数据后的固定动作。
4.2 隐藏行当成删除行,统计结果始终对不上预期
现象:把几行超差数据点了“隐藏”,以为它们不再参与计算。但均值、标准差、控制图里仍然包含这些行,怎么解释都对不上。
原因:JMP 的隐藏只影响显示,不影响分析计算;排除才是不参与分析的开关。两套机制互相独立,隐藏永远不会影响统计量。
解决:对不想参与分析的行使用“排除”,观察行号是否变灰确认状态。如果数据量大,建议加一列“是否纳入分析”的标记字段,用Select Where按条件统一排除,避免手工逐行点错,也方便日后审计。
4.3 改完数据表,旁边的报告不会自动刷新
现象:发现录入错误后直接改数据表单元格,回头一看分布图和控制图还是旧值,一度怀疑软件出了毛病。
原因:JMP 的分析报告是运行时数据快照,数据表变化后报告不会自动感知,也不会后台悄悄重算。这不是缺陷,是设计——避免每次单元格变动都触发全表重算。
解决:改完数据后重新运行分析。日常操作是在报告标题栏执行“重新运行”;更稳的做法是把分析脚本保存到数据表的脚本面板,改完数据一键重跑。培训里我要求学员把关键分析都存成表脚本,保证数据、报告、口径三者一致。
4.4 JSL 脚本里碰到中文或带空格的列名直接报错
现象:从日志窗口复制一段操作脚本,只要列名是中文或带空格,跑起来就在日志里报错,提示找不到列或语法解析失败。
原因:JSL 的列引用:列名遇到非英文标识符和空格时,解析器无法识别。中文列名不是不能用,但必须按带引号的方式引用。
解决:规范写法是Column(dt, "批次号")或:"批次号"。更省心的办法是导入后就把列名改成英文短名,批次、温度、强度改成 batch、temp、strength,脚本稳定性和可读性都好很多。这也是培训讲义里反复强调的命名习惯。
4.5 控制图选错类型:子组数据硬套 I-MR,图上全是假警报
现象:每班抽 5 件、连续 20 个班次的数据,用 I-MR 图监控,结果图上大量点超出控制限,现场生产实际没有异常,工程师被反复叫去确认假报警。
原因:I-MR 图假设每次观测是独立个体,子组数据存在组内、组间两层变异。硬套单值图把两层变异混在一起,控制限计算失真,误报率被放大。
解决:先按抽样方式选图,子组数据用 XBar-R,子组量 n 大于 8 到 10 时改用 XBar-S;分组变量填抽样单元,比如班次或批次。如果业务既关心均值漂移也关心单件超差,再叠加单值图或做 Between/Within 能力分析,不要指望一张图回答所有问题。
5. 把重复分析做成 JSL 脚本:从日志记录到自定义函数
5.1 从操作日志到脚本:把手工点出来的分析变成可重跑按钮
JMP 对培训特别友好的一个特性是:你在菜单里做的每一个操作,都会在日志窗口(Log)里同步生成对应的 JSL 代码。把分布、拟合模型、控制图手工做一遍,打开“视图 → 日志”,就能看到刚才所有操作的脚本文本。复制出来,存成 .jsl 文件,或者直接存到数据表的脚本列表里,下次打开同结构数据就能一键重跑。这个“记录—重放”路径,是不写代码的人进入自动化的最低成本入口。
// 记录下来后稍作整理:用当前数据表代替固定路径 dt = Current Data Table(); dt << Distribution( Continuous Distribution( Column( :强度 ), Outlier Box Plot( 1 ) ) );这段脚本把“打开当前表 + 分布平台 + 异常值盒形图”固化成了一个动作。Current Data Table()取当前激活的数据表,好处是换数据文件不用改路径。保存时选择“文件 → 新建脚本”,JMP 会把脚本保存在脚本编辑器里;想要按钮效果,就存进数据表的脚本面板,一个培训案例对应一个按钮。
5.2 自定义函数:把固定流程封装成带参数的 JSL 函数
当重复操作开始出现在不同列、不同规格限上,逐段复制就不划算了。JSL 的Function支持自定义函数,把“传列名、传上下限”变成一个调用。下面这段是把过程能力分析封装成函数,对不同质量特性分别跑一遍:
runCap = Function( {colName, lsl, usl}, dt = Current Data Table(); dt << Process Capability( Process Variables( Column( dt, colName ) ), Spec Limits( LSL( lsl ), USL( usl ) ) ); ); runCap( "外径", 9.85, 10.15 ); // 第一组规格 runCap( "内径", 4.90, 5.10 ); // 第二组规格Function({colName, lsl, usl}, ...)声明三个形参,函数体内用Column(dt, colName)把字符串列名转成真正的列对象,LSL(lsl)和USL(usl)把数值参数填入规格限。这样做的好处是,十几个特性各自的能力分析被压缩成十几个调用,后续规格改了只动一行参数,不会改错分析平台。
我的一个习惯是:每次培训结束前,把当天讲过的分析按“读数据 → 设列属性 → 分布 → 拟合 → 控制图”整理成一份带参数的模板脚本,发给学员改列名和路径,就可以在自己的数据上重跑。过程中踩过的建模类型、行状态和脚本引用问题,最终都沉淀成脚本里的固定写法。这也是这份讲义最适合的落地方式——先照着手动跑通,再让脚本替你跑。希望帮到你。
本文还有配套的精品资源,点击获取