データのお砂場(118) R言語、gravity、処理例豊富なセット、処理例1、{boot}

Joseph Halfmoon

Bootパッケージ中をABC順に巡回中。今回は地球の重力加速度の測定です。「とうとう出たね」というのもBootパッケージの場合、データセット毎には処理例の記載なく、処理関数毎に処理例が記載されているのですが、パッケージ内約40関数のうち10関数までがgravityを処理対象にした処理例を記載しているためです。人気者?

※「データのお砂場」投稿順Indexはこちら

gravity サンプルデータセット

今回のサンプルデータセットは、地球の重力加速度を測定したデータです。1930年代の測定データですが、百年近く前とはいえ、この手の物理実験は相当に精度よくできていたハズ。また測定したのは当時の米国立標準局、現在のNIST(National Institute of Standards and Technology)だそうです。

サンプルデータセットの解説ページが以下に

Acceleration Due to Gravity

該当するサンプルデータセットは以下の2つ存在します。

    • grav
    • gravity

測定は振り子を使って行ったようですが、測定の設定が微妙に異なる8通りで行われたみたいです。それらをシリーズと称しているのですが、gravityには全8通りのデータが含まれ、gravには最後の2通りのデータのみが含まれてます。今回行ってみた処理例をみるとgravityからseries 7, 8 のみ取り出してました。ということはgravでもgravityでも結果は同じってことかい。

このgravityを処理対象にした処理例を記載しているbootパッケージ内の関数を列挙すると以下のとおりです。

    1. abc.ci、 Nonparametric ABC Confidence Intervals
    2. boot、 Bootstrap Resampling
    3. boot.ci、 Nonparametric Bootstrap Confidence Intervals
    4. empinf、 Empirical Influence Values
    5. envelope、 Confidence Envelopes for Curves
    6. exp.tilt、 Exponential Tilting
    7. Imp.Estimates、 Importance Sampling Estimates
    8. plot.boot、 Plots of the Output of a Bootstrap Simulation
    9. smooth.f、 Smooth Distributions on Data Points
    10. tilt.boot、 Non-parametric Tilted Bootstrap

年寄には上記10個を一度に練習する気力も体力もないので、今回は、まずは「本流」2のbootと3のboot.ciをやってみたいと思います。

なお、重力加速度の測定値として記載されている数値は上記の解説ページの記述では980.000 cm/sからの偏差だみたいなことが書かれているのですが、cm毎秒毎秒としてもかなりデカイデータが記載されてます。100年前でもそんなに精度が悪かったとは思えません。980ではなく、900を基準として下2桁cm以下を記載と考えると腑に落ちるのですが。。。知らんけど。

boot.ci

bootやboot.ciについては、『ねこすたっと』様の以下のページが大変分かり易かったです(忘却力の年寄はもう忘れとるけど。。。)あざ~す。

ブートストラップ(bootstrap)法で信頼区間を求める(bootパッケージ)[R]

まずは生データ

生データは、grav、gravityとも単純なデータ・フレームです。gravityRawData

先ほど述べたように、gravはgravityのseries 7と8を取り出したデータのようです。ただし上記のsummaryではseriesを無視して平均求めているので今イチです。そこでシリーズ毎のデータの平均を求めておきました。こんな感じ。bySeriesAggregate

処理例2つ

boot関数およびboot.ci関数の両方に処理例が記載されておりますが、中身はクリソツ。差はこんな感じ。

    1. diff.means関数は全くおなじ
    2. boot関数を呼び出すときの引数は同じ、しかし微妙に文字表記(スペースなど)異なる。なお後で使うのでboot.ciの例では処理後変数へ代入
    3. boot.ciの処理例では、boot関数処理の後にboot.ci関数の適用がつづく

boot.ciの方にそってやっていけば、両方やったことになるかと。やりたいことは、シリーズ7と8で得られる平均値の差をbootでシミュレーションして、その信頼区間をboot.ciで求めたいということみたい。知らんけど。

まずはboot関数の適用。bootEx

strata = のところでシリーズ7とシリーズ8を層別して計算しているらしいことは分かるのだけれども、stype=”f”って何。frequenciesだと。なんじゃその指定は。元より統計もRも素人、とまどうこと頻りであります。

数字で眺めてもサッパリなのでグラフにしてもらいました。こんな感じ。plotBoot

 

上記を見ると、シリーズ7は約3[cm/s2、多分]弱くらい下目なデータに見えるってことかい?いいのかそういう理解で?

さてその95%信頼区間の計算が以下に。bootCiEx

ここでも student先生のお名前を冠したらしい「studentized」登場。もう一方のnormalは正規分布想定の場合らしいデス。

処理例は計算できるけれども、統計素人の老人にはなんやら難しくてよう分かりません。このデータに後8つも処理例があるのか。。。何をするのだ?

データのお砂場(117) R言語、frets、「ヤバイ」サンプルデータかも、{boot}へ戻る

データのお砂場(119) R言語、gravity、処理例豊富なセット、処理例2、{boot}へ進む