jnobuyukiのブログ

JavaScriptとR言語を中心に研究活動に役立つwebアプリケーション技術について考えていきます。twitter ID: @j_nobuyuki

R

R言語で複数のスペースで区切られたデータを読み込む

今回は本当にちょっとしたことですが、ハマる内容なので皆様と共有します。 read.table関数でテキストデータを読み込む データ分析をするときに、何かのアプリケーションで作成したテキストデータをRに読み込ませることがあります。もっとも汎用的な関数はre…

R言語での変数の型確認の重要性(3)

前回、R言語で変数型を意識した方が良い例として重回帰分析を紹介しました。その投稿を見てくれた知り合いが、自身の失敗談を教えてくれたので、今回はその話をします。知り合いの話では、「本来数値データとして独立変数に入れるつもりが、なぜかファクター…

R言語での変数の型確認の重要性(2)

前回、R言語では変数の型を明示的にしていしないので、注意が必要だという投稿をしました。 今回は、型変換に気をつけたほうが良い例として回帰分析をとりあげます。 回帰分析 回帰分析は、ある変数を別の変数で予測に用います。予測に使用する変数の値に適…

Jupyter notebookでRを使う:2017年1月版

今回は、以前紹介したjupyter notebookでRを使うための設定方法を再び紹介します。macを買ったので、新たに設定しようとしたところ以前とはだいぶやり方が違ったので、2017年1月版として紹介します。 今回のインストール環境 OS: macOS Sierra 10.12.2 …

サンプルサイズが条件ごとに異なる一要因分散分析

今回は、一要因分散分析について考えます。典型的な教科書では、分散分析の条件ごとのサンプルサイズが揃っている場合を扱います。もしも条件ごとのサンプルサイズが大きく異なる場合はどんな問題に気をつければよいかを見てみましょう。ちなみに似たような…

R言語での変数の型確認の重要性(1)

今回は、R言語で統計解析を学び始めた人にとって分かりにくい点について書きます。 Rの変数オブジェクトは型宣言しないが、型がある Rは、統計パッケージアプリケーションという捉え方と、データ処理のためのプログラム言語という捉え方があります。後者に関…

rmarkdownファイルのテキストで改行する方法

今回は、非常に細かい話。テキスト改行のほんのちょっとしたコツです。 改行しているのに反映されない 「テキストを改行したければ、returnキーを押せばいいのでは?」と思う方もいるとは思いますが、RStudio内のrmarkdownファイルでは、ファイル内で改行し…

三平方の定理で理解する回帰分析における分散の分解

今回は、回帰分析の細かいモデルの話を中学校で習う「三平方の定理」を利用して考えてみます。 最小2乗法による推定 回帰分析では、最小2乗法という計算方法で、回帰直線をひくための2つの推定値(切片と傾き)を決めます。何を最小にするかというと実際に…

相関と回帰は何が違うか?

今回は、相関分析と回帰分析は何が違うのかを考えます。 相関と回帰の共通点、類似点 相関分析と回帰分析はどちらも、2つの連続量変数(数量型データ)の関係を調べるために行います。ここでの「連続量変数」とは、単に数字で表したデータという意味ではな…

RStudio バージョン1.0でインタラクティブな解析

今回は、R言語を便利に操作するためのアプリケーションRStudioについてです。いよいよバージョン1.0になったRStudioにできた新機能を試してみます。 Rmarkdownファイルを利用した解析(旧バージョン) RStudioの便利機能の一つにRmarkdownファイルによる解析…

多重共線性によって重回帰分析の推定は不安定になる(のはなぜか?)

今回は、回帰分析を実用する上で気をつけたい問題の1つである多重共線性について考えます。 多重共線性って? 回帰分析では、一つの従属変数(予測される変数)に対して一つ以上の独立変数(予測する変数)を構成して予測モデルとします*1。このとき、予測…

R言語で区切り文字による文字列の分割

今回は、区切り文字を指定して、文字列を分割してリスト化する方法を紹介します。 strsplit関数 strsplit関数を使うと任意の文字を区切り文字として、文字列を分割できます。例えば以下のように使います。 input <- "abc def ghi" res <- strsplit(input, " …

Dockerを利用してRStudioのRマークダウンファイルを使う

今回は、かなり技術的な内容です。Dockerを利用しながら、RStudioのRマークダウンファイルによる解析環境を構築します。ポイントは、日本語フォントが入っていてもきちんとPDF出力がなされるところです。 Dockerって? Docker社が提供しているサービスです。…

R言語でサイズの大きいファイルの読み込み

今回は、ファイルの入力に関するヒントを書きます。 ファイルからの入力はread.table関数 R言語では、baseパッケージの中にread.table関数、read.csv関数などがあります。これを利用すれば、簡単にテキストファイルとして保存されているデータを読み込めます…

なぜ分散分析には自由度が2つあるのか?

今回は、分散分析という解析方法の紹介をします。 平均値の差の検定です。 分散分析は、3つ以上の条件やグループがあるときの平均値の条件差・グループ間の差を比較するときに使います。確率の考え方を取り入れることで、平均の差が偶然と呼べる程度の差な…

R言語で複数の変数を集計(2)

今回は、前回の内容の続きで、複数の変数の内容を1つの変数にまとめる方法を紹介します。 複数の変数に別れた条件名を1つにまとめたい 以下のデータフレームでは、ある条件に該当するかどうかが複数の項目への解答として記録されています。 参加者 条件A …

R言語で複数の変数を集計

今回は、アンケート項目の集計などに用いるような複数項目の集計方法を紹介します。 rowSums関数の利用 各個人が次のようにアンケートに答えたとします。 参加者ID 質問1 質問2 質問3 A 1 1 0 B 0 1 0 C NA NA NA D NA 1 0 1は「はい」、0は「いいえ」、N…

R言語でデータフレームのデータを並べ替え

今回はR言語でデータを扱うときのちょっとした技の紹介です。 データの並べ替え 複数の変数で構成されるデータフレームオブジェクトについて、任意の変数の昇順で、ケースを並べ替えたい場合は、order関数を利用します。 #データ data <- data.frame(x = c(1…

R言語でパターンマッチング

今回は、R言語で正規表現を利用したパターンマッチングの使用例を紹介します。 R言語のパターンマッチング:grepの場合 特定のテキストや文字列のリストに対して、任意のパターンを検索します。文字列がパターンを含んでいるとリスト内の位置を戻り値として…

R言語でデータフレームの一部を参照する方法(2)

前回、データフレームの一部の参照についてまとめました。今回はその補足です。webbeginner.hatenablog.com リスト形式での参照 データフレーム形式のオブジェクトに以下のようにアクセスするとデータの一部のみが参照されますが、その形式はデータフレーム…

R言語でデータフレームの一部を参照する方法

今回は、データフレームオブジェクトの一部を取り出す方法を紹介します。ほんの少しの違いですが、取り出した結果を他の処理に利用するときには重要な違いになるので、割と大事な内容です。 R言語のオブジェクト R言語では、いろいろな構造のオブジェクト(…

R言語でパイプ処理を利用してコードを見やすく

今回は、R言語のコードそのものを見やすくするという話です。 Rでのコードの書き方 R言語では、型を指定しないオブジェクトにデータやその下処理・解析結果を一時的に保持するのが典型的です。例えば以下のコードは、入力データ、下処理後データ、解析結果が…

統計的に有意となる相関係数を自由度と有意水準から逆算する

今回は、ちょっとややこしい話。2つの変数の関連性を数値の変動の仕方から推定する方法があります。例えば、一方が増えると他方も増えるのか?それとも減るのか?もしくは変わらないか。これを表す指標の一つが相関係数です。相関係数を計算する方法は、検…

RマークダウンファイルでGhostscriptに関するエラーへの対処

今回は、RStudioを使っている時に出てきたエラーへの対処をメモ代わりにまとめておきます。 RマークダウンファイルからPDFファイル作成 RStudioでは、Rマークダウン形式ファイルがあり、マークダウン形式のテキスト、Rコード、出力結果、グラフを一つのファ…

可視化で理解する中心極限定理

今回は、Data Visualization Advent Calendar 2015への寄稿として書きます。qiita.com データを特徴づける指標にはいろいろなものがあります。例えば、算術平均は分布の中心を表す代表的な指標です。これに加えて、データの形状やばらつきを把握すると、より…

Rマークダウンファイルで日本語を使う時のヒント

今回は、前に紹介したRマークダウンファイルについて、特に日本語テキストを扱うときに役立つ方法を紹介します。webbeginner.hatenablog.com 日本語のテキストが折り返されない そうなんです。前回紹介したやり方でフォントをうまく選べば、日本語も問題なく…

R言語で1サンプルのt検定

今回はRを用いて1サンプルのt検定(母平均の検定)について考えてみます。 1サンプルのt検定とは? 仮説として仮定された母平均に対して、サンプルから推定された母平均との差の統計的有意性を検定します。 もう少し普通の言葉で言うならば、収集したデー…

Rマークダウンファイルで使えるフォントを選ぶ

RのIDEであるRStudioではknitrやrmarkdownといったパッケージを利用して、テキスト、Rスクリプト、出力結果、グラフを一つのファイルに出力できます。その際、TeXを利用するとPDFファイル出力が可能です。しかし、実際にこれをやろうとすると結構やることが…

R言語でワードクラウドを作る

今回は、R言語のwordcloudパッケージを利用して、アンケートの自由記述回答をwordcloud形式で表現する方法をまとめます。 ワードクラウドとは? コトバンクによれば「文章中で出現頻度が高い単語を複数選び出し、その頻度に応じた大きさで図示する手法」との…

R言語でパッケージから関数を呼び出す

本日は、なんとなく気になっていた関数の呼び出し方のバリエーションをまとめておきます。 パッケージ内の関数 R言語の最大の強みの一つは、パッケージによる機能拡張でしょう。世界中の開発者がオープンな環境で次々に強力な関数を開発して公開しています。…

R言語で形態素解析

今回は、MeCabというオープンソースの形態素解析エンジンをRから使えるようにする方法を紹介します。いろいろな場所ですでに紹介のある内容ですが、紹介されているページのリンク先が有効でないこともあるので、2015年7月8日現在のやり方としてまとめ…

R言語でウェブページから情報を抽出

今回は、R言語を利用してウェブページからデータとなる情報を抽出する(いわゆるスクレイピング)方法をまとめます。 参考にしたページ abrahamcow.hatenablog.comqiita.com XMLパッケージ ウエブページを書くための言語であるHTMLは、タグ形式で表現される…

R言語でデータの並べ替え

今回はR言語でデータの並べ方を変える方法を紹介します。 具体例 具体例を見てもらうのが一番わかりやすいので、先に何をしたいのかを示します。 例えばあるデータがこんな風に並べられているとします。 ID preTest postTest 1 100 90 2 85 95 これをこのよ…

R言語でデータセットの一部を抜き出す

今回は、データの一部を抜き出すときに便利なsubset関数の使い方をまとめます。 subset関数 subset関数の引数は以下の通りです。 x データフレームオブジェクト subset 抜き出す条件式 欠損値は自動的に除外されます select 抜き出す変数名。データフレーム…

IPythonからJupyterへの移行とR用カーネルの導入

前回、ipython notebookをOSXに導入する方法をまとめました。webbeginner.hatenablog.comそこでも少しだけ書いたのですが、ipythonはどんどん進化しており、python以外のプログラム言語も動くようになってきています。そこで今回はipythonからJupyterへの移…

OSXでipython notebookを使う

今回は、少し古い情報になってしまったのですが、ipython notebookをOSXに導入する方法をメモ代わりに残します。 そもそもipython notebookとは? ipython notebookは、pythonのインタラクティブな環境をブラウザで実現する仕組みです。pythonのコード、その…

R言語で変数を変換する

前回に引き続き、データハンドリングに利用できる関数の使い方をまとめます。 今回は、データの単位やスケールの変換に利用できるtransform関数を見てみます。 transform関数 transform関数はデータフレーム内に変数を追加する関数です。既にある変数を変換…

R言語で数量データをカテゴリーデータに変換

前回データハンドリングとその方法について考えました。データハンドリングはスクリプトを利用して - jnobuyukiのブログwebbeginner.hatenablog.com今回は、データハンドリングに利用できる関数としてcut関数を取り上げ、使用上のポイントをまとめます。 cut…

データハンドリングはスクリプトを利用して

欠損値や外れ値の設定、数量データをカテゴリーデータに変換、データの並べ方の変更などいわゆるデータハンドリングについて思うところをまとめておきます。 データハンドリングは、データ解析のなかでも最も大事 今更強調して言うことでもないかもしれませ…

R言語で作成した図をEPS形式で保存する

R言語の特徴の1つに、強力なグラフ化機能が挙げられます。標準でインストールされているplot()関数は、ちょっとしたデータの確認に便利ですし、ggplot2パッケージのggplot()関数を使えば、論文に載せる品質で図を作成できます。今回は、R言語で作った図をEP…

R言語を利用して分散説明率と効果量fの関係を図示する

久しぶりのブログ記事です。今回は統計の話をします。 検定の効果量 何かの現象の原因を突き止めたい場合に、実験や調査で3つ以上の条件の間に、偶然と呼ぶには大きすぎる差があるかどうかを検証する方法として分散分析があります。この分析では、サンプル…

R言語でデータのパーセンタイルを計算する

数値データの要約(summary関数)を使うと、R言語では簡単に4分位数(25%パーセンタイル、中央値、75%パーセンタイル)を計算できます。でも、いわゆるパーセンタイル値(100分位数)は簡単に計算できないようです。(関数を知らないだけかもしれないです)…

R言語でインターネットからファイルをダウンロードする

最近、オープンデータと呼ばれる情報公開の動きがネット上で見られるようになりました。(まだまだたくさんとはいえませんが)これを利用して何か分析したいとしましょう。まずブラウザを経由してデータをダウンロードします。次にエクセルなどでファイルの…

R言語で行列を結合する:rbindとcbind

R言語のちょっとした使い方のヒントです。今回は複数の行列(matrix)を結合するための関数rbindとcbindを紹介します。 rbindとcbind rbindとcbindの違いは結合の方向です。rbindは縦につなげて、cbindは横につなげます。データ解析で行列オブジェクトを使用…

R言語を利用してリスト要素の順序をランダム化

今回は少しトリッキーというかあまりほかの人には役立たないかもしれない話題です。リストを何かの順序で規則正しく並べ替えることはよくあると思います。順番良く並べてリスト全体を見やすくするようなときです。今回は、この逆で順序良く並んでいるものを…

t検定の検出力:2群のサンプルサイズが異なる場合

今回は、t検定の検出力について簡単なシミュレーションの結果を紹介します。検出力とは、帰無仮説を棄却することが真である状況で、正しく帰無仮説を棄却できる確率のことです。*1 今回紹介するt検定の場合、二群が同じ母集団を持つことを帰無仮説とします…

R言語scale()での正規化バリエーション

以前、データの正規化にはいろいろな方法があることを述べました。 数量の正規化:方法の違いは何を意味するか? - jnobuyukiのブログいろいろな正規化をやってくれるコマンドにR言語のscale()があります。 この関数は、何も考えずに使ってもそれなりに動…

JavaScriptで出てくる二回連続の否定演算子!!

たまに他の人が書いたコードを見ているとはまることがあります。今回の二重否定も、ネット検索して調べるのに意外と時間がかかったのでメモとして残します。 否定演算子! 変数の値の判定などで論理演算子をよく使いますが、否定演算子の!は、真偽の値をひ…

ビッグデータ解析と統計的帰無仮説による検証の関係(2)

前回、ビッグデータで何度も同じ統計的検定を繰り返す問題について考えました。今回は、一度にたくさんのサンプルを使って統計的検定を行うことによって生じる問題を取りあげます。 サンプルサイズが大きくなると 「ある母集団を想定して、そこから得たサン…

Shinyを利用してインタラクティブにデータを解析

R言語は強力な統計ツールの開発がどんどん進んでいます。今回紹介するShinyはR言語をブラウザ上で使用するためのパッケージです。うまく利用すると、実験やシミュレーションの結果をわかりやすく伝えられそうな気がします。 Shinyのインストール CRANに登録…