
R言語の「MASS」パッケージのサンプル・データ・セットを巡回中。今回はガラスの分析です、警察の鑑識的な。ガラスの小片が窓ガラスの破片なのか、ビンのかけらなのか、ヘッドライトのものなのか判別したりする目的に使うもんだと思います。しかしその裏に「20世紀の大発明」が隠れていた。知らなかったお惚け老人はガラスの素人だよ。
※「データのお砂場」投稿順Indexはこちら
Measurements of Forensic Glass Fragments
今回のMASSパッケージのサンプル・データ・セットは fgl です。解説ページが以下に。
https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/fgl.html
ガラスの小片について6つの「タイプ」に分類したものに、9つの変数(分析)が列挙されているデータベースです。タイプは以下の6つのカテゴリカル変数。
-
- フロートガラス(WinF)
- 非フロートガラス(WinNF)
- 自動車用窓ガラス(Veh)
- 容器(Con)
- 食器(Tab)
- 自動車用ヘッドランプ(Head)
そして分析データは、屈折率RIと以下8種元素の酸化物の重量パーセントです。
-
- Na ナトリウム
- Mg マンガン
- Al アルミニウム
- Si シリコン
- K カリウム
- Ca カルシウム
- Ba バリウム
- Fe 鉄
なお、屈折率は省略表記?になっていて、ガラスの屈折率を1.518xxxxとなる基準値に対する小数点以下4桁目のプラマイ部分だけ記すような形になっているみたい。よってRIみると負の値など書いてあり、一瞬、光学迷彩?(メタマテリアル)かと一瞬戸惑いますが、そんなことはありません。フツーのガラスです。
どうもこのデータセットは、ガラスの成分分析からタイプを推定するための機械学習などの練習用のデータみたいです。深みにハマるといろいろできそうだけれども、ワタシャやらんよ、今回「も」。
フロートガラス
ガラス素人のお惚け老人は「フロートガラス」知りませんでした。今、普通に使われている窓ガラスや建築用資材のガラスは皆これみたい。「AGC株式会社」様の以下のページを拝見するとよーく理解できます。
34. フロート板ガラスのこと-1 ~浮かべてつくるフロート板ガラス~
AGC様によると、『ピルキントン・ブラザーズ社による20世紀の大発明』だそうです。半導体業界的にいうと「プレーナ・プロセス」的な意義のある大発明じゃないかと思います(勝手な意見です。)これなしには業界は成立せんな。
先ずは生データ
生データを眺めるだけなら簡単。こんな感じ。赤枠つけた部分が分類「結果」になるtypeです。
とりあえず boxplot
各元素(実際には酸化物の重量パーセント)毎のboxplotの描画シーケンスが以下に。
par(mfrow=c(4,2)) boxplot(Na ~ type, data = fgl, main = "Na by Glass Type", col = "lightblue") boxplot(Mg ~ type, data = fgl, main = "Mg by Glass Type", col = "orange") boxplot(Al ~ type, data = fgl, main = "Al by Glass Type", col = "aquamarine") boxplot(Si ~ type, data = fgl, main = "Si by Glass Type", col = "deeppink") boxplot(K ~ type, data = fgl, main = "K by Glass Type", col = "blue") boxplot(Ca ~ type, data = fgl, main = "Ca by Glass Type", col = "red") boxplot(Ba ~ type, data = fgl, main = "Ba by Glass Type", col = "forestgreen") boxplot(Fe ~ type, data = fgl, main = "Fe by Glass Type", col = "brown1")
typeによって、識別に使えそうな元素もあれば、重なっていて微妙なものもあり。どうすんだ。
また、RIのboxplotは以下で。
boxplot(RI ~ type, data = fgl, main = "RI Distribution by Glass Type", col = "lightgreen")
線形判別分析(LDA)
困ったときの生成AIだのみ。Gemini様にお聞きした線形判別分析(LDA)、とりあえずtypeを他の全変数で予測するものが以下に。
fgl_lda <- lda(type ~ ., data = fgl) plot(fgl_lda, col = as.numeric(fgl$type))
5つの軸でいろいろ「わけて」くれてるけど、結構重なっていてビミョー。線形ではスッパリした分類はムツカシーのか?
なお、Gemini様によると、RIとCaの間には相関があるみたい。そのときの散布図の描画は以下で。
plot(fgl$Ca, fgl$RI, main="Correlation between Ca and RI", xlab="Calcium (Ca)", ylab="Refractive Index (RI)", col="blue")
確かに、Caが濃ゆい方が屈折率は大きいように見えますな。知らんけど。



