我叫小野,是 SAS Institute Japan 的 JMP 日本分部的高级测试员。
我可能有错误或偏离主题,但下面我想陈述我现阶段的个人想法。
■特别是第一个问题,由于每次的结果都不同,我认为可能发生了一些奇怪的事情。 (顺便说一句,在只有一个连续解释变量的“逻辑图”中,使用随机数来确定 Y 坐标。但是,至少在 JMP15 及更高版本中,使用固定的随机种子值,因此每次运行时图的外观应该不会有所不同。此外,逻辑回归的其他数值结果不使用随机数,并且出于数学原因,至少在任何具有相同数据和设置的统计软件中,最大似然点估计应该相同,但下面描述的两种情况除外。)如果以下回复无关紧要,您能否告诉我报告中哪些数值结果每次都不同?另外,您能否确认每次使用脚本重新运行分析时数值结果是否不同?
■一般来说,在JMP中拟合模型时,要注意以下几点:
要点1 :如果您的问题是JMP的结果是否与其他统计软件的结果不同,请注意JMP使用一种称为效应编码的方法。
要点 2 :请注意,JMP 结果(部分)将根据为列设置的“比例”而变化。
要点3 :请注意,(部分)JMP 结果可能会根据“值的显示顺序”而发生变化。
要点4 :通过使用脚本,您无需使用鼠标即可重新运行相同的分析。
<详细>
二元、序数或名义响应的逻辑回归只有一个全局解,但以下两种情况除外:
(1)当解释变量之间存在线性独立性时
例如当X1、X2、X3三个变量之间存在关系时,如X1+X2=X3,或者样本量小于解释变量的数量时。在这种情况下,参数估计值不是唯一确定的。
(2)当存在分离时
在这种情况下,参数估计值将是 +∞ 或 -∞。也就是说,没有参数估计。
相反,除这两种情况外,二元、序数或名义响应变量的逻辑回归分析都有唯一的解。因此,如果数据和模型设定相同,除上述两种情况外,即使使用不同的统计软件(*1),至少点估计值(通过最大似然估计得到的点估计值)在数值误差范围内也应该相同。另外,至少JMP的逻辑回归分析在优化过程中不使用随机数(*2),所以从这个方面来说,如果数据和设置相同,并且是同一版本的JMP,结果应该也应该完全相同(*3)。
(*1) 但是,其他软件中执行“逻辑”的某些例程默认使用具有 L1 范数或 L2 范数的惩罚似然,而不是常规的逻辑回归分析。另外,如下文 (b) 中所述,参数估计值可能因分类解释变量的编码而异。此外,最大似然估计的检验有三种类型:Wald检验、似然比检验和得分检验。检验和置信区间随所使用的检验方法而变化。
(*2)但是,在只有一个连续解释变量时绘制的“逻辑图”中,使用随机数来确定 Y 坐标。但是,至少在 JMP 15 及更高版本中,使用固定的随机种子值,因此结果应该不会因运行而异。当前版本(18.2)的帮助可以在以下网址查看。
(*3) 但是,根据处理数据所需的时间,对效应执行的默认检验可能是似然比检验或 Wald 检验。对于当前版本(18.2),以下网址提供了更多详细信息:
但是,有(a)~(c)三点(陷阱)需要注意。
(a)在JMP中,即使数据的数值相同,图表和统计分析的结果也会根据数据表中设置的尺度(连续、序数或名义)而发生变化。
(b) 在 JMP 中,解释变量的编码(尤其是名义尺度编码)遵循制造业和工业统计中常用的方法。这种编码称为“效应编码”,例如,对于名义尺度,男性和女性的编码如下:
男1
男1
女 -1
女 -1
女 -1
或者,
男 -1
男 -1
女人1
女人1
女人1
例如,对于三值名义量表,其编码如下:
爱媛 1 0
爱媛 1 0
香川真司 0 1
德岛 -1 -1
德岛 -1 -1
德岛 -1 -1
(当这种类型的效应编码用于名义尺度变量时,参数估计值表示与“中间设置”的偏差。在制造业和工业统计中,许多名义尺度变量原本是连续的,与当前过程中的设置的偏差通常是一个问题,因此这种类型的编码可能会经常使用。)
对于序数解释变量使用不同的编码。
(c)当数据排序后,最后一级变为“-1”(在名义尺度编码中)。您还可以使用“值显示顺序”列属性来更改最后显示的级别。 (在上面的例子中,德岛是最后显示的类别。)
(b)和(c)之间的差异导致了不同的参数估计。但是,即使(b)和(c)中的设置不同,整个数据的拟合度(“完整模型检验”、“拟合细节”和“失拟(LOF)”)也不会改变。
在 JMP 中,分析过程可以保存在所谓的“脚本”或“JMP 脚本语言 (JSL)”中。您可以从报告顶部的红色三角形菜单保存脚本。在 JMP 版本 18 中,单击报告中的红色三角形 > 保存脚本,然后选择到数据表以保存到数据表。这会将脚本保存到数据表的左上角。此功能允许您无需单击鼠标即可重新创建分析。
(特别是JMP18增加了一个名为“工作流生成器”的新功能,可以记录更广泛的鼠标操作。)
■2
在存在所谓的“负相关系数”的情况下,Somers 的 D 也将为负(就像 Pearson 和 Kendall 的相关系数为负一样)。例如,在下面的数据中,Somers 的 D 和 Kendall 的 τb 为负数。
dt1 = New Table("Test1",
New Column("X", Ordinal, Values([1,1,1,2,2,2,3,3,3])),
New Column("Y", Ordinal, Values([1,2,3,1,2,3,1,2,3])),
New Column("度数", Values([9,8,7, 6,5,2, 4,3,1]))
);
dt1 << Contingency(
Y( :Y ),X( :X ), Freq( :度数 ),
Measures of Association( 1 )
);
要运行此脚本,首先从 JMP 下拉菜单(Windows 版 JMP 18)中选择文件 > 新建 > JSL 脚本。然后,在出现的脚本窗口中,复制并粘贴上述脚本。复制并粘贴后,从下拉菜单中选择编辑>运行脚本。
这也与上面■1中的(c)相关,但结果会根据数据排序的顺序而变化。在不执行任何操作的默认状态下,“最小”和“最大”由数据排序的顺序定义(如果是字母则为 A、B、C,如果是数字则为 1、2、3)。
可以在列属性“值显示顺序”中更改此顺序。 (在旧版本中,此价值顺序被称为不同的选项。)
(1)在数据表中,右键单击列标题,并选择“列信息”。
(2)单击“列属性”组合框,然后选择“值显示顺序”。
(3)如果值没有按从小到大的顺序排序,请选择一个值,然后使用向上和向下箭头(↑或↓)更改顺序。
(4)改变显示顺序后,点击屏幕右上角的确定按钮,关闭列信息窗口。
例如,下面的数据值与上面的完全相同,但由于值的顺序不同(对于 X 变量,“3”定义为最小,“1”定义为最大),因此 Somers 的 D 和 Kendall 的 τb 为正,这与上面的结果不同。 (以下脚本是使用当前的 JMP 18 创建的。它可能无法在旧版本中按预期工作。)
dt2 = New Table( "Test2",
New Column( "X", "Ordinal",
Set Property( "Value Order", {Custom Order( {3, 2, 1} )} ),
Values( [1, 1, 1, 2, 2, 2, 3, 3, 3] )
),
New Column( "Y","Ordinal",
Set Property( "Value Order", {Custom Order( {1, 2, 3} )} ),
Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] )
),
New Column( "度数",
Set Values( [9, 8, 7, 6, 5, 2, 4, 3, 1] )
)
);
dt2 << Contingency(
Y( :Y ),X( :X ), Freq( :度数 ),
Measures of Association( 1 )
);
Somers 的 D 可以为负数(其最小值为 -1)。
另外,要检查您的分析是否不正确,请查看报告中的列联表并确保值按从小到大的顺序排列。如果值没有按照您期望的方式排列,则需要在数据表列属性“值显示顺序”中更改显示顺序。