
土木は門外漢なのであります。しかし過去の僅かな体験に今だロマンの残り火を感じているお惚け老人デス。今回のサンプルデータセットはcementです。セメントは土木を支える材料の代表、火山の麓の砂防堰堤、高速鉄道の橋脚補強、谷を渡る高速道路の高い橋脚など、セメント使った工事が走馬灯の様に目に浮かびまする。感傷的だな、自分。
※「データのお砂場」投稿順Indexはこちら
Rのサンプルデータベースを経めぐっています。今回はMASSパッケージの中のcement という御名前のサンプルデータベースです。
Heat Evolved by Setting Cements
今回のサンプル・データ・セットについての解説ページが以下に。
https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/cement.html
コンクリートは、骨材(砕石や砂など)とセメントと水を混ぜて作るのは皆さんご存じかと思います。セメントは水と水和反応を起こし強固な構造を作ることで骨材を繋ぎとめ、必要な強度を確保してくれます。この水和反応は発熱反応であるので、コンクリートが固まるときには熱がでるっと。だだし、この熱がなかなか厄介もので、発熱と出来上がったコンクリートの強度の間にはなんだかんだあるみたいです。
元より素人、Googleの生成AI、Gemini様にコンクリートの成分と発熱について調べてもらいましたぞ。
「ポルトランド」セメントと言われて、なんじゃそれと思ってはなりませぬ。いわゆるフツーに手にはいるセメントは皆これっす。大英帝国にて発明の、今も現代文明を支えている逸品。コンクリート工学では、その成分について「エーライト」「ビーライト」みたいな独特のネーミングと略記号をお使いみたい。どうもプロはそれで分かりあえるのだと。
上記の奴らを水と混ぜ合わせると水和反応を起こして固まります。そのときに結構膨大な熱が出るみたい。ただし、鉱物により熱の発生と最終的な強度への貢献についてはいろいろあり~の。
Gemini様によるとクリンカー鉱物の成分と発熱の関係は以下の如し。
セメントと言っても、いろいろ種類はあるのでおまとめしてもらうとこんな感じ。
お惚け老人は、マスコンクリート用の水分量を反応に必要な最小限に抑えた、硬くて扱い難いやつ、好物っす。お水じゃばじゃばですっと入っていくような手抜きなやつはダメよ。コンクリート・バイブレータの「プーオー」という雄たけびが懐かしいっす。なお、バイブレータは強烈なノイズ源デス。やわな電子回路は直ぐにノイズに影響うけてしまうっと。ホントか?
さて今回のサンプルデータセットは、
-
- セメントの成分4種の配合割合
- 単位重量あたりの発熱量
を列挙したものです。本来的にはこれと「実現される強度」「設計強度に達するまでの硬化時間」など諸元を検討するのだと思いますが、今回のデータベースは発熱量だけ。また、成分についてはx1からx4と具体名は与えられてません。ちょっと残念。
まずは生データ
こんだけのデータに、ついついロマンを感じてしまう素人老人はヤバイよ。
成分毎のプロット
4成分あるので、各成分の配合量(%)と発熱量のプロットを行ってみました。1成分に着目しているので、着目成分以外の3成分の配合量はいろいろっす。コチラを増やせばアチラが減る?結構複雑な関係っす。
さてプロット操作は以下のようにしてみました。
cols <- c("salmon", "violet", "skyblue", "darkseagreen")
par(mfcol=c(2,2))
plot(y~x1, data=cement, ylim=c(70, 120), main = "x1の配合と発熱量", xlab = "x1[%]", ylab = "発熱量[cal/g]", pch=16, col = cols[1])
cement.x1.lm <- lm(y~x1, data=cement)
abline(cement.x1.lm, col=cols[1])
plot(y~x2, data=cement, ylim=c(70, 120), main = "x2の配合と発熱量", xlab = "x2[%]", ylab = "発熱量[cal/g]", pch=16, col = cols[2])
cement.x2.lm <- lm(y~x2, data=cement)
abline(cement.x2.lm, col=cols[2])
plot(y~x3, data=cement, ylim=c(70, 120), main = "x3の配合と発熱量", xlab = "x3[%]", ylab = "発熱量[cal/g]", pch=16, col = cols[3])
cement.x3.lm <- lm(y~x3, data=cement)
abline(cement.x3.lm, col=cols[3])
plot(y~x4, data=cement, ylim=c(70, 120), main = "x4の配合と発熱量", xlab = "x4[%]", ylab = "発熱量[cal/g]", pch=16, col = cols[4])
cement.x4.lm <- lm(y~x4, data=cement)
abline(cement.x4.lm, col=cols[4])
それぞれのグラフに、回帰直線も書き入れました。どれも発熱反応の筈ですが、発熱が小さめの成分についてみれば、その成分を多めに含むということは発熱が多めの成分が少ないということになるので、回帰直線が右肩下がりになる、と推測してます。一方、発熱が多めの成分の場合は当然のごとく回帰直線は右肩あがりね。
回帰直線の勾配と配合割合を観察させていただくと、どれが何だか分かるような気がしないでもないのですが、まあ素人老人が勝手なことを言うのは差し控えさせていただきますです。
処理例
解説ページの末尾に処理例あり。たったの1行。それを以下のようにして実行してみました。
cement.lm <- lm(y ~ x1 + x2 + x3 + x4, cement) summary(cement.lm)
4成分もあるとなかなか一筋縄ではイカンのう。分かりやすいのはx1くらい?。
そういえばといって思い出した「現場」へ向かう車の中。おじさんが電話でコンクリートの「トン単価」の相談をしてました。「トン」なんだからそんな細かい数字にこだわるの?と素人考え。お電話終わった後で「今日は何トンくらい打設するのですか?」と聞いてみた。「x千トン」とのお答え。これがこの先何か月も続くのね。確かに細かい数字にまで拘らないとイケナイわ。土木系は電子系とは単位が違うぜ。


