獲取最短半範圍的值有沒有辦法從離群值箱線圖中的最短半可見度中獲取實際值?
回复:獲取最短半範圍的值你好@vince_faller
後來有人問了這個問題的更廣泛版本https://community.jmp.com/t5/Discussions/Finding-the-X-range-that-will-include-a-certain-portion-of-the-Y/td-p/225474/jump-to/第一條未讀消息
我的解決方案如下。如果它很強大,有人可以破解嗎?謝謝。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// this is just in case wewant to bring the data back to original row order later.
rowcol = New Column("Row", Numeric, "Continuous", Format("Best", 12), Formula(Row()));
dt << run formulas();
rowcol << suppress eval( true );
// now we start working
dt << Sort( By( :weight ), Order( Ascending ), replace table );
// here is where we define the share of included range (0.5)
difcol = New Column("dif", Numeric, "Continuous", Format("Best", 12), Formula(Abs(:weight - Lag(:weight, -(N Rows() * 0.5)))));
dt << run formulas();
difcol << suppress eval( true );
start = (dt<<GET rows="" where="">= start, row()<=end),1 ,0 ));</GET>回复:獲取最短半範圍的值嗨托尼婭,
你能想到的任何理由我都會得到價值
鄰近的(0,0,0,0)
?
絕對不是0-0這樣的最短射程。 抱歉,我無法發布實際數據。 我看看是否可以匿名。
*編輯*沒關係。 由於某種原因,我的相鄰對象轉到 Framebox(1),而所有 Framebox(2) 均為 0。
回复:獲取最短半範圍的值嗨托尼婭,
你能想到的任何理由我都會得到價值
鄰近的(0,0,0,0)
?
絕對不是0-0這樣的最短射程。 抱歉,我無法發布實際數據。 我看看是否可以匿名。
回复:獲取最短半範圍的值感謝您分享<<獲取日記主意。 對我來說真的很聰明而且很新鮮。
這是通過原始計算獲得限制的嘗試。 在我有限的測試中,它與期刊數字相比較。 它似乎按預期處理缺失的值和關係(但我可能錯過了一些東西)。
// Function for calculating the lower and upper limits of
// Shortest Half Range of a numeric column.
shorth = Function({col}, {M, n, d, i = 0},
M = col << get values;
M = Sort Ascending(M[Loc Nonmissing(M)]);
n = N Row(M) / 2 + Mod(N Row(M), 2);
d = Loc Min(J(1, n, M[(i++) + n] - M[i]));
lo = M[d];
hi = M[d + n - 1];
);
// Test
dt = Open("$SAMPLE_DATA/Big Class.jmp");
shorth(Column(dt, "weight"));
Show(lo, hi);
回复:獲取最短半範圍的值這並不是真正的答案,但在某些情況下可能有用。 如果您只想查看最短的半值,可以另存為交互式 HTML 並將鼠標懸停在紅色括號上。
Interactive HTML Box Plot Shortest Half ValuesInteractive HTML Box Plot Shortest Half Values交互式 HTML 箱線圖最短半值
在移動瀏覽器中查看時,只需點擊紅色括號即可。
回复:獲取最短半範圍的值感謝您完成我的劇本,馬克!我從來都不是使用角色功能最高效的。
回复:獲取最短半範圍的值托尼亞的解決方案很聰明,也切中要害。 劇本的其餘部分實際上並沒有那麼糟糕。 變量 jrn 包含分佈平台的字符串表示形式(不僅僅是離群值箱線圖)。 因此,讓我們使用字符串函數來找出所需的紅色括號末端。 我們使用 Contains() 找到參數,並通過連續調用 Word() 來提取位:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution( Y( :weight ) );
rpt = dist << Report;
jrn = rpt[FrameBox(2)] << Get Journal;
pos = Contains( Upper Case( jrn ), "ADJACENTS" );
adj = Word( 2, Sub Str( jrn, pos ), "()" );
lo = Num( Word( 3, adj, "," ) );
hi = Num( Word( 4, adj, "," ) );
回复:獲取最短半範圍的值是的,但這並不是特別容易。這些值將自身顯示為日誌相鄰部分中的最後兩個數字。首先,您需要獲取箱線圖的日誌。
dt=Open("$SAMPLE_DATA/Big Class.jmp");
obj=dt<<DISTRIBUTION></DISTRIBUTION>
接下來,您必須解析 jrn 的相鄰項。如果您還不知道如何操作,也許具有更多 JSL 經驗的人可以幫助您。我不熟悉解析的來龍去脈。
回复:獲取最短半範圍的值無論如何我看不到檢索此類信息。 我嘗試了一種真正簡單的方法,從最低到最高查看 50% 數據的範圍,看看是否匹配,但失敗了。 能夠“<<獲得更短的半值”將是一個很好的增強。
我會將其轉發至 support@jmp.com