如何在 JMP 中疊加直方圖有兩種方法可在 JMP 中疊加直方圖:使用「分佈」和「圖形產生器」平台。 您可能需要疊加直方圖來查看兩個或多個變數的分佈之間的相似性和/或差異。 疊加直方圖可以讓您以比單獨查看分佈更精確的方式比較分佈。
使用分佈疊加直方圖
第一種方法是使用分銷平台。 以下是使用 Car Physical Data.jmp 範例資料表的範例。 除了疊加直方圖之外,本例還疊加了常態分佈曲線。 如果您不希望圖表中出現分佈曲線,則只需忽略相關步驟即可。 Car Physical Data共有116行,架構如下:

從資料表中,前往分析 > 分佈。 在 Y 列框中放置兩個數字連續列(例如「位移」和「馬力」),然後按一下「確定」。
輸出將如下所示(為了簡單起見,我刪除了一些預設輸出部分,例如分位數和總計統計):

如果您看到直方圖並排而不是相互重疊,請按一下「分佈」旁邊的紅色小三角選單,然後選擇「堆疊」以查看它們,如上圖所示。 如果直方圖以垂直格式顯示,請按一下每個變數名稱旁邊的紅色小三角選單,然後選擇顯示選項 > 水平佈局。 另一個選項是,在更改一個變數時按住 Ctrl 鍵,而不是單擊每個單獨的紅色小三角選單。 透過這樣做,更改會廣播到所有其他變數。
正如我上面提到的,我將為每個分佈擬合一條常態曲線並覆蓋這些元素。
若要產生法線曲線,請按住 Ctrl 鍵並按一下(在 Mac 上按住 Command 鍵並按一下)「位移」旁的紅色小三角選單。 然後,選擇“連續擬合”>“正常”。 兩個變數的輸出中均顯示擬合常態分佈,如下所示。

現在,我將繼續自訂每個圖中元素的顏色,以便我們可以在最終結果中區分它們。 我將使用紅色代表位移,藍色代表馬力。 在位移直方圖中右鍵並選擇自訂。 在出現的視窗的項目清單中,按一下直方圖。 將填滿顏色變更為紅色,將透明度變更為 0.5(這樣我們可以更輕鬆地觀察直方圖重疊的位置)。 自訂圖表視窗顯示如下:

對於位移,法線曲線已經是紅色的,所以我們不需要自訂該項目。 按一下「確定」關閉視窗。
現在,重複前面的步驟,將馬力直方圖顏色變更為藍色,並將透明度變更為 0.5。 我們還想將法線曲線更改為藍色,因此單擊“法線”線項目並將“線顏色”欄位更改為藍色。 按一下“確定”。
我們的輸出現在看起來像這樣:

現在,我將把位移直方圖和法線曲線複製到馬力圖上,使它們重疊。
為此,首先在位移直方圖中右鍵單擊,然後選擇“編輯”>“複製幀內容”。 接下來,右鍵單擊馬力直方圖並選擇編輯 > 貼上幀內容。 您可能需要調整視圖中的軸範圍才能看到兩個完整的直方圖。
結果是一張圖中的直方圖和常態曲線:

使用此方法,沒有自動圖例,但您可以使用 Annotate添加文字和線條的工具為手動圖例新增彩色線條元素的工具。
實施這些工具後,我的結果是這樣的:

使用圖形產生器疊加直方圖
疊加直方圖(和分佈曲線)的第二種方法是使用圖形產生器平台。
此方法要求資料採用堆疊格式,以便所有連續值都在一列中。 若要堆疊數據,請從原始汽車實體數據表轉到「表」選單,然後選擇「堆疊」。 將「位移」和「馬力」放入「堆疊列」框中。 按一下“確定”。
新的堆疊資料表有一個名為「資料」的列,其中包含所有資料值,以及一個名為「標籤」的列,該列指示該值是源自「位移」列還是「馬力」列。
從堆疊資料表中,前往圖形 > 圖形產生器。 將 Data 拖曳至 X 角色,將 Label 拖曳至 Overlay 角色。 在圖表中右鍵並選擇點 > 變更為 > 直方圖。
現在,我們需要確保繪圖正確縮放。 我將返回「分佈」平台中的疊加圖,然後點擊紅色小三角選單 > 直方圖選項 > 密度軸。 這個軸讓我們了解圖形產生器 Y 軸應該是什麼。 直方圖的右側出現一個軸,我雙擊它以打開“軸設定”視窗。 本例中的最大值為 0.0117586。
現在,返回圖形產生器輸出,將資料列拖曳到 Y 並雙擊該軸以開啟 Y 軸設定。 將最小值設定為 0,最大值設定為 0.0117586,以模擬分佈平台中的密度軸。 我還將增量設為 0.002,並將格式部分中的 Dec(十進位)欄位設為 3。
如果需要,您可以雙擊 X 軸以開啟其「軸設定」對話方塊並自訂最小值、最大值和增量值。此時的結果是這樣的:

接下來,我將疊加法線曲線。 首先,我們需要記錄分佈平台中應用於位移和馬力的擬合常態分佈的平均值和標準差值。 請記住,這些值是在選擇連續擬合 > 常態後在輸出中給出的。
回想一下下面分佈輸出中的值(以紅色標示):

記錄這些值後,在圖形產生器圖中右鍵單擊並選擇自訂。 按一下 + 圖示以新增自訂腳本。 我們將為每條常態曲線使用以下語法。 Pen Color 語句定義曲線的顏色,而 Y 函數則使用指定的 mu 和 sigma 參數(從每個變數的分佈輸出記錄)繪製常態密度曲線。
Pen Color( "<COLOR>" );
Y Function( normal density(x, mu, sigma), x );</COLOR>
使用上面的語法以及應用於位移和馬力的擬合正態分佈的(四捨五入的)mu 和 sigma 值,我在自訂腳本視窗中輸入以下文字。
//Horsepower
Pen Color( "blue" );
Y Function( Normal Density( x, 130.198, 39.8225 ), x );
//Displacement
Pen Color( "red" );
Y Function( Normal Density( x, 158.31, 60.4088 ), x );
按一下“確定”。 結果是這樣的:

現在,我將進行一些自訂,以根據我的喜好最終確定圖表。 我更喜歡刪除圖形標籤、Y 軸標籤以及 X 軸標籤。 我將雙擊每個字段並使用刪除鍵刪除文字。 另外,我不想在 Y 軸上顯示任何刻度標籤。 我雙擊該軸以打開“Y 軸設定”,並取消選中對話框“軸標籤行”部分中主要刻度線的“標籤”複選框。 另外,我想移動圖表內的圖例。 我點擊圖形產生器旁邊的紅色小三角選單,然後選擇圖例位置 > 右側內部。 最後,我將稍微擴展 x 軸的範圍以獲得更完整的圖片。 我打開 X 軸設定並將最小值設為 0,最大值設定為 400。
最後,我點擊“完成”按鈕,留下下圖:

上述範例展示如何使用兩種方法疊加直方圖和常態曲線:JMP 中的分佈平台和圖形產生器平台。 如果需要,可以將此範例推廣為覆蓋兩個以上的直方圖和常態曲線,或將其他分佈曲線擬合到您的資料。
本文示範了使用 Distribution 和 Graph Builder 疊加直方圖(和分佈曲線)的兩種方法。
回覆:如何在 JMP 中疊加直方圖你好@DecileDromedary ,
這是 Big Class 的範例。 我採用了不同的方法(更多基於表,更少 JSL 腳本)。由於某種原因,我必須標準化數據,因為積分函數要花很長時間才能進行評估(顯然導致 JMP 進入非終止過程,即(無響應))。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// New formula column: Standardize[height]
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Distributional" ), "Standardize" ),
Columns( :height )
);
// New column: mean Std height by sex
Data Table( "Big Class" ) << New Column( "mean Std height by sex",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Col Mean( :"Standardize[height]"n, :sex ) )
);
// New column: stdev height by sex
Data Table( "Big Class" ) << New Column( "stdev Std height by sex",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Col Std Dev(:"Standardize[height]"n, :sex ) )
);
// → Data Table( "Big Class By (sex)" )
dt2 = Data Table( "Big Class" ) << Summary(
Group( :sex ),
Mean( :mean Std height by sex ),
Mean( :stdev Std height by sex ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" )
);
// Define curves and calculate overlap area
mean1 = dt2[1,3]; //female
stdev1 = dt2[1,4];
mean2 = dt2[2,3]; //male
stdev2 = dt2[2,4];
N1 = Expr(Normal Density(x, mean1, stdev1));
N2 = Expr(Normal Density(x, mean2, stdev2));
ovl = Integrate(Min(N1, N2), x, ., .);
Show(ovl);
//––––––––––
// Illustration
ym = xm = (-1000 :: 1000) / 100;
For(i = 1, i <= N Col(xm), i++,
ym[i] = Min(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2))
);
New Window("Overlap Coefficient",
y = Graph Box(
Y Scale(0, 1),
X Scale(-5, 12),
Y Function(N1, x);
Y Function(N2, x);
Text({0, 0.6}, "OVL% = ", ovl*100);
Fill Color(1);
Polygon(xm, ym);
)
);
/*## ## ## */
// Close Data Table: Big Class By (sex)
Close( dt2, NoSave );
//hide Big Class
dt << Show Window(0);
希望能幫助你!
聚苯乙烯 抱歉我錯過了這個。 將來,為了確保您得到更及時的答复,請將您的問題發佈到一般討論論壇上,您可以在您的問題中添加指向此帖子的鏈接,我們的知識淵博且經驗豐富的用戶社區應該能夠非常快速地為您提供指導(而且比我使用 JSL 更熟練)。此外,如果您是 JMP 授權用戶,您也可以將您的問題提交至support@jmp.com -- 我們在許多情況下提供支持,包括像這樣的問題。
乾杯,
@派崔克朱利亞諾(JMP 技術支援)
回覆:如何在 JMP 中疊加直方圖@派崔克朱利亞諾:
我正在嘗試部署 ovl 係數的腳本。 我在隨機數據上嘗試了一下,效果非常好! 謝謝。 但是,下一步我嘗試將這些值自動獲取到腳本中。
Names Default To Here(1);
// Define curves and calculate overlap area
mean1 = 5.28;
stdev1 = 0.91;
mean2 = 8.45;
stdev2 = 1.36;
N1 = Expr(Normal Density(x, mean1, stdev1));
N2 = Expr(Normal Density(x, mean2, stdev2));
ovl = Integrate(Min(N1, N2), x, ., .);
Show(ovl);
只是我需要腳本來讀取mean1,Std dev 1和mean2,std。 dev 2 直接從列中輸入,而不是每次都手動將其輸入到腳本中。
我嘗試了很多方法:
試驗1:意思是=意思是(柱子( dt ,一個列)[ sel_rows ])
試驗2: Col Mean(name, <依變數, ...>)
如果有辦法請告訴我。 謝謝!
回覆:如何在 JMP 中疊加直方圖你好@DecileDromedary不客氣! 不幸的是,我認為這個工作流程不容易重現(在 JMP 產生的腳本中),即使使用 JMP 最近的增強型日誌 (JMP 16) 和工作流程產生器 (JMP 17) 也是如此。當然,可能有辦法從頭開始在 JSL 中編寫腳本,但這會需要更多工作(超出了此處的範圍)。
您能否在以下內容中添加有關您的請求的評論(與上述類似)願望清單郵政?
https://community.jmp.com/t5/JMP-Wish-List/Support-for-overlaying-multiple-distributions/idi-p/359241
您的要求與那裡的要求類似,請參閱那裡的螢幕截圖@shampton82 :

如果像上面這樣的圖內建到「分佈」或「透過 X 擬合 Y」中,那麼您可以將該腳本儲存到資料表中,就像我在「圖形產生器」中所示的那樣。
這將有助於我們將您的請求視為 JMP 未來版本中圖形產生器的功能增強。
回覆:如何在 JMP 中疊加直方圖@派崔克朱利亞諾對於這樣的事情:

謝謝!
回覆:如何在 JMP 中疊加直方圖@派崔克朱利亞諾多謝!, 使用圖形產生器也是個好主意。
,為了配合我的問題陳述,我想保存我們在「分佈」標籤中產生的特徵、直方圖、常態曲線以及常態分位數圖。 在這一步驟之後,我們使用複製框架內容並貼上具有顏色差異的框架內容。
再次感謝!
回覆:如何在 JMP 中疊加直方圖你好@DecileDromedary當然! 使用 Graph Buidler 方法,完成所有自訂後,您可以前往紅色小三角選單並選擇儲存腳本 > 到資料表:

JMP 將產生一個腳本(在我的範例中,名為「資料與資料」)並將其寫入資料表,您可以透過點擊腳本名稱旁邊的綠色播放按鈕在左上角存取它:

已儲存的資料表腳本可能如下所示(我在 JMP 17.1 中產生了此腳本):
Graph Builder(
Variables( X( :Data ), Y( :Data ), Overlay( :Label ) ),
Elements( Histogram( X, Y, Legend( 4 ), Response Scale( "Fill" ) ) ),
SendToReport(
Dispatch(
{},
"Data",
ScaleBox,
{Format( "Best", 12 ), Min( 4.68939393939394 ), Max( 365.833333333333 ),
Inc( 100 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Data",
ScaleBox( 2 ),
{Format( "Fixed Dec", 12, 3 ), Min( 0 ), Max( 0.0107369299221357 ),
Inc( 0.002 ), Minor Ticks( 1 ), Label Row(
{Automatic Font Size( 0 ), Automatic Tick Marks( 0 ),
Label Orientation( "Horizontal" )}
)}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
5,
Description( "" ), //Horsepower
Pen Color( "blue" );
Y Function( Normal Density( x, 130.198, 39.8225 ), x );
//Displacement
Pen Color( "red" );
Y Function( Normal Density( x, 158.31, 60.4088 ), x );
), DispatchSeg( Hist Seg( 1 ), Bin Span( 4, 0 ) ),
DispatchSeg( Hist Seg( 2 ), Bin Span( 4, 0 ) )}
)
)
)
回覆:如何在 JMP 中疊加直方圖謝謝!將兩個常態分佈相互疊加(具有顏色差異)效果非常好!
如果有機會,我想將具有這些功能的腳本保存在資料表中。
是否可以?
回覆:如何在 JMP 中疊加直方圖你好@XanGregg格雷格,謝謝你的提醒JMP 願望清單,我會添加到那裡!
總結一下要求,基本上是這樣的:
1. 以與 JMP 執行單變量分析並使用“分析”>“分佈”顯示直方圖/匯總統計數據非常相似的方式,在圖形生成器平台中啟用 JMP,以覆蓋至少兩個分佈,分別將常態分佈曲線擬合到每個分佈, 和自動計算兩個分佈之間的面積重疊比例。請參閱附圖:

2.請注意,用戶社群做出了各種良好的貢獻除了這篇精彩的文章之外,在這個方向上@塞利格曼- 此禮遇@多發性硬化症, https://community.jmp.com/t5/Discussions/is-there-a-way-to-find-the-area-common-to-two- Different-normal/mp/86379/highlight/true#M38500他們創建了自己的 JSL 來執行此操作。
為了方便起見,我將腳本附在此:最後,最想要的腳本將是我上面所描述的內容,以及正在使用下面的 JSL 示意性地計算和說明的內容。
Names Default To Here(1);
// Define curves and calculate overlap area
mean1 = 5.28;
stdev1 = 0.91;
mean2 = 8.45;
stdev2 = 1.36;
N1 = Expr(Normal Density(x, mean1, stdev1));
N2 = Expr(Normal Density(x, mean2, stdev2));
ovl = Integrate(Min(N1, N2), x, ., .);
Show(ovl);
//––––––––––
// Illustration
ym = xm = (-1000 :: 1000) / 100;
For(i = 1, i <= N Col(xm), i++,
ym[i] = Min(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2))
);
New Window("Overlap Coefficient",
y = Graph Box(
Y Scale(0, 1),
X Scale(-5, 12),
Y Function(N1, x);
Y Function(N2, x);
Text({0, 0.6}, "OVL% = ", ovl*100);
Fill Color(1);
Polygon(xm, ym);
)
);@史蒂文我希望這也能為您充分捕捉它?
回覆:如何在 JMP 中疊加直方圖嘿派崔克,
是的JMP 願望清單這是一個好方法,這樣其他人就可以參與其中。
由於我剛剛趕上這個線程,您能總結一下請求是什麼嗎? 我看到了對分佈中重疊直方圖的請求以及對圖形生成器中更多診斷/摘要數字的選項的請求。
回覆:如何在 JMP 中疊加直方圖@史蒂文我完全同意你的觀點……也許如果我們對其進行足夠多的投票,它就會被合併?JMP 迫切需要的另一個基本功能是能夠自動將分佈平台中直方圖的比例更改為垂直(與水平),以便您實際上可以清楚地讀取數字。我認為 Graph Builder 是一個擁有您/我們正在談論的功能的好地方。與分析迴歸關係並可選擇使用複選框開啟 r 平方、方程式等(或另一個範例是帶有箱線圖的 4 數總和)時類似,這可以是圖形中的類似功能建構者。事實上,一般來說,在圖形產生器中繪製直方圖可以得到極大的改進,以更接近地模仿分發平台的視覺友善性。我發現自己經常使用 hte Grabber 工具來調整我的分佈圖的大小,如果/當我努力在圖形生成器中製作它們時。
@XanGregg我在這裡複製你的內容!很高興今天在 2019 年 JMP 圖森發現高峰會上見到您!(2019 年 10 月 18 日)
回覆:如何在 JMP 中疊加直方圖我也希望 JMP 能夠自動比較多個分佈。這是按晶圓或組裝批次對半導體 IC 測試結果的核心比較,我相信許多其他人也有類似的需求。Quantix 讓這成為一個簡單的拖放過程,甚至允許多個上限和下限。當我點擊並點擊進行比較時,大廳另一邊的同事嘲笑我。
回覆:如何在 JMP 中疊加直方圖@塞利格曼這很棒!感謝您分享這一切。我確實認為這是統計發現的核心,JMP 應該在 JMP 的未來版本中以更自動化的方式整合它(作為分發平台的一部分或作為圖形建構器平台的一部分)。Minitab 等其他軟體將允許您透過點擊幾下滑鼠來疊加直方圖並比較密度。
過去我曾多次在圖形生成器中做過類似的事情,但總是遇到一些困難和多次滑鼠點擊。 我真的很喜歡您的自訂腳本實作和「複製貼上框架內容」的想法。
回覆:如何在 JMP 中疊加直方圖不客氣,利普薩! 您的站點代表確實能夠協助您進行升級。 如果您的網站尚未處理 v14 訂單,網站代表可以透過以下位址請求升級: www.jmp.com/upgrade 。
回覆:如何在 JMP 中疊加直方圖非常感謝您的回复,並確認我不僅僅是錯過了一些愚蠢的細節。我確實有網站許可證。我會先詢問我的現場人員是否可以升級到 ver14.2。謝謝你!
回覆:如何在 JMP 中疊加直方圖嗨,利爾普薩,
謝謝你讓我們注意到這一點。 您是對的 - JMP 11 圖形產生器中的疊加角色不會區分直方圖元素的顏色。 如果您有網站許可證,可以透過技術支援 (support@jmp.com) 聯絡我們,我們可以協助您升級至目前版本 JMP 14.2。 如果您擁有 JMP 11 的單一使用者許可證,則這不包括主要版本升級。 在這種情況下,請隨時聯繫我們的 JMP 銷售部門:877-594-6567。
回覆:如何在 JMP 中疊加直方圖這“正是”我想要做的,但不幸的是“圖形生成器”選項的說明不起作用。
我已經提取了範例資料集,按照指示堆疊了列,然後完全按照指示進行操作,並且效果很好,直到我看到將“標籤”列拖曳到“覆蓋”角色中的說明。當我這樣做時,圖表中沒有任何變化。我仍然看到直方圖,但所有數據都集中在一起,而不是像作者的插圖那樣分成 2 個重疊的顏色分組。這裡發生了什麼事?我正在運行 JMP 11.2.0。
這是視窗的螢幕截圖:

謝謝你!