隨機抽樣替換是否有可能做到這一點?它似乎沒有出現表->子集功能。
我知道您可以在JMP Pro平台的各個部分中獲得Bootstrap估計,但是我特別想知道有關生成數據表的信息。
謝謝!
回复:隨機抽樣與替換嗨,溫迪,
是的,請參見下面的腳本。它需要一個4行表,並抽取10個樣本進行替換。需要使用AsList()函數來完成此操作,否則,很不幸會出現錯誤。
Names Default To Here( 1 );
dt = astable((1::4)`);
nSamples = 10;
dt2 = dt << subset( rows( As List( J( nSamples, 1, Random Integer( 1, N Row( dt ) ) ) ) ) );
回复:隨機抽樣與替換嗨,溫迪,您可以從數據表中執行此操作。右鍵單擊列標題,選擇“新建公式列”,“隨機”,然後選擇“替換樣品”。
回复:隨機抽樣與替換嗨,溫迪,我應該澄清一下。
只要用戶想要一個大小小於或等於表中行數的樣本,Mia提到的“新公式列”技術就可以使用。如果您需要更大的樣本,我不知道一種通過點擊的方式(有效地將表與其自身連接起來,直到其大小足夠大,效率低下但可以使用)的方式。也許其他人會用一種方法做到這一點。
該腳本適用於任何樣本大小,但是每當請求的行數超過原始表中的行數時,都需要在行矩陣周圍包裹As List()函數。
回复:隨機抽樣與替換謝謝你倆!是的-我認為客戶可能需要超採樣,因此了解其他人如何做到這一點會有所幫助。
另一個相關的問題是關於分層。 是否可以通過替換重新採樣以確保另一個屬性的分佈?
回复:隨機抽樣與替換你好 @wendytseng ,
有一個帶替換外接程序的樣本可以執行過採樣,但不能針對另一個變量進行分層。
@朱蓮
回复:隨機抽樣與替換嗨,溫迪,
不確定您的客戶是否願意編寫腳本,但是可以輕鬆擴展該想法以對分類變量進行分層。下面的簡短腳本針對“汽車物理數據”數據集和“類型”列執行此操作。請求1000行,其中原始表有116。請注意,由於將每個類別的樣本大小四捨五入到最接近的整數,因此返回了1002行。
這不是最快的方法,但是相對容易理解。如果您通過這種方式與客戶交談,也許您的客戶將能夠編寫他們想要的腳本?
乾杯,
布雷迪
Names Default To Here( 1 );
dt = Open( "$Sample_Data\Car Physical Data.jmp" );
stratCol = Column( dt, "Type" );
nSample = 1000;
//determine the (over)sampling ratio
sRatio = nSample / N Row( dt );
//get a list of the stratification column's values
categories = ((Associative Array( stratCol << get values ) << get keys));
// initialize the master row matrix
rowMat = [];
//For each category
For( i = 1, i <= N Items( categories ), i++,
// Get the table rows belonging to this category
catRows = dt << getrowswhere( dt:stratCol == categories[i] );
// Determine how many rows belong to this category
catN = N Items( catRows );
// Oversample these row values by the specified ratio, and append them to the master row list
rowMat |/= catRows[As List( J( Ceiling( catN * sRatio ), 1, Random Integer( 1, catN ) ) )];
);
// Subset the data table, using the final master row list
dt << subset( rows( As List( rowMat ) ) );
回复:隨機抽樣與替換對於過採樣,還有以下加載項: 分層數據分區(帶有平衡選項)加載項
尚未在JMP 15中進行測試...
回复:隨機抽樣與替換那就是我們為UC Denver教授指定的那個,對嗎?我查看了它的代碼,並且想不出一種方法來使其工作,而又不涉及Train / Test / Validate。