[[20220806105054]] 『複数の閾値と交点の取得方法』(はらまき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数の閾値と交点の取得方法』(はらまき)

Excelのマクロ(VBA)に関する質問です。
XYグラフにプロットすると以下のリンクの図のようなcsvファイルを読み込みます。(点数は1000個ほどあります)
2つの極値を持つためそれぞれの山の高さ1/√2倍のところに閾値を設け、その境となる座標と極値の座標(図の緑、赤、オレンジの点)のみを取得しCSVファイルに出力したいのですが、どうすれば良いのか見当もつきません。
何かいいアイディアのある方は教えていただきたいです。
山の位置は移動することがあるので手動で区間を絞るのは無しでお願いします。
山の高さは変動し、大きさ左右が入れ替わることがあります。
紫の点線は0で値は基本的に全て負です。
よろしくお願いします。

https://imgur.com/a/cuS970E

< 使用 Excel:Office365、使用 OS:Windows10 >


 どんな回答がお望みなんでしょう?

 そういうプログラムを作成できる外注に出すのがいいと思いますよ
(´・ω・`) 2022/08/06(土) 13:12

ご返信ありがとうございます。
具体的なコードではなく、ざっくりどのような流れで動かせばよいかを教えていただきたいと考えております。
このような処理はExcelでは難しいでしょうか?
(はらまき) 2022/08/06(土) 17:23

URL 拝見しました。
それはピカソのの絵なんですか。
エクセルではできないです。
諦めましょう。

(何だか) 2022/08/06(土) 17:44


 >ざっくりどのような流れで動かせばよいか
 (1)CSV読み込む
 (2)極大値さがす
 (3)閾値決める
 (4)交点探す
 (5)CSV書き出す
 というながれでしょ?

 具体的には何ができていて、何ができなくて困っているのですか?
 Excelの使用方法に関する質問なのですよね?
(´・ω・`) 2022/08/06(土) 18:23

併せて、データの説明ももっとあったほうがよいでしょう。
ピカソの絵?では、4次曲線のように見えますが、
実際はギザギザになっているんですよね。
そのギザギザ度合いはどの程度のものですか?
つなげたら、ほぼ4次曲線と同じ感じなんですか?
それによっても極点の探し方なんかも変わってくるかもしれません。

できれば、(極点を含んだ)100個くらいの実データを20行5列くらいで示すと
閲覧者には実情がわかりやすいのではないかと思いますね。

(γ) 2022/08/06(土) 19:03


 追記しておきます。

 (1)極値の求め方
 >そのギザギザ度合いはどの程度のものですか?
 などと確認したのは、以下のような話があるからです。

 もし、減少→増加→減少→増加  と連続的に変化していくと分かっていれば、次のように求められます。
 ・前の点との差分を見て行って、
 ・符号が切り替わるところが極値などと決め打ちができます。
     ・つまり、例えば、減少が続いて、増加に転じるところが極小点になります。
     ・その後、増加が続いて、減少に転じるところが、中間にある極大点。
     ・さらに、減少が続いて、増加に転じるところが極小点になります。  

 細かく見ていくと、ランダムな変動があってそんな簡単なものではないのです、
 ということなら別のことを考えないといけません。
 例えば、スムージング処理(*)を施したうえで、上記の仮の極値点を探し、
 その前後一定の範囲に限定して、最大値、最小値を求めればよいでしょう。

 対象がなんらかの物理量の測定なら連続的に変異していくことが想定されますが、
 対象が何か、数値の特徴と言った説明がないのは説明不足でしょう。

 (*)スムージング
    例えば、対称点だけでなく、周囲の値の重み付き平均をとれば、スムージングができます。
    その点と周囲の点とのx軸距離に対応する「平均0、標準偏差σの正規分布の確率密度」を
    重みにすることが考えられます。近いところはウエイト高く、離れればウエイトを下げるわけです。
    σ値を色々変えることでウエイトを簡単に変更できます。

 (2) L/sqrt(2) 点の求め方  
    もともとのポイントの中の点ということであれば、
    ・xの開始点から最初の極小点 という範囲で、y値と求める値との差が最小になる点を求めるだけです。
    ・あとの点も同様に範囲を限定して調べれば事足ります。
    1000個もあれば、連続値と見なしても問題ないでしょう。
    より正確にということなら、直線補間ないし、さらには別の補間をすることも必要であればできるでしょう。

(γ) 2022/08/08(月) 10:59


 さらに追記です。

 smoothingの話をごてごて書いてしまいましたが、
 Excelにある近似曲線機能(4次多項式)を使えばよいだけでした。

 散布図を書いて、その4次近似曲線を書いて、その数式も表示してそれを利用して近似値y'を求めます。
 これはたぶん、減→増→減→増 となるでしょうから、簡単に極値をとる位置が推定できます。
 その前後一定幅を対象にして元数値の最大、最小を求めれば正確な極値が判明します。

 (kernel density estimation の話を読んだあとだったので、ついつい話を広げてしまいました。どうも失礼。)

(γ) 2022/08/08(月) 18:18


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.