

Seapyを用いてスパーポーズエポック解析をおこなったのですが、中央値と四分位範囲の結果が正しく描画されません。  
解決策を教えていただけると嬉しいです。

実行したコードは以下の通りです。

[code]

    import datetime as dt
    import spacepy.seapy as sea
    import pandas as pd
    import numpy as np
    
    epochs = sublist['Date_UTC'].to_list()
    delta = dt.timedelta(seconds=10)
    window= dt.timedelta(hours=1)
    sevx = sea.Sea(df_allday['E[mV/m]'], df_allday['index'], epochs, window, delta)
    sevx.sea(ci=True)
    sevx.plot()
    
[/code]

実行結果は、写真の通りで、警告文も表示されます。

[![実行結果](https://i.stack.imgur.com/GV2lm.png)](https://i.stack.imgur.com/GV2lm.png)

警告文

[code]

    UserWarning: Window size changed to 360.0 (points) to fit resolution (0.00011574074074074075)
      warnings.warn(
    sea(): datacube added as new attribute
    Superposed epoch analysis complete
    
[/code]

環境は、  
macOS Monterey 12.2.1, Python 3.9.12  
Seapyのバージョンは0.4.1です。


CC BY-SA 4.0
2022-10-30T10:42:32.860
91900
2022-12-27T04:33:14.423
2022-10-30T10:44:46.783
3060
40096
question
python
Seapyを用いたスパーポーズエポック解析　描画が失敗
  
  
解決できたわけではないので御参考です。  
Seapyモジュールを含む Spacepyの [A Quick Start
Documentation](https://spacepy.github.io/quickstart.html)
のページ末部の解析例（太陽風速度の時系列データの解析）を基に，データの質と解析結果の関係を調べてみます。  
最初に，解析例では半窓は 72ポイント（1時間間隔）ですが，御質問の設定に合わせて
360ポイント（12分間隔）に変更した記述と解析結果（間隔変更前とほぼ同じ）を示します。

[code]

    import datetime as dt
    import spacepy.seapy as sea
    import spacepy.omni as om
    import spacepy.time as spt
    
    epochs = sea.readepochs('SEA_epochs_OMNI.txt')
    delta = dt.timedelta(minutes=12)
    ticks = spt.tickrange(dt.datetime(2005, 1, 1), dt.datetime(2009, 1, 1),
                          delta)
    omni12m = om.get_omni(ticks)
    
    # insertion point
    
    window = dt.timedelta(days=3)
    sevx = sea.Sea(omni12m['velo'], omni12m['UTC'], epochs, window, delta)
    sevx.sea(ci=True)
    sevx.plot()
    
[/code]

[![解析結果1](https://i.stack.imgur.com/OzGup.png)](https://i.stack.imgur.com/OzGup.png)  
ここで，`epochs` の各要素に最大 24時間（半窓 3日の 1／3）の乱数値を加減算（下記を上記の `# insertion point`
の場所に挿入）して解析してみます。

[code]

    from random import randrange
    for i, _ in enumerate(epochs):
        epochs[i] += dt.timedelta(hours=randrange(-24, 25))
    
[/code]

[![解析結果2](https://i.stack.imgur.com/jq4Sz.png)](https://i.stack.imgur.com/jq4Sz.png)  
次に，速度の時系列データ（`omni12m['velo']`）の各要素に最大 150km/s（平均 450km/sの 1／3）の乱数値を加減算（下記を上記の
`# insertion point` の場所に挿入）して解析してみます。

[code]

    from random import randrange
    for i, _ in enumerate(omni12m['velo']):
        omni12m['velo'][i] += randrange(-150, 151)
    
[/code]

[![解析結果3](https://i.stack.imgur.com/zUjFy.png)](https://i.stack.imgur.com/zUjFy.png)  
これらの結果と御質問の解析結果を見比べた限りでは，御質問の状況は時系列データに問題が生じているのではないかと予想されます。  
なお，本質的な話ではありませんが `sevx.sea(ci=True)` は（中央値の）
95％信頼区間の表示になるので四分位範囲の表示なら（デフォルトなので） `sevx.sea()` です。


CC BY-SA 4.0
2022-12-27T04:33:14.423
93033
2022-12-27T04:33:14.423
54588
91900
answer