本週我們將慶祝SAS用戶組會議35週年 SGF 2010 (以前稱為SUGI)。自1975年第一次與五位用戶見面以來,SAS已經取得了非凡的成長和成功。在這段時間內,我們還看到了現代統計領域的重大進步,特別是在使用計算機密集型方法方面。其中一種主要的方法,就是與SAS同時發起的,是引導程序(Efron,1979)。這個基本的bootstrap方法來自維基百科的Bootstrapping頁面解釋說,通過重新取樣數據進行替換,以形成感興趣統計的經驗抽樣分佈。與SAS一樣,bootstrap已成為統計推斷的顯著工具; Efron在這種方法上的獨立作品被引用超過30,000次。
快進十年,約翰薩爾 (SAS的聯合創始人之一)和一小批開發人員於1989年開始致力於JMP。像許多SAS產品一樣 JMP 繼續發展並在全球範圍內迅速普及。僅僅幾年之後,Ross Ihaka和Robert Gentleman開始使用現在廣泛使用的開源統計語言R,其語法基於以前的S和S +語言。
SAS全球論壇是一個了解我們的用戶如何使用SAS產品以及用戶了解即將推出的SAS軟件的最新和最大進步的機會。JMP 9的一個這樣的公告(在2010年秋季發布)我很自豪能成為其中的一部分 JMP與R的新集成功能 。我想在bootstrap置信區間仿真示例的上下文中展示集成的基本元素。
JMP是R的一個很好的補充。與R的集成體現了幾個新的JSL命令,允許您連接到桌面上的R安裝,與R之間發送數據,以及通過R包提交R例程。可以輕鬆構建JMP對話框,以便將參數輸入到R作為前端,更重要的是,JMP的交互式和動態統計平台和圖形為R函數提供了完美的後端。下面的對話框是一個連接到R的應用程序,用於為給定的分佈創建數據,並執行模擬以測試一些常見統計信息的引導置信區間的覆蓋範圍。
您可能會問自己為什麼這樣的模擬會很有趣或相關。引導方法(和引導置信區間)今天被廣泛用於估計統計的屬性,尤其是當統計的分佈不是眾所周知時。但如果該分佈恰好有偏差或偏差(例如方差的分佈),則統計的自舉置信區間可能不准確。通過此應用程序,您可以快速輕鬆地評估最常見分佈和統計信息的引導置信區間的覆蓋範圍。
下面的輸出顯示了標準正態分佈的自舉均值(1000次重複)的95%置信區間的模擬結果(1000次運行)(均值為0,方差為1)。R包“boot”已加載,並且 boot.ci()函數通過幾種不同的方法計算引導間隔。使用JMP中的Distribution和Graph Builder平台,我們看到使用Basic,Normal,Percentile和BCa方法的95%bootstrap置信區間準確地覆蓋了真實均值(當置信區間包含0時,Coverage列值等於1,所以級別1的Prob條目對應於經驗範圍)。圖表生成器輸出顯示置信區間寬度在方法內和方法之間大致相同。

這是用於運行上述場景的引導程序的R集成JSL代碼:
rconn = R Connect();
rconn << Submit("\[
library(boot)
# Load Boot package
library(boot)
RStatFctn <- function(x,d) {return(mean(x))}
b.basic = matrix(data=NA, nrow=1000, ncol=2)
b.normal = matrix(data=NA, nrow=1000, ncol=2)
b.percent =matrix(data=NA, nrow=1000, ncol=2)
b.bca =matrix(data=NA, nrow=1000, ncol=2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b <- boot(rnormdat, RStatFctn, R = 1000)
b.ci=boot.ci(b, conf =095,type=c("basic","norm","perc","bca")) b.basic[i,] = b.ci$basic[,4:5]
b.normal[i,] = b.ci$normal[,2:3]
b.percent[i,] = b.ci$percent[,4:5]
b.bca[i,] = b.ci$bca[,4:5]
}
]\"));
b_basic= rconn << Get(b.basic);
b_normal = rconn << Get(b.normal);
b_percent= rconn << Get(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();
使用R Connect()JSL命令並將其分配給對象“rconn”,代碼將消息發送到JSL腳本化對象“rconn”以通過Submit()命令提交R代碼並檢索包含引導置信區間的R矩陣通過Get()命令返回。
現在讓我們看看當我們測試標準正態分佈的方差的bootstrap置信區間的覆蓋範圍時會發生什麼。在對話框中,如果將“目標值”更改為1並選擇“方差”作為要計算的引導統計量,然後單擊“運行模擬”,則會得到以下結果。在這種情況下,所有四種方法都覆蓋了方差的真實值,包括專門用於對抗自舉統計分佈中的偏差和偏度的偏差校正和加速(BCa)方法(Efron 1987)。
請注意,在基本引導置信區間內(通過選擇基本覆蓋範圍分佈下的“0”直方圖條)看到未能覆蓋目標值的置信區間是多麼容易,JMP 9中的新功能會使得灰色點無效未選中的。我們還可以看到Basic方法中失敗的間隔如何在其他方法中執行。其他標準JMP工具(如數據過濾器)可以幫助以無法在R中輕鬆快速地完成的方式探索這些結果。同樣,使用自定義JSL圖形腳本創建Venn時,可以輕鬆查看方法之間的覆蓋範圍的比較圖表顯示間隔包含真實參數的時間(可在 JMP文件交換並在 JMP基因組學 )。
這個應用程序只是展示了你可以用JMP和R做什麼。通過JSL和JMP的統計和圖形平台以及R中廣泛和多樣的包和函數,可以構建完整易用的統計分析應用程序。
JMP還可以與SAS集成,從而增加了通過基於文件的系統處理大規模數據的能力以及SAS程序的深度和高級功能。通過這些無縫集成,JMP可以成為一個集線器,使您能夠連接SAS和R,並提供獨特的統計功能,如JMP Profiler和交互式圖形功能,如Graph Builder。你可以做的事情的可能性是無窮無盡的!
SAS,JMP,R和統計計算領域在過去的35年中取得了長足的進步。我很高興能成為這家公司和這個行業的一員,我們將繼續提供軟件工具,讓您以靈活,時尚和輕鬆的方式完成分析!
當JMP 9正式發佈時,我將把腳本用於引導模擬,其他的則放在JMP文件交換上。
現在讓我向您提出一個問題:如果標準正態分佈的方差的自舉置信區間不足,您認為卡方均分佈均值的自舉置信區間會如何?
傑夫,
謝謝回复。
下面的日誌轉儲
*:
交互式HTML:不支持的顯示類型:LayoutAtomBox
交互式HTML:控件不是交互式的。
交互式HTML:不支持的顯示類型:LayoutAtomBox
交互式HTML:內部操作不支持交互式圖形。
交互式HTML:此平台中的嵌入式分析器不是交互式的。
交互式HTML:不支持的顯示類型:LayoutAtomBox
交互式HTML:此平台中的嵌入式分析器不是交互式的。
交互式HTML:不支持的顯示類型:ScrollBox
交互式HTML:不支持的顯示類型:ScriptBox
交互式HTML:控件不是交互式的。
出乎意料的“)”。也許有一個缺失的“;”要么 ”,”。
第19行第5欄:] \“)►);
剩下的文字被忽略了
); b_basic = rconn <<獲取(b.basic); b_normal = rconn <<獲取(b.normal); b_percent = rconn <<獲取
(b.percent); b_bca = rconn <<獲取(b.bca); rconn <<斷開();
輸入的腳本:
rconn = R Connect();
rconn <<提交(“\ [
庫(引導)
#加載Boot包
庫(引導)
RStatFctn < - function(x,d){return(mean(x))}
b.basic = matrix(data = NA,nrow = 1000,ncol = 2)
b.normal = matrix(data = NA,nrow = 1000,ncol = 2)
b.percent = matrix(data = NA,nrow = 1000,ncol = 2)
b.bca = matrix(data = NA,nrow = 1000,ncol = 2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b < - boot(rnormdat,RStatFctn,R = 1000)
b.ci = boot.ci(b,conf = 095,type = c(“basic”,“norm”,“perc”,“bca”))b.basic [i,] = b.ci $ basic [,4:5]
b .normal [i,] = b.ci $ normal [,2:3]
b.percent [i,] = b.ci $百分比[,4:5]
b.bca [i,] = b.ci $ bca [,4:5]
}
] \“));
b_basic = rconn << Get(b.basic);
b_normal = rconn <<獲取(b.normal);
b_percent = rconn <<獲取(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();
腳本解析:
rconn = R Connect();
rconn <<提交(
“
庫(引導)
#加載Boot包
庫(引導)
RStatFctn < - function(x,d){return(mean(x))}
b.basic = matrix(data = NA,nrow = 1000,ncol = 2)
b.normal = matrix(data = NA,nrow = 1000,ncol = 2)
b.percent = matrix(data = NA,nrow = 1000,ncol = 2)
b.bca = matrix(data = NA,nrow = 1000,ncol = 2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b < - boot(rnormdat,RStatFctn,R = 1000)
b.ci = boot.ci(b,conf = 095,type = c(\!“basic \!”,\!“norm \!”,\!“perc \!”,\!“bca \!”) )b.basic [i,] = b.ci $ basic [,4:5]
b .normal [i,] = b.ci $ normal [,2:3]
b.percent [i,] = b.ci $百分比[,4:5]
b.bca [i,] = b.ci $ bca [,4:5]
}
“
);
//:* /
rconn = R Connect();
rconn <<提交(“\ [
庫(引導)
#加載Boot包
庫(引導)
RStatFctn < - function(x,d){return(mean(x))}
b.basic = matrix(data = NA,nrow = 1000,ncol = 2)
b.normal = matrix(data = NA,nrow = 1000,ncol = 2)
b.percent = matrix(data = NA,nrow = 1000,ncol = 2)
b.bca = matrix(data = NA,nrow = 1000,ncol = 2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b < - boot(rnormdat,RStatFctn,R = 1000)
b.ci = boot.ci(b,conf = 095,type = c(“basic”,“norm”,“perc”,“bca”))b.basic [i,] = b.ci $ basic [,4:5]
b .normal [i,] = b.ci $ normal [,2:3]
b.percent [i,] = b.ci $百分比[,4:5]
b.bca [i,] = b.ci $ bca [,4:5]
}
] \“));
b_basic = rconn << Get(b.basic);
b_normal = rconn <<獲取(b.normal);
b_percent = rconn <<獲取(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();
/ *:
出乎意料的“)”。也許有一個缺失的“;”要么 ”,”。
第19行第5欄:] \“)►);
剩下的文字被忽略了
); b_basic = rconn <<獲取(b.basic); b_normal = rconn <<獲取(b.normal); b_percent = rconn <<獲取
(b.percent); b_bca = rconn <<獲取(b.bca); rconn <<斷開();
TKIntRJMP.R 5.05版
錯誤:意外的符號:
錯誤:“b < - boot(rnormdat,RStatFctn,R = 1000)
錯誤:b.ci = boot.ci(b,conf = 095,type = c(“basic”,“norm”,“perc”,“bca”))b.basic“
TKIntRJMP.R 5.05版
錯誤:意外的符號:
錯誤:“b < - boot(rnormdat,RStatFctn,R = 1000)
錯誤:b.ci = boot.ci(b,conf = 095,type = c(“basic”,“norm”,“perc”,“bca”))b.basic“
我剛剛運行了上面的腳本,JSL編輯器在第19行標記了一個額外的右側parantheses。
之後能夠保存並運行腳本,但輸出為零。
沒有圖表,沒有圖表,沒有。 數據表仍然是空的。
我究竟做錯了什麼?我錯過了什麼?
rconn = R Connect();
rconn << Submit("\[
library(boot)
# Load Boot package
library(boot)
RStatFctn <- function(x,d) {return(mean(x))}
b.basic = matrix(data=NA, nrow=1000, ncol=2)
b.normal = matrix(data=NA, nrow=1000, ncol=2)
b.percent =matrix(data=NA, nrow=1000, ncol=2)
b.bca =matrix(data=NA, nrow=1000, ncol=2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b <- boot(rnormdat, RStatFctn, R = 1000)
b.ci=boot.ci(b, conf =095,type=c("basic","norm","perc","bca")) b.basic[i,] = b.ci$basic[,4:5]
b.normal[i,] = b.ci$normal[,2:3]
b.percent[i,] = b.ci$percent[,4:5]
b.bca[i,] = b.ci$bca[,4:5]
}
]\");
b_basic= rconn << Get(b.basic);
b_normal = rconn << Get(b.normal);
b_percent= rconn << Get(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();喬瓦尼中寫道:
我嘗試在JMP中使用R並且它工作得很好。我有一個問題。我一直在嘗試將從R返回的圖形的大小更改為JMP並且無法執行此操作。是否有任何參數或選項可用於更改導入圖形的大小。我可以在R中更改它,但它總是在JMP中導入相同的大小。感謝任何幫助!!
女士中寫道:
確實令人興奮的消息!我使用JMP(Mac OS X)作為我的大多數數據管理和分析需求的集線器,R集成將進一步增加該份額。請告訴我,僅在Windows版本中找不到此內容。
易卜拉欣中寫道:
我試過了,這很棒,但僅限於單變量分析!請問您可以將其擴展或開發為雙變量和多變量平台嗎?這將使其能夠應用於一系列測試/分析。此外,包裝欄中沒有稅欄和幫助按鈕。我正在使用JMP9。謝謝