データのお砂場(64) R言語、morley、実際はMichelson、光速の測定

Joseph Halfmoon

「マイケルソンとモーリー」と名が印象深いのでついサンプルデータセット名を morley としてしまったらしいです。お二人は協力していたけれど、このデータについてはMichelson先生単独のものみたい。それに現代からすると「光速を測った」ことが前面に出ているけれど、当時としては「エーテルの存在」を証明したかった?

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

R言語付属のデータセットをアルファベット順(大文字優先)で眺めてます。今回のデータセットは morley です。解説ページが以下に。

Michelson Speed of Light Data

19世紀末にMichelson先生とMorley先生が「光速を精密に測定した」という件、物理なのか科学史なのかで教わって記憶の奥底に残ってますな。どうも、このデータセットを編纂した方もそれに引きずられたみたいっす。データセット名は morley ですが、上記の解説ページによるとこのデータには Morley先生は関係ないみたい。

それに時代背景としては、「光速を精密に測る」というのは「光の伝播の媒体としてのエーテル」の存在を実験的に確かめるため、だったみたいであります。

現代人は「エーテル」など存在しないことを知っている、あるいは、はなからエーテルという概念が19世紀の大問題であったことなど知らないので気にならないだけ?

するとこのデータを処理した結果で「帰無仮説が棄却できる」ということは、エーテルは存在しないという「帰無仮説」が棄却できるということかも知れまへん。実験の条件など一切書いてないので知らんけど。さらに言えば、もっと精度のよい測定をせねば、とMichelson先生がお感じになったデータなのかも知れませんで。

エーテルの存在は否定されたですが、現代にもマイケルソン干渉計の末裔技術は、重力波の測定のためにしっかり使われておるらしいです。偉大なるかな。

まずは生データ

以下のようにフツーのデータフレームで、3列からなります。すべて値は整数です。MorleyRawdata

Exptは、1から5の値をとり、それぞれ独立した実験の番号らしいです。想像するに、装置の方向が異なる(エーテルの流れに対して装置が動く方向が異なる)とか、時間が異なる(地球自転により対エーテル速度異なる)、季節が異なる(地球の公転方向がエーテルに対して異なる)などの実験条件の違いなのか、それとも実験設備の設定の違いなのか。詳細は何も書いてないっす。

Runは、各実験の中の20回の測定回毎につけられた番号。

Speedは光速[km/s]、ただし測定した値から定数299000km/sを差っ引いた余りみたいです。光速度そのものの絶対値はいいから、対エーテル速度の差(地球の公転速度など考えれば数十km/sくらいの差がでるはず)がみたいのだ、という意図を感じる設定であります。

解説ページの処理例に従う

今回は解説ページに処理例があったので、それをそのまま使わせていただきます。まず、元のデータ・フレーム morley を michelsonという名に置き換えてます。ただお名前を変えただけでなく、整数で記載されていた Expt と Run をfactor(因子)に変更してます。そこの列の数字に大小関係などないし。MorleyEx0

そして解説ページでは次に xtabs で多元分割表にしてみていることです。これってちゃんとデータが綺麗に並んでいることを確認しているだけなの?R言語素人にはちょっと謎です。このテーブルを後で使うことはありません。MorleyEx1

さて、処理例では、上記の michelson データを箱ひげ図にしてます。オペレーションが以下に。MorleyEx2Opr

グラフが以下に。

MorleyEx2Plot

結構測定がばらついているので「各測定の平均値に実は差が無い」ような気がしないでもないし、いやいや「実験毎に平均値の差がある」ようにも見えます、統計素人には。

ggplot2とggthemesでお化粧

上記の箱ひげ図でも十分なのですが、ちとお化粧してみます。そのついでに光速の値 -299000km/sしているのは「対エーテル速度」考えるならばよいのでしょうが、現代人にはわかりずらいので+299000して光速そのものにしてみてます。

library(ggplot2)
library(ggthemes)
michelson2 <- michelson
michelson2$Speed <- michelson$speed + 299000
p<-ggplot(michelson2, aes(x=Expt, y=Speed))+geom_boxplot()
p + labs(title="Michelson2") + theme_economist()
p + labs(title="Michelson2") + ylab("light Speed[km/s]") + theme_economist()

プロットが以下に。ちなみにテーマは「エコノミスト誌」風。

Michelson2Plot

現代人は、より正確な光速(299792km/s)を知っているので上記の測定は「ちょっと」上ブレ気味であることを知ってますな。多分測定方法に上目にでる原因があったのでないかと。でも19世紀だからなあ。すごい。

処理例に戻って分散分析

処理例では箱ひげ図描いた後、分散分析してます。MorleyAov

統計素人が、分散分析を語るような無作法はいたしませぬ。以下のページなどご参照あれ。

Rと分散分析

上記解析結果の黄色いマーカ部分など拝見て、上記ページから引用させていただくに

「各水準の平均値が等しい」という仮説が棄却され、群間には差がある

といってよいのでは。ええと、つまり、実験により光速度の差はないという仮説が棄却されてしまった。このデータじゃエーテルは否定できんてことかい。

その後もさらに処理例では update関数と anova()で分散分析を続けてます。

MorleyAnova

統計素人にはよくわからんな。勉強しないと。

データのお砂場(63) R言語、lynx、カナダ・オオヤマネコの捕獲数の推移 へ戻る

データのお砂場(65) R言語、mtcars、50年前の自動車「ロードテスト」の結果 へ進む