ケィオスの時系列解析メモランダム

時系列解析、生体情報解析などをやわらかく語ります

R言語

新着順 人気順

【信号処理の基礎数学1】フーリエ変換でつながる「矩形関数」と「sinc関数」

時系列のパワースペクトルを理解したり,フィルタの特性を理解したり,デルタ関数の性質を理解したりする基礎知識として,矩形関数とsinc関数の関係を理解しておく必要があります.ということで,今回は,矩形関数とsinc関数についてのお話です。 下の絵のよ…

【信号処理の基礎】Savitzky-Golay平滑化・微分フィルタの周波数特性

今回は,Savitzky-Golayフィルタの畳込み表現の係数 (下図のピンク図形)と周波数特性の話です. Figure:Savitzky-Golay平滑化フィルタ.元の時系列(上段灰色)は,下段の破線にノイズを加えたもの.下段の灰色破線はノイズを加える前の時系列.赤実線(上…

【Rで線形混合モデル1】とにかく使ってみる

今回は、線形混合モデル(Linear Mixed Model, LMM)のお話です。学生の皆さんが線形混合モデルを使った分析のイメージをつかむのに役立てばうれしいです。 線形混合モデルは、 「たくさんの人からデータを集めたとき、個人差も考慮しながら、いろいろな要因…

【Rで時系列解析】ハイパス,ローパス,バンドパス:バターワース (Butterworth filter)フィルタのかけ方

信号処理では,時系列に含まれる特定の周波数成分を取り出すために,ローパス (low pass)フィルタとか,ハイパス (high pass)フィルタとか,バンドパス (band pass)フィルタとかを使うことがあります.学生の皆さんには,デジタルフィルタの基礎の理論から実…

【Rで生存時間解析】Kaplan-Meier (カプラン・マイヤー)法による生存曲線の推定

Kaplan-Meier (カプラン・マイヤー)法は、生存曲線 (survival curve)、あるいは、生存関数と呼ばれる、生存確率の推移を推定するための方法です。生存曲線は、時刻ゼロで全員が生きていた状態から出発し、時間の経過とともに、残念ながら、亡くなってしまう…

【Rで線形混合モデル2】lmer() 関数の使い方

今回は、Rのlme4 パッケージの lmer() 関数の使い方をまとめておきます。以下の記事も参考にしてください。 chaosmemo.com chaosmemo.com 線形混合モデルとは? lmer() 関数の基本形 例 ランダム効果の指定方法 切片のみランダム 傾きのみランダム(切片は共…

Box-Cox変換について考えてみた:なぜ正規でも対数正規でもない半端な分布?

統計の検定では、データが正規分布に従うことを前提とする場合が多いです。そのため、正規分布からずれた歪んだ分布に従うデータは、Box-Cox変換と呼ばれるべき乗変換(対数変換も含む)を用いて、正規分布に近づけることがよく行われます。 Box-Cox変換で、…

【成長データ解析の基礎と再考 (1)】LMS法(Lambda-Mu-Sigma method)とは何か:身長・体重・BMIの成長曲線を支えてきた統計モデル

今回は、下図のような身長や体重の成長曲線の推定についてのお話です。 Figure: 成長曲線の例。この生存曲線を描くRスクリプトは、記事の最後に掲載してあります。 余談ですが、最近、医学・生理学の分野で気になることがあります。数理的な手法が、いつの間…

【Rでsurvival】Kaplan-Meier曲線推定とログランク検定

今回は、Rのsurvivalパッケージを用いて、Kaplan-Meier曲線の推定とログランク検定を行う方法について説明します。生存時間解析は、たとえばある集団において「ある時点まで生存している確率」を求めたり、異なるグループ間で生存状況に差があるかどうかを検…

【成長データ解析の基礎と再考 (3)】成長曲線推定法はパラメトリックなLMS法だけじゃない:Quantile regressionでやってみる。

子どもの身長や体重の成長曲線を推定する手法としてはLMS法が最も有名であり、近年ではその発展形であるGAMLSS(Generalized Additive Model for Location, Scale and Shape)が主流となっています。しかし、成長曲線の推定アプローチはLMS法だけではありま…

【Rで時系列解析】ヒルベルト変換で振動のエンベロープを抽出

振動する時系列の中には,振動の振幅の変化に役立つ情報がある場合があります.例えば,呼吸信号(換気量や気流)は振動します.そのとき,心拍数に影響を与えるのは,振動の周期ではなく,振幅です.ということで,今回はその「振幅」の情報を取り出すため…

【デジタルフィルタの基礎3】積分はローパス、微分はハイパス:フラクタル時系列解析の基礎として学べ

これまで FIR フィルタの基本的な考え方を概観してきましたが、今回はその中でも特に基礎的でありながら、信号解析のあらゆる分野に通じる重要なテーマを扱います。 それは、 「積分(累積和)」と「微分(差分)」という基本操作が、なぜローパス、ハイパス…

【Rで線形混合モデル3】なぜ個人差を考慮する必要があるのか

生体信号解析、心理実験、行動データ、教育データなど、同じ実験対象者から複数回の測定を行った結果のデータは多くの分野で扱われています。そのようなデータに対して「実験対象者間の個人差はとりあえず無視して、全部まとめて回帰してみよう」と考えるか…

【Rで時系列解析】コヒーレンス (coherence)の計算

今回は,コヒーレンス (coherence,あるいは,magnitude-squared coherence)の計算のメモです.コヒーレンスは,2つの時系列間の相関を周波数領域で見る方法です.2つの信号の周波数成分に,線形な入出力関係があれば1に近くなります.なければ0です.とはい…

【Rで時系列解析】AICで多変量自己回帰過程の次数を決定

今回は,2変量の自己回帰過程 について最小2乗法でパラメタを推定し,AICで次数を決定します.お気楽な"vars"パッケージのVARなどは使いません.計算過程や式を確認できるように,Rスクリプトを書きました.Rスクリプトは一番下に掲載してあります.AICにつ…

【Rで時系列解析】ヒルベルト変換でエンベロープを計算するときの注意

前回,振動している信号のエンベロープ (包絡線)をヒルベルト変換で求める方法を紹介しました.今回は,この方法がうまくいくための注意事項をいくつか書いておきます. ポイントは, 前処理として,周波数の狭いバンドパスをかけておく あるいは 前処理とし…

【Rで時系列解析】Detrending Moving Average (DMA) Algorithm

今回は,長時間相関,長期記憶,フラクタル性などを示す時系列のスケーリング解析をやってみようというお話です. chaos-kiyono.hatenablog.com 以下では,Detrending Moving Average Algorithm,略して,DMAと呼ばれる方法を紹介します.この業界では,Detr…

【Rで時系列解析】離散時系列のパワースペクトル

今回は、離散時系列の解析に使うパワースペクトル推定 (スペクトル解析)についての解説します。Rスクリプトの例も示してありますので、数値実験をして理解を深めてください。 連続時系列 (上)と離散時系列 (下) 時系列データは,連続でも,無限長でもない 【…

【デジタルフィルタの基礎2】FIRのローパスフィルタの仲間たち:Rで体験しよう

前回の記事では、FIR フィルタの基本について概観しました(以下のリンク)。 【デジタルフィルタの基礎1】まずは、FIRフィルタの世界を一望してみよう - ケィオスの時系列解析メモランダム しかし、フィルタを「使いこなせる」ようになるためには、抽象的…

【Rで統計】R で ANOVA(分散分析)への最短ルート

ANOVA(分散分析)は、複数グループの平均に差があるかどうかを一度に判定するための手法です。本来は前提条件や理論的背景を理解した上で使うべき解析ですが、ここではそれを一切扱いません。 この解説の目的はただ一つです。「最短手順で、解析結果を出す…

【Rで時系列解析】FFTを使った離散フーリエ変換の実際(各成分の周波数について)

RでFFT(Fast Fourier Transform)を計算するコマンドfftの結果と,離散フーリエ変換の関係,特に,周波数について説明します.実数の時系列を] ()とします.時系列解析では,とすることが多い(C言語やpythonも0から)ですが,ここではRに合わせます ().つ…

【Rで文字列操作】Rの基本命令の整理

私は、ファイル名に含まれるID番号や日付情報を抽出したり、入力ファイル名を参考にして出力ファイル名を自動で設定したりするときに、文字列操作系の命令(関数)をよく使用します。しかし、命令の使い方をよく忘れてしまうため、今回は文字列操作系の命令…

【Rで時系列解析】1/f 型時系列の生成:指数βを自由に設定

型ゆらぎは、生体システムに広く見られる特徴的なフラクタルゆらぎです。心拍ゆらぎ、脳波パワー、呼吸リズム、歩行リズムなど、多くの生理信号では が 1 に近い 1/f ゆらぎが観測されます。 型ゆらぎを評価する手法としては、パワースペクトル解析、Detrend…

【Rで統計】分散分析ANOVAの考え方:データのばらつきの要因の分解

実験や観測データの解析では「複数の群(グループ)の平均値に差があるか」 を知りたいことが頻繁にあります。たとえば、 3 種類の薬 A、B、C の効果の違い 複数条件下での生理指標の差 学年・群・処理条件ごとの測定値の比較 などです。 そのような多群比較…

【Rで瞬時周波数推定】意外と単純 Teager–Kaiser Energy Method:ヒルベルト変換じゃないよ

振動する時系列信号を解析するとき、私たちはしばしば「この信号は、いまどれくらいの強さで振動しているのか」「振動の速さは時間とともにどう変わっているのか」といった問いを立てます。Teager–Kaiser energy operator(TKEO)は、まさにそのような問いに…

【Rを使った時系列解析】1/fゆらぎ(ピンクノイズ)を生成

今回は,狭い意味での1/fゆらぎを生成します.ピンクノイズとも呼ばれます.なぜピンクかといえば,色とのアナロジーです.可視光の低周波数側の端が赤色なので,低周波側,つまり,白色よりも赤色が強調されていると考えられるので,色で言えば,どちらかと…

【心拍変動解析】RR間隔時系列の再サンプリング (等間隔サンプリング化)

心拍変動解析では,パワースペクトルの推定を使った心拍変動指標がよく使われます.HFパワーとか,LFパワーとか呼ばれるやつです.今回は,これら指標について説明しません.心拍変動指標を計算する前に,絶対に理解しておかなければならないことがあるから…

【Rで生存時間シミュレーション】生存時間解析用の数値データの生成

最近では、さまざまな統計解析がパッケージや生成AIを使うことで手軽に実行できるようになりました。そのため、「とにかく結果が出れば良い」という考えが強くなり、解析手法の本質を十分に理解せずに使われることも多いのではないでしょうか。 私自身は、理…

【R】複数のp値をまとめて一つに:Fisherの結合確率検定 Fisher's Combined Probability Test

交差検証(クロスバリデーション)などで得られえた複数の 値をまとめて一つにして表したい場合があります。あるいは、「メタアナリシスで複数の研究結果を統合して「効果があるかどうか」を知りたい 」とか、 「複数の測定方法や実験条件の結果をまとめて評…

【信号処理の基礎】Savitzky–Golayフィルタを一般形で表す

Savitzky–Golay(SG)フィルタは、時系列データをなめらかにしながら波形の形をできるだけ壊さない、非常に便利な平滑化手法です。生体信号解析、化学計測、音声処理、パワースペクトルの平滑化など、幅広い分野で利用されています。 SG フィルタの特徴は、…