RにJMP!今週は、SASユーザーグループミーティングの35周年を祝います。 SGF 2010 (以前はSUGIと呼ばれていました)。SASは、1975年の最初の5人のユーザーの会議以来、驚異的な成長と成功を収めてきました。この期間にわたって、私たちは現代の統計学の分野、特にコンピュータ集約的な方法の使用において大きな進歩を見ました。SASとほぼ同時期に発生した主要な方法の1つがブートストラップです(Efron、1979)。このような基本的なブートストラップメソッドウィキペディアからのブートストラップ・ページ説明します、興味のある統計量の経験的な標本分布を形成するために置換でデータを再標本化することによって働きます。SASのように、ブートストラップは統計的推論のための注目すべきツールとなっています。この方法に関するエフロンの研究だけで3万回以上引用されています。
10年の早送りジョン・ソール (SASの共同創設者の一人)そして少数の開発者グループが1989年にJMPに取り組み始めました。多くのSAS製品と同様に、 JMP 進化し続け、世界中で人気が高まっています。ほんの数年後、Ross IhakaとRobert Gentlemanが、以前に使用されていたSおよびS +言語に基づいた構文で、現在広く使用されているオープンソースの統計言語Rを開始しました。
SASグローバルフォーラムは、当社のユーザーがSAS製品をどのように採用しているか、および今後開催されるSASソフトウェアにおける最新および最大の進歩について学ぶ機会を得る機会です。私がその一員であることを誇りに思っているJMP 9(2010年の秋にリリース)のためのそのような発表の1つは JMPとRの新しい統合機能 。ブートストラップ信頼区間シミュレーションの例の中で、統合の基本要素を示したいと思います。
JMPはRを素晴らしい補完するものです。Rとの統合は、デスクトップ上のRのインストールに接続したり、Rとの間でデータを送受信したり、Rパッケージを通じて利用可能なRルーチンをサブミットすることを可能にするいくつかの新しいJSLコマンドで実現します。JMPダイアログはフロントエンドとしてRへのパラメータ入力用に簡単に構築できます。さらに重要なことには、JMPの対話型および動的統計プラットフォームとグラフィックスはR機能への完璧なバックエンドを実現します。以下のダイアログは、Rに接続して特定の分布のデータを作成し、いくつかの一般的な統計についてブートストラップ信頼区間の範囲をテストするためのシミュレーションを実行するアプリケーションです。
そのようなシミュレーションがなぜ面白いのか、あるいは関連性があるのかを自問することができます。ブートストラップ法(およびブートストラップ信頼区間)は、統計量の分布がよく知られていない場合は特に、統計量の特性を推定するために今日広く使用されています。しかし、その分布が偏っていたり、偏っていたりすると(分散の分布など)、統計に対するブートストラップ信頼区間は不正確になる可能性があります。このアプリケーションを使用すると、最も一般的な分布と統計について、ブートストラップ信頼区間の範囲をすばやく簡単に評価できます。
以下の出力は、標準正規分布(1の分散で0の平均)のブートストラップ平均(1000回の複製)の95%信頼区間に対するシミュレーション(1000回の実行)の結果を示しています。Rパッケージの "boot"がロードされ、そして boot.ci()関数いくつかの異なる方法でブートストラップ間隔を計算します。JMPのDistributionおよびGraph Builderプラットフォームを使用して、Basic、Normal、Percentile、およびBCa法を使用した95%ブートストラップ信頼区間は、正確な平均(信頼区間に0が含まれる場合はCoverage列の値は1に等しい)レベル1のProbエントリは経験的な範囲に対応します。Graph Builderの出力は、信頼区間の幅がメソッド内とメソッド間でほぼ同じであることを示しています。

上記のシナリオでブートストラップを実行するために使用した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」に割り当てると、コードはSubmit()コマンドを介してRコードを送信し、ブートストラップ信頼区間を含むR行列を取得するためにJSLスクリプト可能オブジェクト「rconn」にメッセージを送信します。Get()コマンドを介して戻ります。
それでは、標準正規分布の分散に対してブートストラップ信頼区間の範囲をテストしたときに何が起こるかを見てみましょう。ダイアログで、Target Valueを1に変更し、計算するブートストラップ統計としてVarianceを選択してRun Simulationをクリックすると、以下の結果が得られます。この場合、ブートストラップされた統計量分布の偏りと偏りに対抗するために特に提案されたバイアス補正と加速(BCa)法を含む4つの方法すべてが、分散の真の値を覆い隠します(Efron 1987)。
JMP 9の新機能により、基本ブートストラップ信頼区間内の目標値をカバーできない信頼区間(基本カバレッジ分布の下の "0"ヒストグラムバーを選択)を確認するのが非常に簡単であることに注意してください。選択されていません。Basicメソッドで失敗した区間が他のメソッドでどのように機能するかもわかります。Data Filterなどの他の標準JMPツールは、Rでは簡単かつ迅速には実行できない方法でこれらの結果を調査するのに役立ちます。同様に、メソッド間のカバレッジの比較は、Vennを作成するカスタムJSLグラフィックススクリプトで簡単に確認できます。区間にtrueパラメータが含まれていたときのカウントを示す図 JMPファイル交換とで JMPゲノミクス )
このアプリケーションは、あなたが一緒にJMPとRで何ができるかについてのちょうど味を示します。小さなJSLと、JMPの統計およびグラフィックスプラットフォームと、Rの幅広いパッケージと関数を組み合わせることで、統計分析用の完全で使いやすいアプリケーションを構築できます。
JMPはSASと統合することもできます。これにより、ファイルベースのシステムを介して大規模データを処理する機能、およびSASプロシージャーの深さと高度な機能が追加されます。これらのシームレスな統合により、JMPはSASとRの両方に接続し、JMPプロファイラーなどの独自の統計機能やGraph Builderなどの対話型グラフィック機能を提供するハブになります。これを使ってできることの可能性は無限大です!
SAS、JMP、R、および統計計算の分野は、過去35年間で大きな進歩を遂げました。私たちはあなたが分析を柔軟性、スタイル、そして容易さで達成することを可能にするソフトウェアツールを提供し続けるので、私はこの会社とこの業界の一部であることに興奮しています!
JMP 9が正式にリリースされたら、ブートストラップシミュレーションなどのスクリプトをJMP File Exchangeに置きます。
標準の正規分布の分散に対するブートストラップ信頼区間がカバーされていない場合、カイ二乗分布の平均のブートストラップ信頼区間はどのように動作すると思いますか。
日時:RにJMP!ジェフ、
返信いただきありがとうございます。
以下のログダンプ
*:
インタラクティブHTML:サポートされていない表示タイプ:LayoutAtomBox
インタラクティブHTML:コントロールはインタラクティブではありません。
インタラクティブHTML:サポートされていない表示タイプ:LayoutAtomBox
インタラクティブHTML:内部操作はインタラクティブグラフをサポートしません。
インタラクティブHTML:このプラットフォームの埋め込みプロファイラはインタラクティブではありません。
インタラクティブHTML:サポートされていない表示タイプ:LayoutAtomBox
インタラクティブHTML:このプラットフォームの埋め込みプロファイラはインタラクティブではありません。
インタラクティブHTML:サポートされていない表示タイプ:ScrollBox
インタラクティブHTML:サポートされていない表示タイプ:ScriptBox
インタラクティブHTML:コントロールはインタラクティブではありません。
予期しない ")"。おそらく欠けている ";"があります。または「、」。
行19列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();
入力したスクリプト:
rconn = R Connect();
rconn <<送信( "\ [
ライブラリ(ブート)
#ブートパッケージをロードする
ライブラリ(ブート)
RStatFctn < - 関数(x、d){return(mean(x))}
b。基本=行列(データ= NA、nrow = 1000、ncol = 2)
b。正規=行列(データ= NA、nrow = 1000、ncol = 2)
b。パーセント=行列(データ= NA、nrow = 1000、ncol = 2)
b.bca =行列(データ= NA、nrow = 1000、ncol = 2)
for(i:1:1000){
rnormdat = rnorm(30,0,1)
b < - boot(rnormdat、RStatFctn、R = 1000)
b.ci = boot.ci(b、conf = 095、タイプ= c( "basic"、"norm"、"perc"、"bca")) 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 << Get(b.normal);
b_percent = rconn << Get(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();
解析したスクリプト:
rconn = R Connect();
rconn <<送信する(
「
ライブラリ(ブート)
#ブートパッケージをロードする
ライブラリ(ブート)
RStatFctn < - 関数(x、d){return(mean(x))}
b。基本=行列(データ= NA、nrow = 1000、ncol = 2)
b。正規=行列(データ= NA、nrow = 1000、ncol = 2)
b。パーセント=行列(データ= NA、nrow = 1000、ncol = 2)
b.bca =行列(データ= NA、nrow = 1000、ncol = 2)
for(i: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 <<送信( "\ [
ライブラリ(ブート)
#ブートパッケージをロードする
ライブラリ(ブート)
RStatFctn < - 関数(x、d){return(mean(x))}
b。基本=行列(データ= NA、nrow = 1000、ncol = 2)
b。正規=行列(データ= NA、nrow = 1000、ncol = 2)
b。パーセント=行列(データ= NA、nrow = 1000、ncol = 2)
b.bca =行列(データ= NA、nrow = 1000、ncol = 2)
for(i:1:1000){
rnormdat = rnorm(30,0,1)
b < - boot(rnormdat、RStatFctn、R = 1000)
b.ci = boot.ci(b、conf = 095、タイプ= 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 << Get(b.normal);
b_percent = rconn << Get(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();
/ *:
予期しない ")"。おそらく欠けている ";"があります。または「、」。
行19列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();
TKIntRJMP.Rバージョン5.05
エラー:に予期しない記号があります
エラー: "b < - boot(rnormdat、RStatFctn、R = 1000)
エラー:b.ci = boot.ci(b、conf = 095、タイプ= c( "basic"、"norm"、"perc"、"bca"))b.basic "
TKIntRJMP.Rバージョン5.05
エラー:に予期しない記号があります
エラー: "b < - boot(rnormdat、RStatFctn、R = 1000)
エラー:b.ci = boot.ci(b、conf = 095、タイプ= c( "basic"、"norm"、"perc"、"bca"))b.basic "
日時:RにJMP!にエラーはありますか JMPログウィンドウ ?


日時:RにJMP!上記のスクリプトを実行したところ、19行目で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();Giovanniは、次のように書いています:私はJMPでRを使ってみましたが、うまくいっています...ジョバンニ書きました:
私はJMPでRを使ってみましたが、それはとてもうまくいっています。1つ問題があります。Rから返されたグラフィックのサイズをJMPに変更しようとしましたが、できませんでした。インポートしたグラフのサイズを変更するためにIIが使用できるパラメータやオプションはありますか。私はそれをRで変更することができますが、JMPでは常に同じサイズでインポートします。どんな助けでも感謝します!!
MSは書いた:確かにエキサイティングなニュース!私はfとしてJMP(Mac OS X)を使用しています...ミズ書きました:
エキサイティングなニュースは本当に!私はデータ管理と分析のニーズの大部分のためのハブとしてJMP(Mac OS X)を使用しています、そしてR統合はさらにそのシェアを増やすでしょう。これはWindows版だけでは見られないことを教えてください。
Kelci Miclausは書きました:はい!これはMで利用できるようになります...ケルチ・ミクラウス書きました:
はい!これはJMP 9がリリースされたときにMacでも利用可能になるでしょう。
イブラヒムは書きました:私はそれを試みました、そして、それは素晴らしかったです、しかし限られた…イブラヒム書きました:
私はそれを試してみました、そしてそれは素晴らしかったです、しかし、単変量解析に限られています!二変量および多変量プラットフォームに拡張または開発してください。これにより、さまざまなテスト/分析への応用が可能になります。税金バーとヘルプボタンもボックスにはありません。私はJMP9を使っています。ありがとう