サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
やる気の出し方
kingqwert.hatenablog.com
R, 研究, データRでビッグデータ(それほどデカくなくても良いけど、on memoryでは無理なくらい)を解析するときにこんなことをしてみました、的なTipsを自分用にメモっと。 bigmemory, ff などのpackageを使用する。これに関しては、良い資料がネット上に出回っているので参照してください。ただし、bigmemoryパッケージについては、僕はエラーを吐かれるのでちょっと良くわからないです。たぶん、scan関数がうまく噛み合ってない印象。 SQLiteでDBをつくって、RSQLiteパッケージから利用する。 test1dbGetQuery(con,"SELECT * FROM test WHERE ~;") みたいな感じで必要な分だけ、とってきて使う、みたいな感じ。今はこれを使ってやってみています。 objects()関数で現在のオブジェクトを表示し、中間的な(いらない)
RRでcsvやtsvをread.csvなどで読み込むとき、日本語が入っていたりすると、「不正なマルチバイト文字があります」とかって怒られることがあります。これの解決方法をいくつか発見したので紹介したいと思います。一応出来るのですが、自分でも完全にはわかっていないので、誰か教えてください。 1.基本はテキストエディタなどでcsvを開いてutf-8で保存しなおす。これで大抵は行けるはず。 2.fileEncoding=""を指定する。 read.csv("test.csv", fileEncoding="cp932") のような感じ。 3.以下のように、一旦file関数でencodingしてからread.csvなどを通す。 data1file("test.csv",encoding="Shift-JIS") data2read.csv(data1,header=T,sep=',') 一行で書く
R, 研究, 統計, 機械学習そもそもロジスティック回帰とは、事後確率の対数比が特徴量の線形和で表されるモデルです。簡単に書くと、以下のようなものになります。ですね。この推定すべきパラメーターをまとめて、とし、y次元目が1でそれ以外0となるG次元ベクトルtを考えると、という対数尤度を最大化することで推定するというモデルです。 まぁ、周知の事実だと思うので、Newton-Raphson methodの際のHessian matrixだけ書下しておくと、 さて、数学的な前置きは別のサイトに任せるとして(tex打つのめんどくさいし。。。)、いよいよRでの実装に入りたいと思います。 多項ロジスティック回帰には nnet パッケージにある multinom() 関数を使います。nnetパッケージはニューラルネットのためのパッケージなのですが、glm()関数ではいけないかというと(普通、2値問題ならg
R, 研究HTMLのスクレイピングをRでやろうというものですが、これまでにも何度も書いてきたので思い出し代わりに書いてみるだけにしておきます。 library(Hmisc) #substring.locationを使うため page1 "ここにURL入れる" home1 readLines(conurl(page1)) close(con) # prune data means '' #ここにスクレイピングしたい部分(今は例)を持ってくる epis data.frame(home1[grep(means, home1)]) #substr(文字列, 始まりの文字数, 終わりの文字数)っていう感じの構文で取ってくる #substring.location(文字列, "検索したい文字列")でその文字がどこから始まるか見てみる。 substr(as.character(epis[1,]),s
統計, 研究久しぶりに統計の事書きます。っていってもただの覚書ですが。。。まぁいいですよね。 疫学、特にゲノムワイドな解析を行うとき(例えば疾患の発症に寄与する要因としてSNPsなど)はp>>n問題というものがよく見られます。これはサンプル数(n)に比べて推定すべきパラメーター(p)が多すぎるという問題点です。この条件下では、回帰分析の数学的な妥当性が成立しなくなりますのでちょっと困っちゃいます。(正確には、漸近一致性などが成立しなくなる可能性など)これってちょっと考えれば分かることで、ゲノムとその組み合わせは何百億とありますが地球の人口は60億そこらということは、全人類をサンプリングしてもp>>n問題がおこるということです。(あれ、この例なんかおかしい気がする。。。?) とにかく、今回はこのような状態を考えるときの考え方に関するメモです。このp>>n問題を解く非常に根本的なアプローチは、
統計, 研究, R 回帰をした後、どのようにしてその回帰の正当性などを診断していますか?まぁ、普通は修正R^2やAICみたいなものでその当てはまり具合なんかを見ますよね? 今回は、不均一分散の診断の話をしようと思っています。不均一分散が存在する場合にもOLS推定量は最良ではないが線形かつ不偏ですよね。したがって、OLSするのは最良ではないにしてもまぁOKなんじゃない?一次接近としてOLS扱えばいいんじゃね?ってことはたまにあります。決して悪いアイディアではないと思います。 しかし!不均一分散を無視して誤差の分散や残差二乗和などを計算するなら、当然間違った帰結が得られる可能性があります。特に、OLSによる係数の標準誤差は過小評価される場合が多くなり、その結果、係数のt検定を行うと本来有意でないものも有意としてします傾向があることがあります。 以上より、自分のモデルが不均一分散かどうかを確認す
研究, PythonちょっとAdaBoostをやる際に決定木(決定株?!)をやる必要があったので、復習を兼ねて以下のサイトで決定木の欠点やら長所やらをまとめてみた。 scikit-learn.orghttp://scikit-learn.org/stable/modules/tree.html ところで、このサイトはphythonで機械学習を学ぶのにかなりいいですね! まずは長所から。 直感的な解釈ができ、木で図示可能 ほとんどデータの準備が要らない。大抵の場合、データの標準化やダミー変数化、ブランクの取り扱いなどを行わなければならない。 訓練する際に使用されたデータ数に対してコスト(つまり、データのprediction)は対数 数値データもカテゴリカルデータも両方いける。 モデル構造がブラックボックスではない(わかりやすい!)。もし、モデル内である所定の現象が観察されたならば、その説明は
R, 研究, 統計, データ 以前、カウントデータで回数の少ないものはすぐにポワソン回帰にはしるのではなく、負の二項分布も考えてみてはいかが?というポストをしました。(こちら: 少ない事象のモデル=ポワソン回帰じゃあちょっと芸がないですね) 今回説明するのは更にレアな現象?(イベントが発生しなさ過ぎて、ほとんどのデータが0になってしまうデータ)に対する、いわゆるゼロ強調モデルです。まぁ、色々な呼び方をされているようで、この他にもhurdle modelとかと呼ばれます。(以前質問されて、は?なにそれ?と思いましたがよくよく聞くと、このゼロ強調モデルのことのようです。) これは、何かというと、ばかみたいに多い0に対する分散を扱えるという点に利点があります。(地区別の交通事故の発生件数とかってこんな感じのデータになりそう)。 このモデルは、イベントの発生数がの場合と、の場合とで異なるモデルを仮
R, 研究, 統計[Breuning et al.,2000]によるLOF (Local Outlier Factor)による外れ値の検出アルゴリズムとそのRの実装を紹介します。 Rのパッケージとしては、以下のようなものが有名です。 Package extremevalues [van der Loo, 2010]: univariate outlier detection; Package mvoutlier [Filzmoser and Gschwandtner, 2012]: multivariate outlier detection basedon robust methods; and Package outliers [Komsta, 2011]: tests for outliers. 普通、外れ値の検出としては、まず第一手目にplotや箱ひげ図等を書いてみて、なんとなく感
研究, 統計, データしばしば、統計データで変数変換をしてから解析にかけることがありますね。もっともポピュラーなものとしてはlogをとるなどがありますが、ここでは Delta法 Box-Cox変換を今日ちょっとやったのでメモしときたいと思います。 まず、Armitageによれば、変数変換をする目的は以下の5つが主にあり、かつ上の3つが重要であると言われています。 分散の安定化 関係の線形化 分布をより正規に近づける 厄介な性質を持つデータの取り扱いを簡単にする 結果を許容される測定スケールで表現可能にする まずはDelta法です。これは、一種の近似法です。内容としては、微分可能で微分した後も連続となる関数 によって、データを と変換する。 とおくと、以下の計算で y の平均・分散の近似値が求まる、というものですね。まぁ、やってみるとわかりますが、まぁこんなもんかなって感じの精度になります。
みなさま、明けましておめでとうございます。 久しぶりに更新します。 最近、セミパラメトリック推定がやっとこさわかってきたので何回かに分けてメモを残したいと思います。 セミパラメトリック推定は何かと言えば、 ”無限次元のnuisanceパラメータを含むパラメタ推定全般をセミパラメトリック推定と呼ぶ” とぼくは信じてますが、違うかもしれません。 まず今日は、推定関数法についてです。 (そんなことより、はてなダイアリーはやっぱり数式汚いですね。)パラメータθ、ξをもつ確率分布p(x; θ,ξ)を考え、パラメータθ、ξで条件つけたxの条件付き期待値をと書くことにします。 次に、θと同次元の関数f(x,θ)(これはξに依存しない)を用意します。 このf(x,θ)が任意のθ、ξで以下の条件が成立すれば推定関数と呼ばれます。 を満足するθが真のです。これを解くことで推定量を推定します
R, 統計, 機械学習 まぁ、表題の通りです。NeuralNetwork、SVM、NaiveBayesの3つの手法で、訓練データの割合を1〜99%まで変更させた時に、どのように正答率が変化するのかをシュミレーションしてみましょう。結果はこのようになりました。 明らかにNaiveBayesの精度が悪いですね。SVMとニューラルはほぼ同じくらいですが、訓練データの割合が少ない場合はSVMよりもニューラルネットの方が精度が高いようです。 これは、4600のデータしかないので訓練データが1%などというのは少なすぎて微妙だとは思いますが、結構如実に3手法の間で違いが出てきて興味深いですね。なぜそうなるのかは、のちのち書いていこうと思います。 あと、Tipsとしては、for文の中において、今何回目のループなのかを判別するためにfor文内の最初に message(paste(i,""),appendLF
R, データ 簡単ですね。htmlをとってきて、tree構造にパースしてやるとあとは正規表現で削っていくだけです。 library(XML) library(RCurl) #検索したいwordを入れる word"" u paste("http://scholar.google.com/scholar?as_q=",word,"&num=10&btnG=Search+Scholar&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=&as_yhi=&as_sdt=1.&as_sdtp=on&as_sdtf=&as_sdts=5&hl=en&num=10",sep = "") get_google_scholar_df function(u, omit.citation = TRUE) { html g
研究, データ, 統計, R, 機械学習 カーネル主成分分析(kernel PCA)では、データを高次元の空間に非線形変換したに対する主成分分析です。 イメージ的には、(あくまでイメージ)高次元に変換するのは、こうすることによってより多くの超平面がひけるようになることから、データの構造がより明確になるような感じです。 詳しい数式展開などは、他のサイトに任せます。 ここで、一番の問題は、の関数設定にあるように思えるが、しかし、計算に本当に必要なのはそのものではなく、その内積である、なので、現実的には、この内積値を求めにかかります。ですが、実はこの内積の計算は膨大な計算量がかかることがあり、この問題に対処するために考えられたのがカーネル法(または、カーネルトリックとも呼ばれる)なのです。つまり、この内積の計算を以下のようなカーネル関数によって代替するのです。 一般的なカーネル関数としては、ガウ
R, 研究この世には、正規分布の仮定に基づいた検定やモデルが多数あります。ですが、正規分布から外れた場合、robust性がなければ結構大変なことになることになります。なので、データの標本が、正規分布の母集団からのものかどうか、これを検定するための方法は幾つも提案されてきました。 例えば、 アンダーソン・ダーリン検定 クラメール・フォン・ミーゼス検定 リリフォース検定 ピアソンのカイ二乗検定 シャピロ・フランシア検定などです。これらの検定はすべて、Rのnortestパッケージの中に含まれています。 今回紹介するのは、この中のSharpiro-wilk testについての実装方法です。 非常に簡単で shapiro.test(x) です。この結果が、p しかし、以上のすべての検定に共通する欠点があります。それは、いずれの検定も母集団が正規分布であることを帰無仮説としている点です。なので、帰無仮
研究, R時系列データって状態空間モデルの中で捉えやすいのでこれを使って、時系列データの欠損値補完について考えていきます。若干、タイトルは釣り気味ですが、気にしないでいただきたいです。僕のイメージとしては、GDPみたいな定期的な時系列データに、ある一定の割合で欠損が入った場合です。昔やったカルマンフィルターを使いつつ、欠損値補完についてのRのコードを晒していきます。ちなみに、予測→フィルターのあとで、みんな大好き固定区間平滑化の手法でより精度を上げています。カルマンフィルターの説明は省略しますが、簡単に言うと、一般状態空間モデルのなかでも、線形ガウス空間モデルに基づくアルゴリズムの一種です。ぶっちゃけ、線形ですし、ガウスですし、なかなか仮定が強いかなと思うのですが、それが嫌だなと思う人はモンテカルロフィルター(粒子フィルター)でやってみてください。暇なときにこれも書いていこうと思います。本
このページを最初にブックマークしてみませんか?
『kingqwert's diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く