トップページ⇒math
989コメント535KB

【R言語】統計解析フリーソフトR 第4章【GNU R】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001132人目の素数さん2011/01/09(日) 17:31:49
R は統計計算とグラフィックスのための言語・環境です。
統計計算で重宝するデータ型や、複数要素を処理する演算や関数、
解析結果を表示するグラフィックなど、多彩な機能を提供します。

●関連サイト
The R Project
http://www.r-project.org/
RjpWiki
http://www.okada.jp.org/RWiki/
リンク集
http://www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8
0893132人目の素数さん2013/06/16(日) 16:51:17.29
>>892
返事が遅くなりましたが無事できました。
ありがとうございました。
0894132人目の素数さん2013/06/22(土) 19:04:04.49
すみませんかなり初心者です(>_<)
Mac(OS X Mountain Lion)でつかっています
RのバージョンはR 3.0.0 GUI 1.60というやつです

たとえば散布図とかグラフを書いたときに、出力される画像内の日本語部分が、□□□と表示されてしまってうまくいきません
たとえばこういう感じです・・・
http://i.imgur.com/U3TQ2VK.png

↓の、奥村晴彦氏のHPで参考に紹介されている内容を、そのまま「.Rprofile」にコピペして作業ディレクトリには入れてあります。
http://oku.edu.mie-u.ac.jp/~okumura/stat/Rprofile.html

どうすればいいでしょうか…m(_ _)m
0895132人目の素数さん2013/06/23(日) 02:34:40.66
とりあえずさ、適当なfamilyを指定したらどう?
plot(1,1,xlab="日本語",family="Osaka")
とか。
/System/Library/Fonts/の中には、
Hiragino Kaku Gothic ProN W3.otfはないでしょ。
Rprofileで存在しないフォントを指定したら豆腐になるでしょ。
08968942013/06/24(月) 22:02:46.72
>>895
できました!!
ありがとうございます!!!
0897132人目の素数さん2013/06/25(火) 10:01:46.70
>>896
解決しようで何より。
あとは、
?grDevices::quartzFonts
を読んで幸せになってください。
0898132人目の素数さん2013/06/29(土) 14:52:16.10
MacPortsからRを入れようとも目論んだのだけど、

R @3.0.1 (math, science)
R is GNU S - an interpreted language for statistical computing
R-framework @3.0.0 (math, science)
R is GNU S - an interpreted language for statistical computing

普通の奴とFrameworkの2種類が用意されているみたい。
Frameworkのメリットは何でしょうか?

因みに、CRANにあるMacOSXバイナリは、
OSのバージョンが古くてインストール不可でした。
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.8
BuildVersion: 9L31a
08998942013/06/30(日) 16:45:46.17
>>897
入力してみましたが、よく分かりませんでした……。
とりあえず、私の環境だと、
http://d.hatena.ne.jp/konisimple/20100528/1275043266
ここに書かれている.Rprofileをそのままコピペすると、グラフを書いたときに毎回きちんと日本語の文字が表示されるようになり、とても幸せになりました。
しかし、ここに書かれているソースの意味は分かっていません……。
ひとまず、ここに書かれているコードの意味を理解できるようになるためには、どういう文献で勉強すればいいでしょうか?(;´д`)
0900132人目の素数さん2013/07/01(月) NY:AN:NY.AN
>>899
語学と同じで、辞書を引きながら文章を読むように、
ヘルプを読みながらコードを読みます。

辞書→ヘルプ (例: ?grDevices::quartzFonts)
文章→コード

hookとかname spaceと聞いても、何の意義があるのかピンと来ないレベルなら、
コードを読み進めるためのITの基礎教養がまだないレベルだから、
そちらを優先させるべきかも知れません。
語学に多読が有効であるように、コードを多く読むことはあたなの実力向上に有効です。
09018942013/07/01(月) NY:AN:NY.AN
>>900
がんばります(;´д`)
09028942013/07/07(日) NY:AN:NY.AN
Rについてのブログがホットエントリになってますね
がんばろ〜
http://bugrammer.hateblo.jp/entry/2013/07/05/192101
0903132人目の素数さん2013/07/09(火) NY:AN:NY.AN
OSXのRStudioでバックスラッシュが入力できないのだけど、同じ症状の人いるかな?
環境は:OS10.8.4、ことえり、R version 3.0.1、RStudio 0.97.551

Option+¥でも、ことえりの設定を変更しても、¥しか入力できない。
ただし、かなモードだと半角の\が入力できる。

他のエディタとか、ターミナルでは英数字モードでOption+¥でバックスラッシュの入力が可能
0904132人目の素数さん2013/07/09(火) NY:AN:NY.AN
>>903
おぉ、本当や。
Emacsと同じ。Emacsの方は強制的にバックスラッシュに変換するように組み込んだが。

こちらはATOKだけど、ATOKからU.S. (星条旗)にすると、
\で円記号、Opt+\でbaskslashがRStudioで入ったよ。
0905132人目の素数さん2013/07/09(火) NY:AN:NY.AN
>>904
確認ありがとう。
Rguiだとどうなんだろう?
俺はソースからmakeして、ターミナルからRを使うようになっているから、わからんのだが。
0906132人目の素数さん2013/07/10(水) NY:AN:NY.AN
RguiもRstudioもバクスラは円マークが出る
自分には特に関係なかったので疑問を抱かず仕様としてた
0907132人目の素数さん2013/07/10(水) NY:AN:NY.AN
>>903-905
>>906
ごめ、寝ぼけてた、Rguiは普通にバクスラいけたわ@win版
0908132人目の素数さん2013/07/10(水) NY:AN:NY.AN
連投失礼、Rstudio@win版も行けた、フォントをCourier Newとかに設定すればバクスラがでる

円マークもバクスラも内部では同一処理なんじゃないかな…
0909132人目の素数さん2013/07/10(水) NY:AN:NY.AN
>>908
WindowsとMacOSXでは、円記号とバックスラッシュの取り扱いが異なるので、
Windowsのことは参考にならないよ。
フォントでどう表示するかではなくて、どの文字コードが入力されるのかが問題。
MacOSXでは、円記号(0xA5)とバックスラッシュ(0x5C)は別の文字になる。
Windowsでは、円記号もバックスラッシュも0x5Cで、どちらが表示されるかはフォントの設定による。
0910132人目の素数さん2013/07/13(土) NY:AN:NY.AN
randomforestで不均衡データをうまく扱う決定的な方法はないのかな?
0911132人目の素数さん2013/07/13(土) NY:AN:NY.AN
classwt
0912132人目の素数さん2013/07/13(土) NY:AN:NY.AN
>>911
どうもです。
それは使ってたんですがイマイチでした…
0913132人目の素数さん2013/07/19(金) NY:AN:NY.AN
http://www.scirp.org/journal/ojs/
この雑誌って怪しい雑誌だと思ってたのだけど
RjpWiki
のリファレンスに載ってた。本当は怪しくない雑誌だったの?
0914132人目の素数さん2013/07/19(金) NY:AN:NY.AN
>>913
our operation office is located in China.
いや、十分怪しい。
0915132人目の素数さん2013/07/19(金) NY:AN:NY.AN
http://www.scirp.org/Journal/Indexing.aspx?JournalID=590
掲載論文の引用数はほぼ0に近い
オープンアクセス&費用切り詰めるスタイルなので、査読なしで読者が評価してねという事後評価路線らしい
0916132人目の素数さん2013/07/19(金) NY:AN:NY.AN
全部掲載されるなら、中国で事務コストカットというのは分かるんだが、
いっぱいきた時は、どうしてるんだろうね?抽選?先着順?
0917132人目の素数さん2013/07/19(金) NY:AN:NY.AN
http://www.okada.jp.org/RWiki/?R%A4%F2%BB%C8%A4%C3%A4%BF%B3%D8%BD%D1%CF%C0%CA%B8

このリストの中に1つ入ってる
査読付きの論文の数を稼ぐのには使ってもいいのかな?
0918群論�U2013/07/20(土) NY:AN:NY.AN
依然あった群論のまとめと続きを行う。
予定は以下の通り

1.ラグランジュ
2.ガロア
それ以下は未定

イメージをつかむ事を重点的にやる。
0919132人目の素数さん2013/07/21(日) NY:AN:NY.AN
平均値を逐次更新で求めてu[i]がどう変動していっているのか見たいです。
#54個のデータ(0〜100の点数)
x<-c(95,95,95,90,75,93,79,75,80,70,91,97,
   75,88,69,83,68,90,96,94,85,80,80,79,85,85,88,
   90,83,78,90,90,97,70,87,85,73,94,65,78,76,84,
   80,76,77,78,80,51,77,81,54,83,70,76)
n<-length(x)
#uは長さ54ですべて0のベクトル(すべて1にしてもできませんでした。)
u<-numeric(n)

u[1]<-x[1]
for(i in 1:n-1) {
#逐次更新式
u[i+1]<-(n/(n+1))*(u[i]+(1/n)*x[i+1])
}
上のコードで実行しているのですが、
Error in u[i + 1] <- (n/(n + 1)) * (u[i] + (1/n) * x[i + 1]) :
replacement has length zero
のようなエラーが出てしまいます、どのようにすれば修正できるでしょうか?
他の方法(u_h[i]=mean(head(x,n=i)))では求められましたが、上記のコードではどこがダメなのかわかりませんでした。
0920132人目の素数さん2013/07/21(日) NY:AN:NY.AN
for文使う必要あるの?
cumsum(x)/seq(1,length(x))とかじゃ駄目なの??
09219192013/07/21(日) NY:AN:NY.AN
>>920
その方法でも求められますね。

ただ、今回はなぜ(>>919のコード)でエラーが出るのかわからなかったので質問しました。
時間をかけて解決できなかったのでどこが間違っていたのか知りたいだけです。
0922132人目の素数さん2013/07/21(日) NY:AN:NY.AN
>>921
演算子の優先順位
seq_len(n-1)
0923132人目の素数さん2013/07/21(日) NY:AN:NY.AN
>>919

1:n-1
=(1:n)-1
=0:n-1
09249192013/07/22(月) NY:AN:NY.AN
>>922
>>923
演算子の優先順位とはそういうことでしたか
うまくいきました、本当にありがとうございました。
0925132人目の素数さん2013/07/22(月) NY:AN:NY.AN
誰か良い知恵をお貸し下さい。

遺伝的アルゴリズムを利用してラッパー法による
特徴選択をしたいと考えています。
例えば、5個の説明変数の組み合わせで2値の判別分析モデルを
構築するとして、下記のように2値の5個の遺伝子で染色体を表現します。

0 1 1 0 1

上記であれば、説明変数2、3、5の組み合わせでモデルを構築します。
分類の正答率やRMSEを評価関数として遺伝的アルゴリズムは
コーディングできそうなのですが、0と1で表現される列だけ
抜き出してデータフレーム(?)を作成して、説明変数全体の
サブセットを表現する方法が分かりません。

最初はsubset関数とcomb関数を使おうと思いましたが上手くいきませんでした。

どなた様かうまい解決方法をご存じないでしょうか?
0926132人目の素数さん2013/07/22(月) NY:AN:NY.AN
>>925
よくわからない(^_^;

2値型説明変数があってもそのまま使えばよいと思うのですが、
それらを抜き出す目的が分からない(ので、助言が難しい)。

> a <- data.frame(y = sample(c(TRUE, FALSE), 10, replace = TRUE), x1 = sample(c(TRUE, FALSE), 10, replace = TRUE), x2 = sample(c(TRUE, FALSE), 10, replace = TRUE))
> summary(glm(y ~ ., data = a, family = binomial()))

Call:
glm(formula = y ~ ., family = binomial(), data = a)

Deviance Residuals:
Min 1Q Median 3Q Max
-1.52358 -0.58372 -0.03405 0.51562 1.92551

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.7848 1.3625 0.576 0.565
x1TRUE -2.4682 1.6362 -1.509 0.131
x2TRUE 1.1659 1.6953 0.688 0.492
[以下略]

という感じで2値データをそのまま説明変数にするのはだめなの?
0927132人目の素数さん2013/08/05(月) NY:AN:NY.AN
Rと直接関係ないのですが、表をcsvで出力した後に見た目を確認する際に
一々Excelを立ち上げるのも面倒ですがテキストエディタだと表形式で見れませんし、
何か簡易な方法はありませんでしょうか?
どなたかcsvエディタお使いの方いらっしゃいますか?
0928132人目の素数さん2013/08/06(火) NY:AN:NY.AN
>>927
csv-mode

ところでscやoleoってutf-8も対応してたっけ?
0929132人目の素数さん2013/08/07(水) NY:AN:NY.AN
>>927
MacOSXユーザなら、クイックルック機能(http://ja.wikipedia.org/wiki/Quick_Look)を使っていると思うけど、
CSV用のプラグインもあるみたいだよ。
ttps://code.google.com/p/quicklook-csv/
0930132人目の素数さん2013/08/07(水) NY:AN:NY.AN
R Commanderじゃダメ?
0931132人目の素数さん2013/08/07(水) NY:AN:NY.AN
こんなコマンドを作ってみた。
------ csv2view -------
#!/usr/bin/Rscript

head(read.csv(commandArgs(trailingOnly = TRUE)))
------ ここまで ------
$ head -n 3 /tmp/tmp.csv
市区町,昭和60年,平成2年,平成7年
神戸地域,1.59 ,1.38 ,1.25
  東灘区,1.58 ,1.33 ,1.31
こんなcsvがあったとして、csv2viewでこのcsvを表示する。
$ csv2view /tmp/tmp.csv
市区町 昭和60年 平成2年 平成7年
1 神戸地域 1.59 1.38 1.25
2   東灘区 1.58 1.33 1.31
3   灘区 1.41 1.15 1.13
4   兵庫区 1.39 1.17 1.17
5   長田区 1.36 1.29 1.25
6   須磨区 1.65 1.40 1.25
↑2chにペーストすると表示がずれるかも知れないけど、
こちらではきちんと表になっている。
0932132人目の素数さん2013/08/07(水) NY:AN:NY.AN
皆様ありがとうございます
今すぐには試せない状態ですので、後程試してみます
0933132人目の素数さん2013/08/11(日) NY:AN:NY.AN
RってRスクリプト開いての実行したい範囲指定してやってるんですけど。普通ですか?
0934132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>933
なんかの本に[Ctrl]A{Ctrl]Rというのが載っていたが、これはWindowsのRGuiかな。
0935132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>933
いちいち範囲指定するのが面倒なので、
こちらの意をくみ取って勝手に範囲指定して実行するような操作(C-c C-c)をしているけど。
どのエディタを使っているの?
0936132人目の素数さん2013/08/11(日) NY:AN:NY.AN
デフォのエディタだけど。
0937132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>936
デフォって何?

インストール直後から何にも触っていない状態で、
うちはviだけど、あんたもviなのか?
> options("editor")
$editor
[1] "vi"
0938132人目の素数さん2013/08/11(日) NY:AN:NY.AN
デフォといえばRってアイコンクリックしてでてくるやつだけど。
0939132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>938
「アイコン」という言葉が出てきたので、
R本体の話ではなくて、付属品のR.app GUIとかRGui.exeの話をしているんだね。
想像するに、それらのOS固有に開発されているGUI系ラッパーに独自のテキストエディタが付いているのかな。
違うのかな。

まぁ、そのどっちのOSを使っているか知らないけど、
「MacOSX限定の話なんだけど、」とか「Windows限定の話なんだけど」って、
>>933の頭につけておいてくれたら、>>933を読み飛ばせたんだけど、と言ってみる。
0940132人目の素数さん2013/08/11(日) NY:AN:NY.AN
なにもかいてなければwindows
これ常識だから。
0941132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>940
マルチプラットフォームに対応するUNIX由来のRに、
そんな常識が通用するのか。ばかばかしい。
これはWindowsに移植した弊害だな。
0942132人目の素数さん2013/08/11(日) NY:AN:NY.AN
Windowsに移植したからこそ広まったんだろ。
優秀な人材はwindowsを使っているから
開発測度が飛躍的にたかまってな。
0943132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>942
普及に関しては、首肯する。
でも、開発速度は違うよ。
Rの開発Coreチームの人間と会ったり話したりしたことがないの?
Prof. Brian RipleyはDebianとSolarisだよ。
彼らがMinGWをメインで使っているとでも言うの?
0944132人目の素数さん2013/08/11(日) NY:AN:NY.AN
マイクロソフトの社員とかいるだろ。
0945132人目の素数さん2013/08/11(日) NY:AN:NY.AN
>>943
>Rの開発Coreチームの人間と会ったり話したりしたことがないの?

貴殿はどこでそんな人と会うのか。
0946132人目の素数さん2013/08/12(月) NY:AN:NY.AN
>>945
絶対に会えるのはuseR!かな。
今年のuseR!はもう終わったけど、2014年はロサンゼルスだよ。
ttp://user2014.stat.ucla.edu/
0947132人目の素数さん2013/08/12(月) NY:AN:NY.AN
どこで会うのか聞いているのに
どこで会えるかを答えるアホ
0948132人目の素数さん2013/08/12(月) NY:AN:NY.AN
もしかして話しかけるという選択肢がない?
まあ、ソーシャルメディアでも同じだけど。
0949132人目の素数さん2013/08/13(火) NY:AN:NY.AN
いかにも親しげな書き方しといて実際は相手に認知されてないというオチ
0950132人目の素数さん2013/08/13(火) NY:AN:NY.AN
Rって一日目のデータフレームと2日目のデータフレームがあった場合
2つを1つにしないといけないんですか?
0951132人目の素数さん2013/08/13(火) NY:AN:NY.AN
例えば
一日目
a b
1 4
2 5
3 6
2日目
a b
1 7
2 8
というでーたふれーむがあったら
a b1 b2
1 4 7 
2 5 8
3 6 NA
見たいなのをつくって、b1-b2を計算するんですか?
0952132人目の素数さん2013/08/13(火) NY:AN:NY.AN
>>950
する必要ないです。そのまま使えばよいです。
「必要がない」というだけで、1つにしてもOKです。

表計算の感覚だと1つに統合する必要がありそうな気がしますが、
データの並びにだけ気をつければ、問題ありません。
0953132人目の素数さん2013/08/13(火) NY:AN:NY.AN
>>952
ありがとうございます。
でもデータの順番がバラバラで
入っているaもバラバラの場合は
1つにした方が簡単ですよね。
0954132人目の素数さん2013/08/13(火) NY:AN:NY.AN
>>953
Rでは、表形式にできないようなデータ構造を含む多種多様で複雑な構造が可能なので、
もう少し具体的なデータ構造についての説明がないと、
あなたの場合はどうなのか、何とも言えない。
ただ、1つにした方が簡単と感じるなら1つにすればどうだろう。
0955132人目の素数さん2013/08/13(火) NY:AN:NY.AN
でもRって1つにしてやる関数は揃っているけど
2つにしてやる関数は作らないといけないっぽくないですか?
09569542013/08/13(火) NY:AN:NY.AN
>>950はもしかして>>951なのか?
それなら、データ構造は明らかで申し訳ない。
> (d1 <- data.frame(a = 1:3, b = 4:6))
a b
1 1 4
2 2 5
3 3 6
> (d2 <- data.frame(a = c(2,1,3), b = c(7:8, NA)))
a b
1 2 7
2 1 8
3 3 NA
だとすると、aごとにbの差分を計算するなら、
> d1$b - d2[order(d2$a), ]$b
[1] -4 -2 NA
とする。
0957132人目の素数さん2013/08/13(火) NY:AN:NY.AN
>>956
ありがとうございます。
そんな感じです。
ただ違うのはaに1 2 3が存在するとは限らないということです。
たとえば初めの日には1がいたけど次の日には2が居なかったりします。
0958132人目の素数さん2013/08/13(火) NY:AN:NY.AN
>>955
formulaを作成するときは、変数名と値をdataに入れると便利な場合はある(一括指定とか)。
でも、dataのしては必須ではない。
> lm(d1$b~d2$b)

Call:
lm(formula = d1$b ~ d2$b)

Coefficients:
(Intercept) d2$b
-3 1

これで、1日目のbと2日目のbの回帰モデルを検討できる。
別に1つにする必要はない。
0959132人目の素数さん2013/08/13(火) NY:AN:NY.AN
>>957
それなら、1つにした方が分かりやすいね。
> (d1 <- data.frame(a = sample(1:10, 5), b = 1:5))
a b
1 1 1
2 2 2
3 9 3
4 4 4
5 7 5
> (d2 <- data.frame(a = sample(1:10, 5), b = 5:1))
a b
1 3 5
2 4 4
3 1 3
4 8 2
5 2 1
> merge(d1, d2, by = "a", all = TRUE)
a b.x b.y
1 1 1 3
2 2 2 1
3 3 NA 5
4 4 4 4
5 7 5 NA
6 8 NA 2
7 9 3 NA
0960132人目の素数さん2013/08/18(日) NY:AN:NY.AN
>>940
その認識はスレによっては非常識でしかないから今すぐ治せ
0961132人目の素数さん2013/08/21(水) NY:AN:NY.AN
抽象的な質問で申し訳ないのだけど、
再帰関数を書きたいのだけど、
再帰処理の終了判定条件なしで、
単純に再帰の回数を指定して処理を終了させるにはどうすればよいのだろう。

x' = f(x) みたいな関数があって、
f(f(f(f(f(f(x))))))という風に有限回数で入れ子にしたい。
0962132人目の素数さん2013/08/22(木) NY:AN:NY.AN
>>960
「なにも書いてなければ(馬鹿な)windows(ユーザー)」というのはもやは常識だろ
09639612013/08/22(木) NY:AN:NY.AN
自己解決。

f <- function(x){
return(x + 1)
}

f.main <- function(x, i = 3){
for (j in 1:i){
x <- f(x)
}
return(x)
}
とすれば、forループ終了後に最終的なxの値はそのまま残ってくれるみたいだ。

> f.main(1, i = 100)
[1] 101

Recall()とか考えて迷宮に入っていた。
0964132人目の素数さん2013/08/22(木) NY:AN:NY.AN
>>963
どうせならこうだな

f <- function(x) {x + 1}
g <- function(x) {x + 2}

f.main <- function(a, x, i){
for (j in 1:i){
x <- a(x)
}
return(x)
}

f.main(f, 1, 100)
f.main(g, 1, 100)
0965132人目の素数さん2013/08/23(金) NY:AN:NY.AN
データフレームX(m×n)とベクトルv(1×n)があった時に、vと一致するXの行を抽出したいのですが、シンプルな方法ありませんか?
applyとsetequalで出来るかと思ったのですがうまくいきませんでした
forループ2つで行と列を見ていけば出来ることは出来たのですが、どうも非効率的な気がします
0966132人目の素数さん2013/08/23(金) NY:AN:NY.AN
>>961

?Reduceより
Iterate <- function(f, n = 1) function(x) Reduce(function(g, ...) g(...), rep.int(list(f), n), x, right = TRUE)
h <- function(x) 1 + 1 / x
> Iterate(h, 40)(1) == (sqrt(5) + 1) / 2
[1] TRUE

関数言語っぽく
Compose <- function(f, g) function(x) f(g(x))
nest.fun <- function(f, n){
if (n == 0) function(x) identity(x)
else Compose(f, nest.fun(f, n - 1))
}
> nest.fun(h, 40)(1) == (sqrt(5) + 1) / 2
[1] TRUE

末尾再帰かつ高速化
nest.fun <- function(f, n, acc.fun = identity){
if (n == 0) return(acc.fun)
else if (n %% 2 == 0) nest.fun(Compose(f, f), n / 2, acc.fun)
else nest.fun(f, n - 1, Compose(f, acc.fun))
}
0967132人目の素数さん2013/08/23(金) NY:AN:NY.AN
>>964,966
ありがとうございます。大変参考になりました。

>>966の9行目、
function(x) retrun(x) じゃなくて、function(x) identity(x)にするのは何か理由があるのでしょうか。
以前から、identity()の存在意義がよく分からないのです。

>>965
よく理解できていないけど、Xから抽出したものが、vと同一ならば、vそのものだよね?
だとすると、vのままでよいので、抽出する意味がない。
vと同一の行番号が知りたいとか、
vと同一の行がXに複数含まれていて、その全てを取り出したい、
または、vと一致する行がXに含まれているかどうかの有無をチェックしたいという意味でしょうか。

> X <- matrix(1:100, 10)
> v <- (1:10) * 10 - 4
としたとき、
> X[apply(X, 1, all.equal, v) == TRUE, ]
[1] 6 16 26 36 46 56 66 76 86 96
と抽出できるけど、これは
> v
[1] 6 16 26 36 46 56 66 76 86 96
と同一なわけで。
0968132人目の素数さん2013/08/23(金) NY:AN:NY.AN
ロジスティック回帰について教えてください。
下記データ( r t )があります。

r <- c( 0.727 , 0.634 , 0.500 , 0.443 , 0.416 , 0.328 , 0.272 , 0.225 , 0.133 )
t <- 1:9

このとき、以下のようにロジスティック回帰を行うと、
glm( r ~ x , family=binomial )
>In eval(expr, envir, enclos) : 二項 glm で整数でない成功数がありました!
とエラーになります。

ここで質問です。
1.小数データを目的変数に、ロジスティック回帰はできないのですか?
できるのであれば、どうすればよいのでしょうか?

2.ふと疑問に思ったのですが、目的変数が0、1って、そのままでは、ロジット変換できないと思うのですが、
内部的にどのように計算されているのでしょうか?(微小数を加減算している?0+0.0000001と1-0.0000001 )
0969132人目の素数さん2013/08/23(金) NY:AN:NY.AN
>>968
> エラーになります
エラーになりません。「警告」と「エラー」は違います。

> 小数データを目的変数に、ロジスティック回帰はできないのですか?
できますが、多分あなたが思っているものと違います。

glm()でロジスティック回帰をやるときには、
目的変数の設定仕方が3通りあります。
>>968を見ると、目的変数は、二値でも、説明変数カテゴリごとの計数(整数)でもないから、
説明変数カテゴリごとの割合(小数)だよね。
その場合は、分母に相当するweightsを指定しないと駄目だよ。

何を言っているのか、分からなければ、Rの解説書を読んだ方がよいよ。
Rで学ぶデータサイエンスシリーズ「一般線形モデル」なら、pp.53-56のあたり。

2. の質問は、目的変数をロジット変換するという思いこみによる誤解。
実測値(0,1)とモデル値exp(beta_1x_1+beta_0)/(1-exp(beta_1x_1+beta_0))を比較して、
当てはまりを見る話じゃないの?
0970132人目の素数さん2013/08/23(金) NY:AN:NY.AN
>>954
レスありがとうございます。

確かに「警告」であって「エラー」ではないですね。
私が提示した例は、説明変数カテゴリごとの割合(小数)です。
その上で、明示的に分母に相当するweightsを指定しなくても
同じウエイトが設定されるのでは?と思いました。如何でしょう?
そうだとしたら、「警告」を出力しなくても良いのではと思いました。

2.
> 実測値(0,1)とモデル値exp(beta_1x_1+beta_0)/(1-exp(beta_1x_1+beta_0))を比較

なるほど。すっきりしました!
実測値(0,1)とモデル値が、完全に一致しない(限りなく近くはなるが・・・)ところに
私は何か引っかかっていたようです。
09719662013/08/23(金) NY:AN:NY.AN
>>967
>function(x) retrun(x) じゃなくて、function(x) identity(x)にするのは何か理由があるのでしょうか。
朝だったので単なる勘違いでした。
-if (n == 0) function(x) identity(x)
+if (n == 0) identify

個人的には恒等写像って意味を明確にしたいからidentityを使う感じでしょうか。
むろんfunction(x) x でも機能は同等ですが。
09729652013/08/24(土) NY:AN:NY.AN
すいません自己解決しました
言葉足らずで申し訳ありませんでしたが、最終的にやりたかったことは変数の組合せ別の集計でした
適当で申し訳ありませんが結局こうなりました

X <- as.data.frame(matrix(1:100, 10))
X <- rbind(X, X, X[1:5,], X[1:4,])
Y <- data.frame(unique(X), freq=NA)

for (i in 1:nrow(Y)) {
Y$freq[i] <- nrow(X[which(apply(X, 1, identical, as.matrix(Y)[i,1:(ncol(Y)-1)])),])
}
0973132人目の素数さん2013/08/24(土) NY:AN:NY.AN
>>972
こんなんもあるよ。変数も指定できるみたい
library(plyr)
count(X)
count(X, c("V1", "V2"))
0974132人目の素数さん2013/08/24(土) NY:AN:NY.AN
>>973
知りませんでした。そのまんま私のやりたいことができてびっくりです
ありがとうございます
0975132人目の素数さん2013/08/26(月) NY:AN:NY.AN
>>968-970
ちょっとピントがずれている気がする…

元データ解らないからなんとも言えないんだが、
>>969氏の回答がより正しいだろうことを前提に、あえて>>968氏の欲しい答えを返すと

glm( r ~ t , family = "gaussian"( link = "logit" ) )

となる (これは誤差構造に正規分布を仮定して、ロジスティック式のパラメータを推定している)
ちなみに>>969氏の方法だと誤差構造に二項分布を仮定して(以下同文)となる (おそらくこっちの方がより正しい)
0976132人目の素数さん2013/08/30(金) NY:AN:NY.AN
裏Rjpwiki読んでてもしかして中の人ってG大のA先生なのではなどと思った
0977132人目の素数さん2013/08/30(金) NY:AN:NY.AN
>>976
うーん、口調が違う気がするけど。
それより、河童さんが誰か気になる。
0978132人目の素数さん2013/09/07(土) 12:43:56.32
>>977
最近、河童さんと俺しかQ&A初心者コースに回答していない。
過疎化が進んでいるのかな。
0979132人目の素数さん2013/09/09(月) 00:44:44.31
>>841
kwsk
0980132人目の素数さん2013/09/23(月) 09:35:45.96
Rのホームディレクトリの場所は変更はできないんでしょうか?
作業ディレクトリではなく、ホームディレクトリです。
09819802013/09/23(月) 09:54:08.60
すいませんなんか勘違いしてました
ホームディレクトリというのはたんにRのアプリが入ってる場所のことなのかな
0982132人目の素数さん2013/09/23(月) 17:01:03.55
>>980
> Rのホームディレクトリの場所は変更はできないんでしょうか?
もちろん、出来ます。
でも、突拍子もないところにインストールすると、
見つけてもらえない場合があるので、
標準的な場所以外は、念のために環境変数R_HOMEを設定しておく方が良いでしょう。
ただし、設定したことを忘れると、トラブルシューティングではまることがあるので注意。
09839802013/09/23(月) 21:47:00.43
>>982
ありがとうございます
初心者……というかパソコン自体もあまり詳しくないのですが(Macをつかってます)、ホームディレクトリっていうのは、単にRをインストールした場所という意味なんでしょうか?
作業ディレクトリには、.RDataとか.Rhistoryとか.Rprofileとかが入っているのですが、ホームディレクトリというのはそういう、設定ファイル的なものを置く場所ではないのでしょうか。
なんか、置き場のようなものとしてホームディレクトリってのがあるんであれば、作業ディレクトリの近くに置いといたほうがいいのかな…とか思ったのですが
0984132人目の素数さん2013/09/24(火) 00:07:26.50
>>983
コンピュータの世界では一般的に、
例えば、○○というソフトウェアがあったとして、
○○のホームディレクトリというのは、
○○をインストールしたディレクトリと実用上は同等です。
これはRに限った話ではなくて、一般的な話です。

> 作業ディレクトリには、.RDataとか.Rhistoryとか.Rprofileとかが入っている
それらは、システム全体に有効にさせる場合を除いて、
ユーザのホームディレクトリ(つまりMacOSXの場合、/Users/ユーザ名)に置くファイルです。
作業ディレクトリに置いた場合にどうなるか実験したことはありませんが。
09859842013/09/24(火) 00:11:07.87
すみません。うっかり一部嘘を書きました。
訂正します。
Rを終了するときに、作業内容と履歴を保存すれば、
.Rdataと.Rhistoryはそれぞれの作業ディレクトリに残ります。
09869802013/09/24(火) 08:03:34.73
>>985
おっと、わたし、.Rprofileも作業ディレクトリにおいてました…たしかにいま解説サイトをいくつか見るとホームディレクトリだよ〜んと書いてありました
最初、グラフの日本語化のために解説サイトに公開されてる.Rprofileの例をいくつか試してダメだったんですが、作業ディレクトリに置いてたからかな…
でも今は日本語化に成功してるので、後で自分の環境がどうなってるか確認してみます
ありがとうございます
0987132人目の素数さん2013/09/24(火) 09:07:46.53
>>986
> たしかにいま解説サイトをいくつか見ると
正しいかどうか確証がないサイトの解説よりも、
helpを読もうよ。

help("Rprofile")

Rはどんどん進化しているので、Webサイトや書籍で解説しても、
すぐに内容が陳腐化します。
自分が使っているバージョンのRではどうなのか、
自分がインストールしているRに尋ねるのが最短だと思いますよ。
09889802013/09/24(火) 12:40:21.75
>>987
なるほど…
0989132人目の素数さん2013/09/25(水) 12:34:56.57
0
レス数が950を超えています。1000を超えると書き込みができなくなります。