迭代報告的元素大家好,我是 JMP 的新手,但我發現它非常有用且實用,到目前為止我非常喜歡它。 我正在學習 JSL,因為我需要為我的隊友自動執行一些分析並提高效率。 我從一些簡單的事情開始,但我需要幫助才能繼續前進。
我需要自定義分發平台的結果,以對錶的多個列執行正態性測試,以便在我或我的同事需要時重複執行。 我設法編寫了一個簡單的腳本,以簡單的方式實現了這一點。 但是,我在滿足條件時如何編輯報告的特定元素時遇到問題。
以下是從 Shapiro-Wilk 測試返回值的腳本:
// Select variables to analyze
Names Default to Here( 1 );
dt = Current Data Table();
dialog = New Window( "Select Columns", << Modal,
Panel Box( "Column Selection",
Lineup Box( N Col( 1 ),
Text Box( "Select columns for distribution" ),
y col list = Col List Box( All )
)
),
H List Box(
Button Box( "OK",
y col = y col list << Get Selected;
),
Button Box( "Cancel" )
)
);
If( dialog["Button"] == -1,
Throw( "User cancelled" )
);
// Create distribution
dist = dt << Distribution(Columns(evalList(y col)),Histograms Only);
// Add parameters
dist << Normal Quantile Plot( 1 );
dist << Fit Distribution(Normal(Goodness of Fit(1)));
當 P 值 (Prob
例如,當我嘗試編輯報告上的某些內容時,刪除參數估計值
distr["Parameter Estimates"] << Delete;
它僅對報告的第一個元素執行此操作。
對於如何操作報告元素的任何幫助,我將不勝感激,一般來說,例如刪除所有參數估計值,特別是 P < 0.05。
謝謝!
大規模定制回复:迭代報告的元素謝謝!!!回复:迭代報告的元素H List Box() 只是報表窗口中的一個容器。JMP 報表窗口可以被視為嵌套顯示容器和這些容器中的顯示元素的集合。如果要查看帶有顯示容器的顯示樹結構,請右鍵單擊大綱框旁邊的灰色三角形,然後選擇編輯 > 顯示樹結構。

在這種情況下,我認為您不能以相反的方式執行此操作,正如您所描述的那樣,因為運行分析平台腳本命令的結果之一是它創建顯示窗口,以及 <
如果你不放置距離正如我在腳本中所做的那樣進入顯示樹,它只會創建一個新窗口,其中包含單個分佈分析,並且每個分佈分析都會有一個單獨的窗口(對於所選的每個列)。
回复:迭代報告的元素非常感謝,它實現了它的功能,也教會了我很多東西。 這是一個很大的幫助。
我想問你一些問題來幫助我理解,我希望這對你來說不會有太大問題:我注意到你在 for 循環中採取的第一步是將分佈附加到 hb 變量,然後你添加所有詳細信息(qq-plot、SW 測試等)。 根據我的編程邏輯和經驗,我通常會先添加詳細信息,然後將所有內容附加到正確的位置(這正是我實際上遇到麻煩的地方)。 我的問題是,新窗口函數創建的 hb 是如何工作的? 它是某種白頁,它將添加所有後續命令並相應地調整新窗口的大小嗎? 它會附加與變量 dist 有關的所有內容嗎? 使用 distr = Report( dist ) 創建的新變量如何影響附加內容?
關於您對擬合優度測試的評論,非常感謝,這實際上就是我創建腳本的原因。 我一個月前剛剛開始一份新工作,到目前為止,我的隊友只使用 Shapiro-Wilk 檢驗中的 p 值來接受或拒絕正態分佈。 我試圖為他們提供更多工具來理解或評估數據是否遵循正態分佈以及原因。
回复:迭代報告的元素當您將 Distribution() 與列列表一起使用時,報告窗口包含許多“獨立”分佈分析的輸出。這些分析中的每一項都是一個單獨的對象。與這些對象的交互可能不同於與報表窗口中的報表圖層的交互
dist << Normal Quantile Plot(1);
該消息將廣播到報告窗口中顯示的所有分發對象。但當你這樣做時
distr=Report(dist);
distr["Parameter Estimates"] << Delete;
JMP 的作用是轉到可使用“參數估計”字符串引用的報表圖層對象的第一個實例,在本例中為擬合法線結果下的輪廓框。要執行您想做的操作,您需要迭代報告的每個部分,從報告層獲取 Shapiro-Wilk 測試的結果,然後決定刪除輸出報告的部分內容。
我認為在您的情況下,每次迭代每一列的分佈分析,將結果附加到新的報告窗口會更容易。這是一些示例代碼,展示瞭如何做到這一點
// Select variables to analyze
Names Default To Here( 1 );
dt = Current Data Table();
dialog = New Window( "Select Columns",
<<MODAL></MODAL>