我叫小野,是 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)。
另外,要檢查您的分析是否不正確,請查看報告中的列聯表並確保值按從小到大的順序排列。如果值沒有按照您期望的方式排列,則需要在資料表列屬性「值顯示順序」中變更顯示順序。