こんにちは、ヒガシです。
このページでは3次曲線の近似式および式内の4つの係数を導出する方法をご紹介していきます。
手作業でやろうとすると、
①データから散布図グラフを作成
②近似曲線の追加
③多項式近似を選択
④グラフに数式を表示
といった面倒な作業を行う必要がありますが、今回紹介するVBAコードを使えば一発でこの作業を実施することが可能です。
応用すれば、4次、5次曲線も作成可能です。
それではさっそくやっていきましょう!
※2次曲線の近似式を導出したい場合は以下でご紹介していますので、参考にしてみてください。
【エクセルVBA】データから2次の多項近似式を取得する方法!
3次曲線の近似式を取得する流れ
実際の作業に入る前にまずはどのような作業で式を取り出すかを解説しておきます。
①データが存在する領域を指定する
②①の領域を参照した散布図を作成する
③②のグラフに3次の近似式を追加する
④③で作った数式を文字列として取り出す
⇒これで数式全体としては取得完了
⑤④の文字列を分解して各係数を取り出す
冒頭で紹介した手作業で実施している作業そのものですね。
今回紹介する手法では、①の領域指定さえしてしまえば残りの作業は全部自動でやってくれるようになっています。
3次の多項近似式を取得するサンプルコード
それでは先ほど紹介した内容を実施してくれるサンプルコードをご紹介していきます。
Sub tertiary_formula()
'変数の型を宣言
Dim x_ax As String, y_ax As String
Dim grf_formula As String
Dim a As Single, b As Single, c As Single, d As Single
'データ範囲を指定する(あなたがやるのはここだけ)
x_ax = "A2:A11"
y_ax = "B2:B11"
'グラフ(散布図)を挿入する
ActiveSheet.Shapes.AddChart2(-1, -4169).Select
With ActiveChart
'指定したデータでグラフ作成
.Parent.Name = "sample_grf"
.SeriesCollection.NewSeries
With .FullSeriesCollection(1)
.XValues = ActiveSheet.Name & "!" & x_ax
.Values = ActiveSheet.Name & "!" & y_ax
End With
End With
'グラフに近似曲線を追加する
With ActiveChart.SeriesCollection(1)
.Trendlines.Add
.Trendlines(1).Select
End With
'近似曲線の種類を指定する
With Selection
.Type = xlPolynomial
.Order = 3
End With
Selection.DisplayEquation = True
'近似曲線の式の桁数を指定する
ActiveSheet.ChartObjects("sample_grf").Activate
With ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel
.NumberFormat = "#,##0.000000_ "
End With
'グラフの近似式をリフレッシュ
ActiveSheet.ChartObjects("sample_grf").Activate
ActiveChart.Refresh
'グラフの近似式を取得する
With ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel
grf_formula = .Text
End With
ActiveSheet.ChartObjects("sample_grf").Delete
split_formula = Split(grf_formula, " ")
a = split_formula(2)
b = split_formula(4) & split_formula(5)
c = split_formula(7) & split_formula(8)
d = split_formula(10) & split_formula(11)
'数式&係数をセルに書き出す
Cells(1, 4) = grf_formula
Cells(2, 4) = "a="
Cells(2, 5) = a
Cells(3, 4) = "b="
Cells(3, 5) = b
Cells(4, 4) = "c="
Cells(4, 5) = c
Cells(5, 4) = "d="
Cells(5, 5) = d
End Sub
あなたが指定するべきところは7,8行目のグラフ作成の際のX, Yの領域だけです。
あとは全自動で多項近似式がセル上に出力されます。
※出力する場所はあなたの状況にあわせて適宜変更してください。
サンプルコードの実行結果確認
それでは先ほどのコードを実行してみましょう。
実行する前はこのような状態です。
(ただデータが存在しているだけですね。)
それでは実行してみます。
問題なく結果が出力されていますね。
念のためグラフに近似式を追加して確認してみましょう。
完璧に数値が一致していますね!
おわりに
というわけで今回は、エクセルVBAをつかって3次の多項近似式およびその係数を一発算出する方法をご紹介しました。
データ分析の際にぜひご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント