データのお砂場(214) R言語、cement、セメントの成分配合割合と発熱量 {MASS}

Joseph Halfmoon

土木は門外漢なのであります。しかし過去の僅かな体験に今だロマンの残り火を感じているお惚け老人デス。今回のサンプルデータセットは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様にコンクリートの成分と発熱について調べてもらいましたぞ。geminiCement1

「ポルトランド」セメントと言われて、なんじゃそれと思ってはなりませぬ。いわゆるフツーに手にはいるセメントは皆これっす。大英帝国にて発明の、今も現代文明を支えている逸品。コンクリート工学では、その成分について「エーライト」「ビーライト」みたいな独特のネーミングと略記号をお使いみたい。どうもプロはそれで分かりあえるのだと。

上記の奴らを水と混ぜ合わせると水和反応を起こして固まります。そのときに結構膨大な熱が出るみたい。ただし、鉱物により熱の発生と最終的な強度への貢献についてはいろいろあり~の。geminiCement2

Gemini様によるとクリンカー鉱物の成分と発熱の関係は以下の如し。geminiCement3

セメントと言っても、いろいろ種類はあるのでおまとめしてもらうとこんな感じ。geminiCement4

お惚け老人は、マスコンクリート用の水分量を反応に必要な最小限に抑えた、硬くて扱い難いやつ、好物っす。お水じゃばじゃばですっと入っていくような手抜きなやつはダメよ。コンクリート・バイブレータの「プーオー」という雄たけびが懐かしいっす。なお、バイブレータは強烈なノイズ源デス。やわな電子回路は直ぐにノイズに影響うけてしまうっと。ホントか?

さて今回のサンプルデータセットは、

    • セメントの成分4種の配合割合
    • 単位重量あたりの発熱量

を列挙したものです。本来的にはこれと「実現される強度」「設計強度に達するまでの硬化時間」など諸元を検討するのだと思いますが、今回のデータベースは発熱量だけ。また、成分についてはx1からx4と具体名は与えられてません。ちょっと残念。

まずは生データ

生データをロードして、眺めたところが以下に。rawdataCement

 

こんだけのデータに、ついついロマンを感じてしまう素人老人はヤバイよ。

成分毎のプロット

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])

上記の処理結果のプロットが以下に。cementPlot

それぞれのグラフに、回帰直線も書き入れました。どれも発熱反応の筈ですが、発熱が小さめの成分についてみれば、その成分を多めに含むということは発熱が多めの成分が少ないということになるので、回帰直線が右肩下がりになる、と推測してます。一方、発熱が多めの成分の場合は当然のごとく回帰直線は右肩あがりね。

回帰直線の勾配と配合割合を観察させていただくと、どれが何だか分かるような気がしないでもないのですが、まあ素人老人が勝手なことを言うのは差し控えさせていただきますです。

処理例

解説ページの末尾に処理例あり。たったの1行。それを以下のようにして実行してみました。

cement.lm <- lm(y ~ x1 + x2 + x3 + x4, cement)
summary(cement.lm)

結果が以下に。lm1234

4成分もあるとなかなか一筋縄ではイカンのう。分かりやすいのはx1くらい?。

そういえばといって思い出した「現場」へ向かう車の中。おじさんが電話でコンクリートの「トン単価」の相談をしてました。「トン」なんだからそんな細かい数字にこだわるの?と素人考え。お電話終わった後で「今日は何トンくらい打設するのですか?」と聞いてみた。「x千トン」とのお答え。これがこの先何か月も続くのね。確かに細かい数字にまで拘らないとイケナイわ。土木系は電子系とは単位が違うぜ。

データのお砂場(213) R言語、cats、雄猫と雌猫の心臓重量と体重 {MASS} へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です