質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

800閲覧

グラフの作成の仕方と各々の点の傾きを数値化する時の操作に関して

kakini

総合スコア42

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/21 05:01

イメージ説明

画像はx軸が時間(1目盛り1時間)y軸が日本円です
x軸の範囲は200目盛り(200時間)固定
y軸の範囲はプログラムを使ってx軸の範囲内で出てくるy軸の最大値と最小値を元に
自動的に最大値と最小値が変えてるので一定ではありません

グラフ内に黒字で時刻と5桁の数字がありますがそれは無視してください

グラフの灰色線が各時間毎の日本円の値
赤線が灰色線の直近20個(20時間)分の移動平均(sma20と呼びます)
青線が灰色線の直近50個(50時間)分の移動平均(sma50と呼びます)
となっています
この時sma20かsma50の任意の点の直近5時間分から各々の傾きを度数に変換して求めたいのですが
自分は傾きを求める時
例えばsma20の12/9 10:00の点における直近5時間分の傾きを求める時、y軸の値をy = sma20[12/9 10:00]とした場合
三角関数のtanを求めて
(sma20[12/9 10:00] - sma[12/9 9:00] ) / 1
(sma20[12/9 10:00] - sma[12/9 8:00] ) / 2
(sma20[12/9 10:00] - sma[12/9 7:00] ) / 3
(sma20[12/9 10:00] - sma[12/9 6:00] ) / 4
(sma20[12/9 10:00] - sma[12/9 5:00] ) / 5

これらの値をアークタンジェントを使ってpiに変換した後そこから更に度数に変換させる作業をしているのですが
sma20,sma50の連続した5時間分の値は
108.67515
108.68595
108.69815000000001
108.71409999999999
108.71804999999999

大体こんな感じで
これらの差を求めると

0.004450000000019827
0.0010000000000189857
-0.0009499999999746933
-0.0014500000000055024
0.005400000000022942

この様に非常に小さい数字になります
そしてこれをアークタンジェントを使い度数に直したら値が小さすぎて検証とかする時に非常に分かり辛いです
画像のグラフを見ればもっと傾き(度数)があってもおかしくないですが
よくよく考えれば画像のx,y軸の値の範囲を考えれば当たり前の事です
なので自分は

0.004450000000019827
0.0010000000000189857
-0.0009499999999746933
-0.0014500000000055024
0.005400000000022942

これらの値に一律で100を掛けてそこから度数に変換させました
そのおかげで自分の中では大分検証しやすくなったのですが
このやり方は正しいのでしょうか?
検証しやすくなったと書きましたがこれで本当にいいのか自分の中で疑問があります
もし掛ける値はこういう式を使って値を求めてそれを使った方がいいとかがありましたら教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/12/21 05:23

> 任意の点の直近5時間分から各々の傾きを度数に変換して求めたい 度数に変換するのは、何か理由があるのでしょうか? 下記を(1時間あたりの)傾きとして、そのまま使えないのでしょうか? > (sma20[12/9 10:00] - sma[12/9 9:00] ) / 1 (sma20[12/9 10:00] - sma[12/9 8:00] ) / 2 (sma20[12/9 10:00] - sma[12/9 7:00] ) / 3 (sma20[12/9 10:00] - sma[12/9 6:00] ) / 4 (sma20[12/9 10:00] - sma[12/9 5:00] ) / 5
kakini

2021/12/21 05:37

度数にするのはこことは別に他の処理をする箇所があるのでその時に使う為です 度数に変換せずとも上記の値のままでもやれると思いますが グラフを見た時に度数の方が個人的に見やすいかなと思ったので度数にしました
jbpb0

2021/12/21 07:15

横軸と縦軸の単位が違うのに、それを度数にする意味って何? と思いまして たとえば、横軸が1時間間隔ではなく10分間隔だったとして、それで計算した10分あたりの傾きを1時間あたりの傾きに換算してから、度数に換算するのだろうか? とか 逆に、横軸が1日間隔だったとしたら、1日あたりの傾きを1時間あたりの傾きに換算してから、度数に換算するのだろうか? とか 1円と1時間から計算した傾きが度数に換算するのに相応しい、という根拠が何かあるのだろうか? とか 質問を見たときに、そんなことを思いまして 他人が勝手に思ったことですので、スルーしてくださっていいですよ
tiitoi

2021/12/21 11:31 編集

時間あたりの y 軸の変化量 (微分の考え方) がわかればいいと思うので、度数に拘る必要性はないように思います。pandas であれば series.pct_change() で変化率を算出できます。 > この様に非常に小さい数字になります 分析する際に数値を実際に目で見てもあまりわかることはなく、グラフなどにプロットしてみて理解したほうがわかりやすいと思うので、スケールはあまり関係ないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問