データのお砂場(125) R言語、neuro、刺激とニューロンの発火時刻、{boot}

Joseph Halfmoon

Rのパッケージ「Boot」に含まれるサンプルデータセットをabc順に経めぐってます。今回はneuroとな。ニューロと聞くと何か別のものを思い出して(老人の頭の中のニューロンも発火)しまいますが、今回のは「本物の」人間のニューロンの実験データみたいです。ニューロンの実験って頭に電極突き刺すの?そんなことはないみたい。

※「データのお砂場」投稿順Indexはこちら

neuro、サンプルデータセット

サンプルデータセットの解説ページが以下に。

Neurophysiological Point Process Data

上記の解説ページを読ませていただいても、素人老人にはサッパリでした。「何言っているのかわからな~い」という感じ。簡潔な記述から理解できることを列挙していくとこんな感じっす。

    • 行列 469行 6列の行列データ
    • 行は「各試行(実験)」をあらわし、列はその中でのデータ(発火時刻)ということみたい
    • 被験者は人間
    • 「刺激(スティミュラス)」はmagnetic brain stimulation、ということなので 磁気的 なもの
    • スティミュラスの印加前後に、各250ミリ秒の時間ウインドウをとって、ニューロンの発火時間(時刻)を記録
    • スティミュラスの印加前か後かで符号(マイナスとプラス)を変えている。印加のその時がゼロね。
    • 列にV1からV6とお名前をふると、時間方向V1が前、V6が後で、V3とV4の間に0点(スティミュラス入力点)という形で整理されている。観測されている発火回数は最大6回から、最低2回。発火が観察されない場合はNAが詰めてあるみたい

こうして列挙したら、なんだか分かったような気がしてきた。気のせいか?

今回のデータは、Neurophysiological(神経生理学)のものらしいです。「発火」は該当分野の用語だと思います。本当に火が出ているわけではないのでよろしく。神経細胞の発火については『沖縄科学技術大学院大学』様の以下のページが分かり易かった?です。なんだか分からないけど、刺激がなくても神経細胞いうのは、しょっちゅう発火しているのね。

発火する神経細胞

また、磁気を使って脳内の神経細胞に「スティミュラス」を印加する技術については『日本脳科学関連学会連合』様の『知ってなるほど!脳科学豆知識』の以下のページがとっても分かり易いデス。

第22回目 磁気で脳の回路を調整する?

上記を見ると、頭がい骨に穴開けて電極突っ込まなくても、頭の表面にコイルをとりつけて、パルスで磁界を生成すればニューロンを刺激できるみたいです。上記ページから引用させていただきます。

変動磁場による電磁誘導を脳に応用した経頭蓋磁気刺激(けいずがいじきしげき)はTMS (Transcranial Magnetic Stimulation)とも呼ばれています。~中略~TMSコイルを頭部に接するように固定して、そのコイルに瞬間的に高電流を流すと、変動磁場によって脳内に渦電流が誘導されて、神経細胞が電気刺激されて活動します。

ほえほえ、脳内IH的な。。。TMS用のコイルを巻いてみたい気もするが。。。

先ずは生データ

先ずは生データをロードして眺めるところから。neuroRawdata

既に上記のように、データの素性に当たりをつけた後であれば、ふんふんと眺められるデータでありますが、最初、何も知らずにロードしたらば「どしたらよいの」状態なデータかと。

列識別可能なプロットを行ってみる。

合計469回の「実験」データですが、その中心にはいつも列3と列4の間の「ゼロ点」あり、ということであります。X軸に各試行、縦軸に発火時刻、そしてV1からV6の各列を色分けした散布図を描いてみることにいたしました。その操作は以下のごとし。

plot(seq(1, 469),neuro[,1], ylim=c(-250, 250), col=1, xlab="replication of the experiment", ylab="time[ms]", main="Neurophysiological Point Process Data")
points(seq(1, 469), neuro[,2], ylim=c(-250, 250), col=2)
points(seq(1, 469), neuro[,3], ylim=c(-250, 250), col=3)
points(seq(1, 469), neuro[,4], ylim=c(-250, 250), col=4)
points(seq(1, 469), neuro[,5], ylim=c(-250, 250), col=5)
points(seq(1, 469), neuro[,6], ylim=c(-250, 250), col=6)

もっと簡単な方法があるんでないの?と思いつつ、R言語素人の老人には思いいたらず。力押し。描いたグラフが以下に。NeurophysiologicalPlot

上記の青の点群をご覧くだされ、V4列に相当する部分です。他の色が比較的ランダムに(水色は青色との関連ありそうだけれども)発火しているのに対して、青の点は、二十ミリ秒ちょいのあたりに真っすぐな線が見えまする。また70、80ミリ秒あたりにももう一本ありそう。これはゼロ点でスティミュラスを印加したことに因果関係がある発火のように思えます。

第4列だけのヒストグラム

ゼロ点に対して、どのくらいの位置で発火がみられるのかを知るためにヒストグラムを描いてみました。操作は以下だけ。

hist(neuro[,4])

グラフが以下に。NeurophysiologicalHist

25ミリ秒をちょい超えたあたりに一山、70ミリから80ミリあたりにもう一山ある感じです。他はランダムな奴らが混入してる?知らんけど。

この部分にブートストラップ法を適用して、ゼロ点からの平均遅延時間みたいなものを求めることは出来そうな気がしないでもないです。やらんけど。

データのお砂場(124) R言語、motor、バイク事故シミュレーションデータ、{boot}へ戻る

データのお砂場(126) R言語、nitrofen、水生系におけるニトロフェンの毒性、{boot} へ進む