Top

鐵人三國誌・アーカイヴ

Latest update on 2021年12月21日 (火) at 10:27:49.

目次

【第916回】 R研究集会オンライン(2021年12月18日)

日常
7:40起床。82.30 kg。鶏肉野菜炒めを作って玄米ご飯と冷や奴と合わせて朝食を済ませ,浴槽に湯を貯めて入浴して残り湯で洗濯。
R研究集会
毎年恒例のR研究集会だが,今年もオンライン開催なので,在宅で参加する。以下メモ(括弧内は感想)。
10:30-11:00
R AnalyticFlowでローコード分析 by 鈴木了太(株式会社 ef-prime):毎年の進捗。Rユーザー暦20年。R AnalyticFlowはJavaで開発しているマルチOS対応なGUIでRスクリプトを生成し,Rを呼んで実行するソフト。分析フローが作れること,それゆえに簡単に分岐を試せることが特長。(いつの間にかGUIの感じがかなりRStudioに似てきたな。)現在は日本語版と英語版しかないが,内部の仕組みとしては多言語対応していて,世界中からダウンロードはされている。暫くJavaの変化に伴ってLinuxでの動作に問題があったが,問題解決した。2021年8月の3.1.9が最新版だったが,昨日3.2.0がリリースされた。初期バージョンはRスクリプトを書くと(ローコードで)分析フローを作ってくれるソフトだったが,バージョン3からマウス操作だけで(スクリプトを書かずに=ノーコードで)分析フローが作れるようになった。(グラフのプレビューはRStudioより見やすく,むしろjamoviの感じに近い。RStudioとjamoviのいいとこ取りをして分析フロー作成機能を追加したソフトと言えようか?)プロジェクトフォルダ単位での管理がされていて,gitなどの外部ツールとの連携も可能(管理をXMLでやっている)。コード生成の方針として,特定のパッケージに依存せずどこでも動くことを目指してきたが,tidyverseや高度な分析パッケージが使えないのも困るということで,3.2.0では依存パッケージがインストール済みかどうかチェックしてくれて,なければインストールするかを尋ね,ワンクリックでインストールできる。(JREのライセンス問題はどうやってクリアしているんだろう?→チャットで質問した→再配布可能なライセンスのものを使用しているとのこと。ただし今後やり方は変えるかもしれない→奥村先生からご教示いただいたが,OracleのJREも再びフリーで使えるそうだ)ggplot2を使ったデモ。バグフィックスが入った3.2.1を発表中にアップロードしたとのこと。
11:00-11:30
Rによる福岡市のバス路線網に関する分析 by 橋本芽依(福岡女子大学国際文理学部)/ 藤野友和(福岡女子大学):藤野先生のゼミの4年生の卒業研究。福岡市にある公共交通空白地(バス停からも鉄道駅からも1 km以上離れている場所)が問題。コロナにより運輸業の営業収益が2/3になった問題。バス路線網を企業性と公共性の両方から評価。先行研究(2001)で指標が提案されているので,地域データとGISデータに対してバス停評価指標とバス系統評価指標を算出し,系統再編成を提案するという主旨。企業性について系統ポテンシャル指標,公共性について限定依存人口指標を計算。バス停勢力圏を計算し,その域内の人口を計算(人口はGISに入っているデータを使うのだろうが,移動や自然増減で大きく変わった地域があったら随時追従してくれるのだろうか?),全系統がある場合とある系統を削除した場合との差が限定依存人口指標。ポテンシャルはバス停勢力圏人口×交通発生強度×公共交通輸送分担率で計算。企業性と公共性は,ともに高ければ需要が高く継続可能,企業性だけ高いと営業は可能,ともに低いところは路線廃止や再編成して良い。ただし,企業性が低いが公共性が高い4つの地域は,廃止されたり再編成されると住民が困る。バス停勢力圏の作成方法はボロノイ分割。バス停バッファを500m,完全鉄道バッファを200mとしている。sfパッケージを利用。元データからCrsを設定し平面直角座標系に変換。バッファの作成はst_buffer()関数。ボロノイ分割はst_voronoi()関数。切り抜きはst_difference()関数を使用。(8ヶ月で卒業研究としてここまでやったとは信じられないくらい凄い出来だという谷村さんの感想には同感。福岡女子大ではRでGISを使うという授業をしているので,これが可能になったという藤野さんの説明)
11:30-12:00
ShinyによるScrapboxの共同編集履歴を分析するアプリケーションの開発 by 河村勇佑(龍谷大学理工学研究科数理情報学専攻):河村さんは修士課程の院生。オンライン授業で複数人で作業し最終的に1つの文書を提出する課題があるが,それだと各人の貢献がわからない。文書作成過程の可視化を目的とし,『RとShinyで作るWebアプリケーション』を参考にしてアプリを開発した。UIとサーバ処理を別々のファイル(ui.Rとserver.R)に記述。先行研究としては,東海大の山本先生の研究室から2本の論文が出ている。Notaが提供するScrapboxを利用。Rのパッケージとしてはtidyverseの他,編集距離(レーベンシュタイン距離)を計算するパッケージ(stringdist?)と日付を扱うlubridateパッケージを利用した。(たしかに,誰がいつどれくらい文書作成にかかわったかがきれいに可視化されていたが,そもそも複数人で文書を作っていくって難しい作業で,量的な寄与だけで評価して良いのか? が気になった→質問したところ,Scrapboxにおけるリンク作成を評価すると質評価ができる可能性があり,今後検討するそうだ)奥村さんが指摘された,レーベンシュタイン距離だと前半と後半のスワップとかコピペで値が大きくなるけれども作業は楽なので,大きな寄与と考えて良いのか? という点も重要。藤野さんからはRで閉じてくれると利用者側にはありがたいという指摘。
13:00-13:30
RとWebGISを使った環境汚染物質分布の区間推定の表現 by 山川純次(岡山大学大学院自然科学学系):岡山市のPM2.5のクリギングの結果を区間推定を加味してGISで表現するという話。Spread SheetはGoogle,GISはjSTAT MAP(総務省統計局提供)を使用。データは公表されているものをQGISで読み込み,座標系を変換してGeoJSON形式で書き出す。予測グリッドは市区町村別メッシュ・コード。rgdalパッケージを使うとその辺りの操作が大変便利。MacOSを使っているが,Rもパッケージ群もEmacsもESSもすべてソースコードからビルドして使っている。(半ば趣味! だそうだ)推定値を色の種類,CVが大きいほど薄く,QGISでプロットしたのがアイディア。色としてSim Daltonismを使ってCUDを使った。(外部ソフトを使わなくても,Rで表示するならパレットで"Okabe-Ito"を使えばいいのに,と思ったが,QGISやjSTAT MAPでプロットしているのなら仕方ないか?)jSTAT MAPでも界面クロスグラフとして設定すればCVが大きいほど薄くすることは可能。jSTAT MAPはたくさんのデータを含んでいるので,その機能で地形と重ねると,平地ほどPM2.5が高く,山では低濃度である傾向がわかる。谷村さんから,メッシュの座標は中心か左下か? SDではダメでCVでなくてはいけないというのは本当か? と質問。左上で,SDでもダメではないというお答え。中野先生からSDかCVかは目的によるのではないかというコメント。クリギングをするには緯度・経度を直交座標系にしなくてはいけないが,rgdalを使うとそれが簡単だそうだ。
13:30-14:00
Rによる国際保健医療学分野の二次データ分析 by 谷村晋(三重大学大学院):コロナ禍で調査ができないので,学生が二次データを扱うことが増えた。国別指標のデータベースとして世銀のデータ,個票が使えるデータベースとしてDHSデータの解析について。パッケージとしては世銀のデータについてはWDIとwbstats。DHSについてはrdhs,DHS.rates,prevR。WDIsearch()関数でキーワードから変数名を探せる。ダウンロードはWDI()関数。ところどころデータがない年次とかもある。変数名のattributesとしてグラフのラベルなどに使える文字列も入っている。WDIにはnrow(WDI_data$series)で見ると,17467個の変数が入っていることがわかる。膨大なデータ。DHSは調査ユニットの位置情報も調査データそのものの使用申請とは別に申請する必要があるが使える。DHSのデータ入力はCSProで行われているが,4つの形式のフラットファイルでダウンロードできる(どの形式が良いかはわからない)。RData形式はない。rdhsパッケージを使えば,DHS APIを通じてDHS指標一覧にアクセスでき,必要なデータセットをダウンロードしてRの中で読み込み,メタデータと関連付けて分析できる。surveyIDsがわかったらdhs_datasets()関数でデータをダウンロード。その後にget_datasets()でダウンロードできるはずだが,まだ成功していないとのこと。データを直接ダウンロードする方が早い。DHSデータからTFR,GFR,ASFR,NNMR,PNNMR,IMRなどを算出してくれるパッケージがDHS.rates。foreignパッケージのread.dta()でDHS.ratesに入っているStata形式のデータを読み,fert()関数を使うとTFRの値をSEや信頼区間付きで推定できる(信頼区間はジャックナイフで推定)。chmort()で子どもの死亡率の指標がIMRやU5MRなどいくつか計算できるが,CMRが何を意味するのか不明とのこと(→計算式などの詳細は,PLoS ONEの論文に載っていた)。prevRは(DHSからSPSS形式のデータをダウンロードしないと使えないが)クリギング法による空間補完を行うことができる。(データの質について問題が出ることはないか尋ねてみたが,DHSではこれまでそういう問題を聞いたことはないとのこと)
14:00-14:30
Rによる遺伝子ネットワーク解析 by 樋口千洋(国立研究開発法人 医薬基盤研究所):樋口さんが毎年発表されているオミックス解析の続き。ゲノミクスではバリアント数×遺伝子型を解析。形質に対する線形回帰のp値を算出。トランスクリプトミクスではRNA×サンプル数。プロテオミクスではたんぱく質数×サンプル数だが,AlphaFold2という画期的なソフトができたのでこれまでのいろいろな問題が解決した。メタボロミクスではm/z×サンプル数×保持時間で,既に機械学習をこれに適用する話を報告した。実はゲノムでもDNAが修飾されるかどうかで発現するかどうか変わるので,トランスクリプトミクス同様な考察もできるはず。トランスクリプトミクスにおいて,DNAのイントロン部分から転写される短鎖RNAであるmiRNAが他のRNAに干渉することが最近わかってきて,重要な働きをしているので分析対象となっている。RNA発現データはNCBI GEO(発現データセットのリポジトリ)で検索取得可能。次世代シークエンサのデータは生データで提供されていることが多く,利用者が正規化データに変換する必要がある。Rでの読み込みはread.csv()でOK。欠損値が含まれている場合と,欠損値がNULLという文字列で表記されている場合があり,それらは行単位か列単位で削除する。R-4.*での変更が多少影響あり,昔作ったプログラムがそのままでは動かないことがある。遺伝子ネットワーク解析をする際,一般に因果推論をするのにベイジアンネットワークが使えるが,処理速度やサンプルサイズが問題になることがある。相互情報量によるマルコフネットワークの方が早い。FSL (Forest Structure Learning)はマルコフネットワークの1つ。BNSLパッケージで鈴木譲先生考案の相互情報量推定ができる。ARACNeだとぐちゃぐちゃになるようなデータでもFSLだとすっきりする例。
14:45-15:15
He swung and a miss! Clustering swinging strikes - The case of Shohei Ohtani by 服部恒太(徳島大学):15年前くらいからRを触るようになった。昨年は米国大統領選のヒスパニックの投票に影響する要因と関西弁のある表現の拡散の話をした。今年はセイバーメトリックスを扱っている学生がいて,空振りの研究をするということで,大谷さんのデータを分析。baseballrパッケージを利用。投手の左右と球種別の棒グラフでみると,左右どちらでもフォーシームで一番空振りしていた。ストライクゾーンのどこで空振りしているかを空間統計手法で図示すると,真ん中高めと低めで空振りが多いように見える。plate_x,plate_z,release_speed,release_pos_x,release_pos_y,release_spin_rate,pfx_x,pfx_z,vx0,vy0,vz0,ax,ay,azを分析。2018-21の4年分のデータを利用。PCAで4つの主成分で80%説明ついた。パラレル分析でも4主成分。PC1とPC3は球種絡み,PC2とPC4は投手の利き手絡みらしい。HDBSCAN(Rではcranにあるdbscanパッケージ)でinternalとexternalのクラスターを分析。クラスター1は右投手のインロー,クラスター2は左投手のアウトローへのスライダー,クラスター3は左投手のインハイへの速球,クラスター4は右投手の真ん中低めボール気味にくるチェンジアップ,クラスター5は右投手の真ん中高めボール気味にくる速球,それぞれカウントごとの傾向が違う。(4年分まとめた分析だったが,かなり打ち方を変えている気がするので,空振り傾向も年ごとに変化していないか?) チャットに方言研究の協力依頼があったが,これはリンクしていいかどうかわからないのでURLはメモしない。
15:15-15:45
R による財務ビッグデータのラングリング再考 by 地道正行(関西学院大学商学部):1999年からSを使い始めた数理統計学者。4年前に,世界の企業2000万社超の財務情報の解析を志した。試しに100万社。ファイルサイズ4 GB。read.table()で読んだら,読めたように思われたがデータがおかしくなった。500万行を超えるとおかしい。100万行ずつ読んでつなげればOK。readrパッケージのread_tsv()で問題解決。ギガ単位のデータを正しくラングリングするのに適したハードウェア,OS,Rの関数を探索。約290万行,2900万行,2億9000万行で,100列弱の3つのCSVファイルを使って検討。MacBook Pro,iMac Pro,Mac mini 2020,DellのPrecisionサーバーでUbuntu,Core i7のWindowsマシン,東大のFENNEL,mdxを比較。Rパッケージはbase,data.table,readr,feather,arrow,vroomを比較。Windows 10では290万行ファイルではvroom::vroomが最速だが,2900万行ファイルだとreadrもvroomもこける(実メモリ64 GBなのに)。data.table::read_csvは安定して読める。MacOSやLinuxではvroomもOK。parquet形式にシリアライズしたファイルはarrow::read_parquetで早く読める。(質疑では,メモリ上限による制限の話―この辺の話か?―で盛り上がった)
15:45-16:15
OSSベースでのRパッケージ開発のすすめ by 瓜生真也(徳島大学デザイン型AI教育研究センター):これまでパッケージを9つcranに登録している。いくつか登録後削除しているものもある。登録していないものも含めれば50くらいのパッケージを開発した。石田先生,服部先生もいるし,ホクソエムの方が客員准教授になっているので,Tokushima.R企画中。OSSでのパッケージ開発を勧める理由は(1)コミュニティ・研究への貢献,(2)問題解決・機能追加の速度を向上,(3)開発意欲の維持。個人開発だと孤独で意欲が保てないかもしれない。(ここで「OSSベースでの」というのは,いわゆるバザール方式をさしているようだ。cranに載っていれば個人開発でもほぼソース公開だと思うが)これまで瓜生さんが作ったパッケージのうちいくつか紹介。jpmeshは標準地域メッシュを扱うパッケージ。fgdrは国土地理院が提供する基盤地図情報の処理をするパッケージ。zipanguは日本語まわり。Nipponパッケージが無くなってしまったので。OSSとして多くの開発協力者。jmastatsは気象庁データを取得・整形して提供するパッケージ。気象庁サーバへの負荷が増えることを懸念してcranには入れていない。OSSとして開発したことにより,新しい技術に触れたり協力者が得られたりしたのは大きなメリット。JOSS,ZenodoはGitHubと連携,rOpenSciも含め,パッケージが研究業績として評価される可能性あり。今後パッケージ開発をする人をTokushima.Rでサポートしていきたい。(凄い!)開発コミュニティのうち,パッケージメインテナに全員を入れるわけではないが,新機能を追加した人などは入れるそうだ。

(list)

前【915】(今日も名谷に出勤(2021年12月17日) ) ▲次【917】(出勤して仕事(2021年12月19日) ) ●Top

Notice to cite or link here | [TOP PAGE]