許多列的腳本常態測試嗨,
我喜歡編寫一個腳本,可以檢查許多列的正常性,並創建一個二進制輸出(0,1)的新列,以指示正常和非正常。我已經看到了正常測試的插件,但我不知道如何使用它來實現我想要的。
任何幫助是極大的讚賞。
謝謝。
Re:許多列的腳本Normality測試非常感謝你。
Re:許多列的腳本Normality測試Jim對隨機抽樣的想法很好,但是你必鬚麵對樣本量和功率問題。調整你的方式可能更直截了當 p - 使用錯誤檢測率(FDR)方法的值。
Re:許多列的腳本Normality測試您可以從數據中粗略地採樣到合理的樣本大小,這樣您就不會淹沒帶有樣本大小的統計數據。
Re:許多列的腳本Normality測試感謝Dan的評論。但那我該怎麼辦呢。我試圖了解分佈是否正常,我確實有大樣本。
感謝您對此的幫助。謝謝
Re:許多列的腳本Normality測試我同意數據看起來很正常。您遇到了使用大量數據進行統計測試的問題。任何差異,無論多麼微小,都會顯示出統計上的顯著性。你有超過100,000個觀察。正常性測試(如任何統計測試)將因樣本量大而發現統計學上的顯著差異。這種統計上顯著的差異不太可能是實際上顯著的差異。
Re:許多列的腳本Normality測試嗨大衛,
謝謝。我試著用另一張桌子看了一欄。我得到的結果是分佈不正常,我很驚訝,因為分配對我來說是正常的。報告的p值為0.01。我附上了直方圖。任何意見?謝謝。
Re:許多列的腳本Normality測試一些更好的數據...... 例如
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
For (i=5,i<=10,i++,
colName = Column(dt,i) << Get Name;
show(colName);
pValue = Test Normal(dt,colName);
show(pValue);
);
Re:許多列的腳本Normality測試那個循環只是為了說明。 使用Big Class數據它沒有多大意義。 這個錯誤是因為它試圖測試age列的正態性 - 它具有序數建模類型 - 而正態性測試假設列是連續的。 所以你只需要提供一些有意義的輸入數據。
Re:許多列的腳本Normality測試非常感謝您提供快速反饋和解決方案。我使用了你發送給我的模板,當我運行最後一個循環時:
For (i=1,i<=NItems(lstNames),i++,
pValue = Test Normal(dt,lstNames[i]);
show(pValue);
If (pValue<0.05,
show("failed normality test")
,
show("passed normality test"))
);
我收到一條錯誤消息:
Cannot subscript Display Box in access or evaluation of 'Subscript' , rep[/*###*/"Goodness-of-Fit Test"]
我感謝您的幫助。謝謝。
);
Re:許多列的腳本Normality測試以下是與構建用戶定義函數相關的工作流程的討論
http://www.pega-analytics.co.uk/blog/testing-residuals-for-normality/
Re:許多列的腳本Normality測試不確定您對JSL的了解是什麼,但您可以使用用戶定義的函數,例如:
Test Normal = Function({dt,col},{Default Local},
dist = dt << Distribution( Invisible,
Continuous Distribution(
Column( Eval(col) ),
Fit Distribution(
Normal( Goodness of Fit( 1 ) )
)
),
Histograms Only
);
rep = dist << Report;
ob = rep["Goodness-of-Fit Test"];
tb = ob[TableBox(1)];
mat = tb[NumberColBox(2)] << Get;
pValue = mat[1];
rep << Close Window;
Return(pValue);
);
// illustration of using hte function
dt = Open("$SAMPLE_DATA/Big Class.jmp");
pValue = Test Normal(dt,"height");
show(pValue);
If (pValue<0.05,
show("failed normality test")
,
show("passed normality test")
);
從這裡,您可以將函數放在迭代列的for循環中:
lstNames = dt << Get Column Names(String,Numeric);
For (i=1,i<=NItems(lstNames),i++,
pValue = Test Normal(dt,lstNames[i]);
// etc
);