欠落している時系列気象データを補間するスクリプト?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />時間間隔の気象データでは、データ ポイントの欠落 (読み取りの欠落) が発生することがあります。欠落しているデータ ポイントを補間したいのですが、温度、湿度、気圧は通常、1 日のうちに徐々に変化します。列内の最後と次の時系列値の間を補間して欠損値を取得し、データをクリーンアップしたいと考えています。「欠損値の探索」を使用した代入では、行全体を調べても意味のない結果が得られます。暖房度日、冷房度日などの他の計算で使用するために、列の欠損点を埋める簡単な方法が必要です。
概念的には、ロジックは単純に見えます。列の次の行で欠損値が見つかった場合、次の値までの欠損データ ポイントの数をカウントし、欠損データ ポイントの数に基づいて補間します。ロジックは次のようです。欠損データがある列で欠損データを確認し、欠落している間隔を数えて、(次の値 - 最後の値 / 欠落している間隔の数) を最後の値に追加して欠落している間隔を埋めます。
私よりスクリプトの専門知識があり、解決策を持っている人はいますか?
これはもう解決されましたか?それとも、すでに JMP に組み込まれている機能がありますか?
Re: 欠落している時系列気象データを補間するスクリプトはありますか?多くのコメントは時系列データがあることを無視しているようです。 データが自己相関を示していると仮定すると、JSL 関数 INTERPOLATE を使用できます。 非線形補間が必要な場合は、SPLINE SMOOTH を使用します。

Re: 欠落している時系列気象データを補間するスクリプトはありますか?....スプラインフィットをスクリプト化してみるのはどうでしょうか?
G
Re: 欠落している時系列気象データを補間するスクリプトはありますか?ただあなただからできる何かをするということはあなたを意味するものではありませんしたほうがいい!
データからどのような情報を作りたいのか正確にはまだ不明ですが、単一の代入を使用してデータに対して何らかの推論 (仮説検定、信頼区間など) を実行する場合は、すべての分散にバイアスがかかっていることに注意する必要があります。パラメーターはゼロに向かって推定し、その後データに対して実行される推論の品質に影響を与えます。
おそらく、これらのデータに対して推論が行われることはなく、あなたにとっては問題ではありません。その場合、好きなように代入してください。
Re: 欠落している時系列気象データを補間するスクリプトはありますか?最も簡単な解決策は、データの欠落が頻繁に起こる場合は、Fit-Y-By-X プラットフォームを使用することかもしれません。 時間列を X (連続数値である必要があります)、気象変数を Y にするとします。 その後、ホットスポット メニューからスプラインをフィットさせることができます (使用するラムダの変更の値を試す必要があります)。
スプライン ホットスポットから、予測された保存を選択します。 これらの新しい列には欠損値が入力され、計算を行うことができます (あるいは、元の列が欠落している箇所にのみ新しい値を使用するように少しスクリプトを実行することもできます)。 気象データは徐々に変化することが多いため、これにより合理的な補完が行われるはずです。
Re: 欠落している時系列気象データを補間するスクリプトはありますか?上記の Ron の提案に関して、私は「RandomIndex()」がどれだけの値が間引かれたのかの不確実性を取り除くだろうということを指摘したかっただけです。 したがって、最初の数行は次のようになります。
dt =開ける( 「$SAMPLE_DATA/時系列/CO2.jmp」 ) ;
// n 個の CO2 値を欠損値に設定します
n = 25 ;
dt : CO2 [ランダムインデックス( N行( dt ) 、 n )] = 。 ;
一般的な方法については、以下も参照してください。 https://community.jmp.com/message/217292#217292
Re: 欠落している時系列気象データを補間するスクリプトはありますか?やあjthornton1 、
過去に私はあなたが言及したことに似たようなことをしました。これは最速でも簡単でもないですが、十分に機能します。
期間列と差分列 (およびソースから取得した時間) を取得したら、好きなだけ代入式を複雑にすることができます。
デフォルトの名前はここにあります( 1 ) ;
// 元のデータセットを開く
dt =開ける( 「$SAMPLE_DATA/時系列/CO2.jmp」 ) ;
// 約 25 行をランダムに削除します
ために(私= 1 、私<= 25 、私++、
バツ=ランダムな整数( 161 ) ;
dt : CO2 [バツ】 = 。 ;
) ;
// この時点では、欠損値を含むデータしかありません。
// 時間の列を追加します。ある場合は必要ありません。
dt <<新しい列( 「て」 ) ;
各行について( : t =行() ) ;
// ここから始めます
// 元のテーブルをサブセット化し、欠損値のある行を削除します。
dtSub = dt <<サブセット(すべての行、列( : CO2 、 : t ) ) ;
dtSub <<行を削除する( dtSub <<行を取得します。 (不足している( : CO2 ) ) ) ;
// 期間列を導入します
dtSub <<新しい列( "間隔" ) ;
各行について( :間隔=遅れ( : t 、 - 1 ) - : t ) ;
// 行ごとに CO2 の変化を導入します。
dtSub <<新しい列( 「CO2変化」 ) ;
各行について( :名前( 「CO2変化」 ) =遅れ( :名前( 「CO2」 ) 、 - 1 ) - :名前( 「CO2」 ) ) ;
// 期間と差分を元のテーブルに更新します。
dt <<アップデート(と( dtSub ) 、列の一致( : t = : t ) ) ;
// サブセットテーブルを閉じる
近い( dtSub 、保存なし) ;
// 欠落している行を埋めます - 次のステップが必要です
各行について( :間隔=もしも(不足している( :間隔) 、遅れ( :間隔、 1 ) 、 :間隔) ) ;
各行について( :名前( 「CO2変化」 ) =もしも(不足している( :名前( 「CO2変化」 ) ) 、遅れ( :名前( 「CO2変化」 ) 、 1 ) 、 :名前( 「CO2変化」 ) ) ) ;
// これで、新しい列または既存の列に数式を使用して欠損値を埋めることができます
dt <<新しい列( 「CO2がいっぱい」 ) ;
各行について(
:名前( 「CO2がいっぱい」 ) =もしも(
行() == 1 、 : CO2 、
:間隔== 1 、 : CO2 、
:間隔> 1 、遅れ( :名前( 「CO2がいっぱい」 ) 、 1 ) + ( :名前( 「CO2変化」 ) / :間隔)
)
) ;
Re: 欠落している時系列気象データを補間するスクリプトはありますか?こんにちは、jthornton1!
私は、自分の論理が単純だと思われると、たいてい心配になります。
1 日のうち 24 時間が連続して欠けている場合、補間のアイデアには極端な偏りがあるように見えます。たとえば、真夜中から真夜中までの気温を補間すると、日中の太陽の温暖化効果が見逃されると思います。欠落している点が数点だけであっても、あなたが提案する方法 (単一代入と呼ばれる) は、未知の欠損値の予測に関する不確実性を適切に反映しておらず、それらのデータの分析からのパラメーター推定値の分散には誤ったバイアスがかかることになります。ゼロに向かって。これは、完全なデータの各期間からの何らかの統計 (平均、中央値など) を使用する場合でも問題です。
あなたの問題に対処するアプローチの現在の最先端は多重代入だと思います。複数の代入では、各欠損データに 1 つの値を埋めるのではなく、各欠損値を、代入する正しい値に関する不確実性を表す妥当な値のセットで置き換えます。 補完されたデータセットは、完全なデータに対する標準手順を使用してそれぞれ分析され、その後、これらの分析の結果が結合されます。多重代入では、それぞれの欠損値をそれ自体で推定しようとするのではなく、代わりに、もっともらしい欠損値のランダムなサンプルを表現しようとします。 このプロセスにより、欠損値による不確実性がより適切に反映された統計的推論が得られます。たとえば、パラメータに対して正当に有効な信頼区間を取得できます。
SAS には、Multiple Imputation を非常に効果的に実装するプロシージャがいくつかあります。JMP は SAS と適切に統合されます。幸運を!