初心者のための R および RjpWiki に関する質問コーナー

以下の 4 つの「●項目」のどれかをクリック!!


新規投稿欄: --- その前に,「投稿における注意事項」を読んでから!
このページの目次 --- 質問への回答・コメントの参照
最新のスレッド --- 最も最近に書き込まれた「親」記事(最新のコメントが付いた記事ではありません)
Q&A (初級者コース) 過去の目次 --- 今までの 16 個の書庫の参照


●● 目次 ●●

参照は,個々の項目をクリック(質問への回答・コメントの参照も,個々の項目をクリック)


●● 新規投稿 ●●

まずは,「投稿における注意事項」を読んで,それに従ってください。
これに従わない場合には,回答が得られにくい場合があります。 




追加の質問

初心者です? (2018-08-11 (土) 08:05:21)

もう一点、こちらも初歩的な質問となり大変恐縮ですが、①に合致するものを②から選択したいです。選択された結果は③のようになります。

sample month
1 201701
1 201702
1 201703
1 201704
1 201705
1 201708
1 201709
2 201705
2 201706
2 201709
2 201712


sample sex age site month
1 Male 34 a 201701
1 Male 34 b 201701
1 Male 34 a 201702
1 Male 34 b 201702
1 Male 35 a 201703
1 Male 35 a 201704
1 Male 35 a 201705
1 Male 35 a 201706
1 Male 35 b 201708
1 Male 35 a 201709
1 Male 35 b 201709
1 Male 35 b 201711
2 Female 63 c 201701
2 Female 63 c 201705
2 Female 63 d 201705
2 Female 63 c 201706
2 Female 64 c 201707
2 Female 64 c 201709
2 Female 64 d 201709
2 Female 64 c 201710
2 Female 64 d 201712


sample sex age site month
1 Male 34 a 201701
1 Male 34 b 201701
1 Male 34 a 201702
1 Male 34 b 201702
1 Male 35 a 201703
1 Male 35 a 201704
1 Male 35 a 201705
1 Male 35 b 201708
1 Male 35 a 201709
1 Male 35 b 201709
2 Female 63 c 201705
2 Female 63 d 201705
2 Female 63 c 201706
2 Female 64 c 201709
2 Female 64 d 201709
2 Female 64 d 201712

merge(データフレーム①,データフレーム②,by.x=”sample”,by.y=”month”)とやってみましたが,column name ‘sample’ is duplicated in the resultというエラーがでます。
大変お手数をおかけしますが、ご教示いただけると幸いです。どうぞよろしくお願いいたします。

  • 単に,merge(データフレーム①,データフレーム②)
    列の順序が変わるけど,並べ直せばよいだけ -- 2018-08-11 (土) 09:20:49
  • ご回答者様、ありがとうございます。特に列を指定する必要はないのですね。無事マージできました。もっと勉強します。ありがとうございました。 -- 初心者です? 2018-08-12 (日) 07:10:30

重複を除外する方法

初心者です? (2018-08-10 (金) 17:20:37)

R初心者です。初歩的な質問で申し訳ございません。
例えば以下のようにサンプルごとに複数の月がデータとしてある場合、重複せずにMonthのデータをピックアップするにはどのように書けばよいでしょうか?
sample Month
1 201701
1 201701
1 201702
1 201703
1 201703
1 201704
1 201704
1 201705
1 201708
1 201708
1 201709
2 201705
2 201706
2 201706
2 201709
2 201709
2 201712

結果は以下のようになります。
sample Month
1 201701
1 201702
1 201703
1 201704
1 201705
1 201708
1 201709
2 201705
2 201706
2 201709
2 201712

大変お手数をおかけしますが、どうぞよろしくお願いします。

  • 何のことはない,unique(データフレーム名)
    投稿様式に従いなさい。 -- 2018-08-10 (金) 18:30:10
  • ご回答者様、ありがとうございます。duplicateで重複を除外する方法ばかり考えていてuniqueでこのように簡単に重複を除外できるとは知りませんでした。大変助かりました。 -- 初心者です? 2018-08-11 (土) 07:58:39
  • 申し訳ありません。もう一点伺いたいことがあり、こちらのコメント欄に記載しようとしたのですが、うまく入力できないため、別スレッドを立てて質問させていただきます。重ね重ね申し訳ございません。 -- 初心者です? 2018-08-11 (土) 08:01:40

変数設定について

むー? (2018-08-09 (木) 22:17:57)

変数設定について質問です。英語での入力は問題ないのですが、日本語にするとエラーが出てしまいます。この場合、どの様に設定をすればよろしいでしょうか。因みにMacOSです。
誰か分かる方がおられましたらよろしくお願いします。

  • どのように入力したら、どののようなエラーが出るのか -- 2018-08-09 (木) 22:36:56
  • > 身長 <- c(173,178,180,183,182,174,179,179,174,192)を入力するとError: unexpected input in "�"というエラーが出ます。よろしくお願いします。 -- むー? 2018-08-10 (金) 07:58:31
  • R を立ち上げた直後に15,6行出るメッセージは日本語になってるか? -- 2018-08-10 (金) 11:46:26
    R version 3.5.1 ...... -- "Feather Spray"
    Copyright ....
    Platform: x86_64-apple-darwin15.6.0 (64-bit)
    
    R は、自由なソフトウェアであり、「完全に無保証」です。 
    一定の条件に従えば、自由にこれを再配布することができます。 
    配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。
    以下略
  • エラーメッセージ自体も文字化けしている。Error: unexpected input in "�" の "�" は何なの? -- 2018-08-10 (金) 11:49:33
  • Rを立ち上げた直後は英語です。 -- むー? 2018-08-10 (金) 12:47:43
  • R version 3.4.4 (2018-03-15) -- "Someone to Lean On" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. During startup - Warning messages: 1: Setting LC_CTYPE failed, using "C" 2: Setting LC_COLLATE failed, using "C" 3: Setting LC_TIME failed, using "C" 4: Setting LC_MESSAGES failed, using "C" 5: Setting LC_MONETARY failed, using "C" -- むー? 2018-08-10 (金) 12:47:56
  • すみません、この?の部分は僕も色々調べてみたのですが僕も分かりません。 -- むー? 2018-08-10 (金) 12:49:00
  • あなたは,R を英語で使いたいの?
    日本語で使いたいのなら,「システム環境設定」の「言語と地域」の「優先する言語」が「日本語」,「English」の順になっているかどうか確認して
    全てのメニューが英語になっているかも知れないけど,分かるよね。System Preferences と Language & Region と Preferred languages だよ
    変数名として日本語が使えないと嘆くより先に,Setting LC_CTYPE failed, using "C" とか,赤字で書かれているんじゃない?そっちの方を異常だと思わなきゃ。 -- 2018-08-10 (金) 13:35:35
  • Rは日本語での使用を望んでいます。先程、言語地域設定の優先言語を確認したところ英語が優先となっており、日本語に変更したところ問題なく日本語を変数として使える様になりました。アドバイスありがとうございます、お騒がせ致しました。 -- むー? 2018-08-10 (金) 15:21:38

グラフのメタファイルでの貼り付け時に不要な余白をなくしたい

pkopw2? (2018-08-08 (水) 16:30:48)

作図したグラフをメタファイルとしてパワポに貼り付ける方法に関しての質問です。

 右クリック>メタファイルにコピー>パワポにコピペ

とすると、グラフが左上に偏ってしまい、右側・下側に無駄な余白が生じてします。その結果、グラフが小さく貼り付けられてしまいます。
(R(3.5.1)、windows10 pro、powerpoint 2016)

この現象は、例えるなら、

par(mfrow=c(2,2))

のコマンドを入力した時に、左上の領域にグラフが描出されるようなイメージです。

前に使っていたパソコン(ver3.2.1、windows8)では、作図したグラフをそのままのサイズで張り付けることができました(そのままというのは、”ビットマップにコピー”として張り付けた時のイメージです)。

結局、パワポにコピペした後にグループ化を解除したりして一応何とかなるのですが、描出されたグラフをそのままのイメージで、メタファイルとして貼り付けたいのです。


作図領域とデバイス領域がそろっていないのかと思い、下記のコマンドを色々と試してみましたが、

fig = c(0, 1, 0, 1)
par(oma = c(0, 0, 0, 0))
plt = c(0, 1, 0, 1)
par(mfrow=c(1,1))

昨日からずっと解決できていません。
初歩的な質問で恐縮ですが、どうかよろしくお願いします。

  • 再現できなかったけど,「メタファイルにコピー・パワポにペースト」ではなく,「メタファイルに書き出してパワポに読みこむ」でやったらどう? -- 2018-08-09 (木) 07:42:06
  • ご回答ありがとうございます。試してみましたが、作図部分以外の余白も読み込まれてしまいました。 -- pkopw2? 2018-08-09 (木) 15:06:04
  • どのように試したのかはっきりしない。以下のようにしてできるファイルをダブルクリックしたときに表示される画像を確認して
    win.metafile("test.wmf")
    hist(rnorm(10000))
    dev.off()
    ここに示す画像のようになっておらず,大きな余白があるのか(赤枠は画像の範囲を示すためにこちらで追加した) -- 2018-08-09 (木) 16:05:15
    test-wmf.png
  • ご回答ありがとうございます。コマンドを打ち込んでRで作図されるイメージは上記のとおりです。しかし、これを開くと左隅に縮小されたグラフがあり、右・下側に余白が生じてしまうのです。 -- pkopw2? 2018-08-10 (金) 15:12:16
  • じゃあ,わからない。そのファイルをアップロードしてみて。 -- 2018-08-10 (金) 15:46:51
  • この掲示板にアップロードする。その際,枠を付けたりなど余計な編集はしない。表示もしなくてよい。 -- 2018-08-11 (土) 09:22:21
  • wmfファイルとemfファイルのどちらも同じように余白が生じています。 -- pkopw2? 2018-08-11 (土) 12:28:29
  • par(no.readonly=TRUE) を入力して,以下のパラメータの値が同じかどうかを調べる
    $fig
    [1] 0 1 0 1
    
    $mai
    [1] 1.02 0.82 0.82 0.42
    
    $mar
    [1] 5.1 4.1 4.1 2.1
    
    $mfg
    [1] 1 1 1 1
    
    $oma
    [1] 0 0 0 0
    
    $omd
    [1] 0 1 0 1
    
    $omi
    [1] 0 0 0 0
    
    $plt
    [1] 0.1205513 0.9382542 0.1499541 0.8794487
    
    $usr
    [1] 0 1 0 1
    それ以上は,わからない。 -- 2018-08-11 (土) 14:17:58
  • いろいろなパラメータが出てきました。上記の中では、$pltと$usrの値が全然違いました。 
    $plt 
    [1] 0.1171429 0.9400000 0.1459314 0.8826826 
    $usr 
    [1] -1.5200000 44.9200000 -0.2776667 27.7666667 -- pkopw2? 2018-08-11 (土) 16:07:38
  • しかしながら,どれも関係ないようで,ギヴアップ
    pdf とかを使ってもおなじなのかな? -- 2018-08-11 (土) 22:26:22
  • またやってみたいと思います。色々とお付き合いいただき感謝申し上げます。 -- pkopw2? 2018-08-13 (月) 08:46:43

複数のデータフレームを加工したい

sk? (2018-08-04 (土) 08:03:33)

複数のデータフレームを同じ操作で加工したいのですが、うまくできません。
ベクターでも一緒なので、やりたいことは下記のような形です。

a <- c(1,2)
b <- c(3,4)

a <- append(a, 9)
b <- append(b, 9)

これを

for (i in list(a,b) ){

i <- append(i, 9)
View(i)

}

のように書くと、Viewでは見えるのですが、
それぞれのデータフレーム(ベクター)は変化していません。

lapply(dlist, function (x) {x <- append(x, 9); View(x)})

も考えたのですがこれも違いました。

for (s in c("a","b") ){

eval(parse(text = paste0(s," <- append(", s, ", 9)")))
eval(parse(text = paste0("View(", s, ")")))

}

これはできるのですが、操作が多いので、すべてを文字列で書くのが面倒ですし視認性も悪いです。本当はどうするのがよいのでしょうか。

  • オブジェクトへの操作を関数 func で定義し,オブジェクト <- func(オブジェクト} で更新する...普通そうでしょ。 -- 2018-08-04 (土) 22:38:21
    func = function(d) {
    	d$x2 = d$x^2
    	d$y2 = 1/d$y
    	d
    }
    
    > set.seed(987)
    > a = data.frame(x=1:5, y=rnorm(5))
    > a
      x           y
    1 1 -0.05701369
    2 2  0.26999481
    3 3  0.87447166
    4 4 -0.19034659
    5 5  1.10069779
    
    > a = func(a)
    > a
      x           y x2          y2
    1 1 -0.05701369  1 -17.5396479
    2 2  0.26999481  4   3.7037749
    3 3  0.87447166  9   1.1435476
    4 4 -0.19034659 16  -5.2535746
    5 5  1.10069779 25   0.9085146
    
    > b = data.frame(x=1:10, y=rnorm(10))
    > b
        x            y
    1   1 -0.893758950
    2   2 -0.954967917
    3   3 -0.855857687
    4   4 -1.113020051
    5   5 -1.288726486
    6   6  0.757694061
    7   7 -0.876224265
    8   8  1.758459078
    9   9 -0.009684665
    10 10 -0.448383447
    
    > b = func(b)
    > b
        x            y  x2           y2
    1   1 -0.893758950   1   -1.1188699
    2   2 -0.954967917   4   -1.0471556
    3   3 -0.855857687   9   -1.1684186
    4   4 -1.113020051  16   -0.8984564
    5   5 -1.288726486  25   -0.7759598
    6   6  0.757694061  36    1.3197939
    7   7 -0.876224265  49   -1.1412603
    8   8  1.758459078  64    0.5686797
    9   9 -0.009684665  81 -103.2560250
    10 10 -0.448383447 100   -2.2302340
    
    > c = data.frame(x=c(2,4,8), y= c(0.2, 0.34, 0.87))
    > c
      x    y
    1 2 0.20
    2 4 0.34
    3 8 0.87
    
    > result = lapply(list(a, b, c), func) # lapply でまとめて実行
    > result
    [[1]]
      x           y x2          y2
    1 1 -0.05701369  1 -17.5396479
    2 2  0.26999481  4   3.7037749
    3 3  0.87447166  9   1.1435476
    4 4 -0.19034659 16  -5.2535746
    5 5  1.10069779 25   0.9085146
    
    [[2]]
        x            y  x2           y2
    1   1 -0.893758950   1   -1.1188699
    2   2 -0.954967917   4   -1.0471556
    3   3 -0.855857687   9   -1.1684186
    4   4 -1.113020051  16   -0.8984564
    5   5 -1.288726486  25   -0.7759598
    6   6  0.757694061  36    1.3197939
    7   7 -0.876224265  49   -1.1412603
    8   8  1.758459078  64    0.5686797
    9   9 -0.009684665  81 -103.2560250
    10 10 -0.448383447 100   -2.2302340
    
    [[3]]
      x    y x2       y2
    1 2 0.20  4 5.000000
    2 4 0.34 16 2.941176
    3 8 0.87 64 1.149425
    
    > result_c = result[[3]]
    > result_c
      x    y x2       y2
    1 2 0.20  4 5.000000
    2 4 0.34 16 2.941176
    3 8 0.87 64 1.149425
  • ありがとうございます。ということは、オブジェクトが100個あれば、100個書く以外には方法はないのですよね。 lapply でまとめて実行しても、各object a, b, cは更新されないので。 a = func(a) b = func(b) というのを一気に実行できる方法がないかと思いました。 -- sk? 2018-08-05 (日) 05:08:16
  • そもそも100個のオブジェクトを別々の変数に割り当てようとするのが間違い。例で挙げたに過ぎないだろうが,
    a <- c(1,2)
    b <- c(3,4)
    は代入だけど,こんなのを 100回書くわけはないが,ファイルからの入力にしても,たとえば
    a <- read.table("file-a.dat")
    なんてことになり,結局100回書かなくてはならないことに違いない。変更も 100回書かなきゃならないし,利用も同じ。変更が複雑なら,その複雑さを100回そのまま書くよりは,複雑な処理の記述を1回だけ関数で書いて,せめて100回書くときは文字数の少ないfunc(a)としようというのが先の回答。
    たとえば,上のようにデータフレームごとに処理するだけのことなら,入力データファイル名をちゃんと規則的に x001.dat, ..., x100.dat のようにしておけば(データファイルが測定器からの自動生成のような場合は,このようになっていることが多いだろうけど。そうでなければ,データファイル名を手動で100回付けなければならないかもね)
    for (i in 1:100) {
      f = sprintf("x%03i.dat", i)
      x = read.table(f)
      x = fnc(x)
      write.table(x, f) # 変更を書き出す必要があれば
    }
    とすればよいだけ。
    ここでも,もしファイル名に規則性がなければループ自体は前と同じように簡単に書けるけど,ループの前に file.name = c("a", "b", ....) なんて100個のファイル名を書かなきゃならなくなる。
    file.name = c("foo.dat", "bar.dat", "nanntakakantaranagainamae.dat", "jugemujugemu.dat", ....) 全部で100個の定義
    for (f in file.name) {
      x = read.table(f)
      x = fnc(x) # ここに処理内容を書けば,処理内容は1回だけ書けばよいので,関数にしたものを呼ぶ必要はないけど,読みやすいように書く。
      write.table(x, f) # 変更を書き出す必要があれば
    }
    要するに,「繰り返しはループでする」,「ループで処理できるようにデータ構造およびデータ記述法を考える」ということ。 -- 2018-08-05 (日) 06:05:43
  • プログラミングを必修にするとか何とかいってるけど,子どもたちより大きいガキにプログラムの基本を教えるにはどうすりゃいいのかな? -- 2018-08-06 (月) 21:07:54
  • 処理できるような構造にもっていく、というのはよい考えですね。Rは結構いろいろなことができるので、できるのかできないのかがわからなかったので、できないと教えてくださったのは非常にありがたいです。 -- sk? 2018-08-07 (火) 07:06:13

selectizeInputを用いてdata.frameの絞り込みを行いたい

sh? (2018-07-26 (木) 17:33:16)

用語があっているか自信がないのですが・・・
Database(postgreSQL)接続してテーブルを参照し、そのカラムの1つを(重複削除して)リスト形式にすることで、selectizeInputの選択肢にしています。

■読み込んだテーブル
|ID|要素|
|1|赤|
|1|黄|
|1|青|
|2|赤|
|2|青|
|3|青|
|3|緑|
|4|赤|
|4|緑|

■selectizeInputの選択肢:テーブルの<要素>カラムをunique化したもの
[赤,黄,青,緑]

この選択肢に対して、「選択内容をすべて含むID」を表示したい場合はどうすれば良いのでしょうか。
或いは絞り込むために、表をもっと加工したほうが良いのでしょうか。。

※例
選択:[赤,青] ⇒ 表示ID:1,2
選択:[緑] ⇒ 表示ID:3,4

  • 方針のみ -- 2018-07-26 (木) 19:13:08
    > data = data.frame(ID=c(1,1,1,2,2,3,3,4,4),
    +   要素=c("赤","黄","青","赤","青","青","緑","赤","緑"))
    > f = function(選択) {
    +   tbl = xtabs(~ID+要素, data)[, 選択, drop = FALSE]
    +   as.integer(rownames(tbl)[rowSums(tbl)==length(選択)])
    + }
    > f(c("赤", "青"))
    [1] 1 2
    > f("緑")
    [1] 3 4
  • ありがとうございます・・・!分割表という概念があるのですね。xtabの用法調べながら試してみます。 -- sh? 2018-07-27 (金) 11:47:47

glmmML()のp値の取得

nkrit? (2018-07-20 (金) 22:01:39)

一般化混合線形モデルのパッケージglmmMLで、
result <- glmmML(status ~ x3?, data = x, family = binomial, cluster = Columns)
のような形で結果を取得して、係数の推定値と係数の標準偏差は、
result$coefficients[2]
result$coef.sd[2]
のように取得できましたが、
z値やそのp値は、どのように取得すれば良いのでしょうか。
result自体は、

              coef se(coef)       z Pr(>|z|)

(Intercept) -0.1233 0.845 -0.1459 0.884
x3? 14.4545 79.892 0.1809 0.856
のような形で表示されてくるので、取得の方法があるのではと思いました。
推定値/標準偏差を後で計算して、2*pnorm()によってP値を取得することもできるかと思いましたが、せっかくもともと表示されているのでそのまま取得したいと思いました。やり方をお教え頂けましたら、大変ありがたく思います。
どうぞ宜しくお願い致します。

念のためresultのstructureを添付させていただきます。

str(result)
List of 18

$ boot                 : num 0
$ converged            : logi TRUE
$ coefficients         : Named num [1:2] -0.123 14.455
 ..- attr(*, "names")= chr [1:2] "(Intercept)" "x[[3]]"
$ coef.sd              : num [1:2] 0.845 79.892
$ sigma                : num 0.0194
$ sigma.sd             : num 31.6
$ variance             : num [1:3, 1:3] 7.14e-01 6.54e-02 5.89e-03 6.54e-02 6.38e+03 ...
$ aic                  : num 28.1
$ bootP                : logi NA
$ deviance             : num 22.1
$ df.residual          : num 13
$ cluster.null.deviance: num 22.1
$ cluster.null.df      : int 14
$ posterior.modes      : num [1:16] -0.00018 -0.000178 -0.000178 -0.000203 -0.000182 ...
$ prior                : chr "gaussian"
$ terms                :Classes 'terms', 'formula'  language status ~ x[[3]]
 .. ..- attr(*, "variables")= language list(status, x[[3]])
 .. ..- attr(*, "factors")= int [1:2, 1] 0 1
 .. .. ..- attr(*, "dimnames")=List of 2
 .. .. .. ..$ : chr [1:2] "status" "x[[3]]"
 .. .. .. ..$ : chr "x[[3]]"
 .. ..- attr(*, "term.labels")= chr "x[[3]]"
 .. ..- attr(*, "order")= int 1
 .. ..- attr(*, "intercept")= int 1
 .. ..- attr(*, "response")= int 1
 .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
 .. ..- attr(*, "predvars")= language list(status, x[[3]])
 .. ..- attr(*, "dataClasses")= Named chr [1:3] "numeric" "numeric" "factor"
 .. .. ..- attr(*, "names")= chr [1:3] "status" "x[[3]]" "(cluster)"
$ info                 : int 0
$ call                 : language glmmML(formula = status ~ x[[3]], family = binomial, data = x, cluster = Columns)
- attr(*, "class")= chr "glmmML"
  • summary.glmmML を読めば,「推定値/標準偏差を後で計算して、2*pnorm()によってP値を取得する」しか方法がないことが分かる。 -- 2018-07-21 (土) 06:08:41
  • ありがとうございます。ふつうのglmでは係数の表記がmatrix形式で、result$coefficients["X1","Pr(>|z|)"]で自然に取得できたので、glmmMLも何か知らないテクニックがあるのかと思いましたが、読めばそれがないことが当然わかるのですね、そこがわかりませんでした。。 -- nkrit? 2018-07-21 (土) 08:55:20
  • ありがとうございます。ふつうのglmでは係数の表記がmatrix形式で、result$coefficients["X1","Pr(>|z|)"]で自然に取得できたので、glmmMLも何か知らないテクニックがあるのかと思いましたが、読めばそれがないことが当然わかるのですね、そこがわかりませんでした。。 -- nkrit? 2018-07-21 (土) 09:25:30

data.frameの差集合を出したい

sh? (2018-07-18 (水) 14:57:23)

テーブルのなかで「指定の文字を含むレコードを除く」のやり方が分からず、
 (1)dbGetQuery?で得られたテーブル1
 (2)テーブル1をfilter,greplで絞り込んだテーブル2(部分一致用)
に対し、テーブル1とテーブル2の差集合をとる、
という手法で実現しようとしていますがやり方がわかりません…

setdiffでは目的の挙動をしてくれないのですが、
関数のチョイスが間違っているのでしょうか。
また、「指定の文字を含むレコードを除く」を一発で実現する方法があるのでしょうか。

ご教授いただければ幸いです。

  • Show examples. -- 2018-07-18 (水) 15:26:41
    > a = data.frame(x = c("abc", "fab", "xyz", "cabs", "xw"), y = c(2, 1, 4, 3, 5))
    > a[!grepl("ab", a$x),]
        x y
    3 xyz 4
    5  xw 5
  • greplの前に否定記号置けたんですね!ありがとうございます、解決しました! -- sh? 2018-07-18 (水) 15:56:57

poisson.test()について

ワイン? (2018-07-18 (水) 06:19:51)

お世話になります。poisson.test()で検定をするためヘルプファイルを確認したところ、以下のような引数になっていました。

poisson.test(x, T = 1, r = 1,alternative = c("two.sided", "less", "greater"), conf.level = 0.95)

 

x  number of events. A vector of length one or two.
T  time base for event count. A vector of length one or two. 
r  hypothesized rate or rate ratio


イベント発生数x=5の場合の検定結果は以下のとおりです。

> poisson.test(x=5)

        Exact Poisson test

data:  5 time base: 1
number of events = 5, time base = 1, p-value = 0.00366
alternative hypothesis: true event rate is not equal to 1
95 percent confidence interval:
  1.623486 11.668332
sample estimates:
event rate 
         5 


質問1:引数rやTの意味が分からないのですが、たとえばx=5,r=2とした場合、真のイベント発生数は10であるという帰無仮説で検定をするのでしょうか

質問2:ポアソン分布で検定をするならば、平均値λを定義しないと分布の形状が決定できないと思うのですが、引数で指定しなのはなぜでしょうか。

お手数ですが、ご回答宜しくお願い致します。

  • poisson分布に興味があるので、いろいろ見てみたのですが(回答ではありません、念のため)、たとえば、1ヶ月(T=1)に5回(x=5)交通事故があったが、この分布がポアソン分布にしたがっているなら、r(=x/T)がどのくらいになりえるのか、rを1とした場合、それはまれなことなのかどうなのかを検定しているのかな、と思いました。ちがっていたらすいません。もともと、どのλのポアソン分布にしたがっているのかわからないのが前提で話を進めているので、λ=xxのような形では明示できないのではと思いました。詳しい方の回答までのつなぎということでおねがいします。。 -- nkrit? 2018-07-22 (日) 09:28:19

オブジェクトのアスキーテキスト表現

nkrit? (2018-07-08 (日) 16:07:20)

> class(data)
[1] "numeric"
> cat(data)
2 2 4 6 4 5 2 3 1 2 0 4

このような数値型のベクトルを、あとで他人が同じデータで試せるように、たとえば、

data <- c(2,2,4,6,4,5,2,3,1,2,0,4)

のような形でスクリプトの一部として保存しておきたいのですが、それぞれの数値の要素の後ろにカンマをつける良い方法が思いつきません。

for (i in 1:50){
 cat(paste0(data[i],sep=","))
}

のようなことをして出力されたものをペーストしてみましたが、きっともっとよい方法があるのではないかと思いまして投稿しました。簡単な方法があれば教えてください。save(), load()で変数自体を保存するのではなく、ベタに保存しておきたいという希望です。初級者コースと聞いて質問致します。

  • データが、d <- c(rep(1:100)) として、write.csv( t(d), "x.txt", quote=F, row.names=F) として保存されたcsvの2行目をコピペしてはどうでしょう。 -- のな? 2018-07-08 (日) 16:29:11
  • Use dput(data) or dput(data, file="foo.dat").
    Or, cat(paste(data, collapse=",")), and CUT&PASTE.-- 2018-07-08 (日) 16:37:23
  • 早速のご回答ありがとうございます!! 最初、writeしちゃおうかと思いましたが、他にあるはずだと思いました。特にdputですが、全然、日本語の検索でひっかからず、知りませんでした。勉強になりました! -- nkrit? 2018-07-08 (日) 16:52:18
  • タイトルなかったり、2回あげてしまったり、まだうまく投稿の仕方もわかっていない初心者からの質問でした。スイマセン。 -- nkrit? 2018-07-08 (日) 17:03:45

フォントサイズを指定して複数のグラフをプロットすると大きさが変わって困っています

nona? (2018-07-08 (日) 14:44:41)

 Rでプロット領域を分割して、かつフォントサイズをpsで指定してプロットさせると、
分割領域が2つまでは指定した通りのフォントサイズになるようなのですが、それ以上になるとフォントが小さくなって困っています。
 領域が狭いのが原因と思い、マウスでウインドウを広げた後に再度プロットしたり、par(mar=)で余白を広げてもダメでした。
どなたか、複数のグラフを1枚にプロットするときに、フォントサイズが指定通りの大きさになる方法をお教えください。
 以下、試した設定です。

  1. フォントサイズの指定がうまくいく
    jpeg("myplot.jpg", height=1000, width=1000)
    par(mfrow=c(1,2), ps=16)
    plot(iris[,1],iris[,2])
    plot(iris[,3],iris[,2])
    dev.off()                

  2. フォントサイズを指定しても、上と比べて字が小さくなる
    jpeg("myplot2.jpg", height=1000, width=1000)
    par(mfrow=c(1,3), ps=16)
    plot(iris[,1],iris[,2])
    plot(iris[,1],iris[,2])
    plot(iris[,1],iris[,2])
    dev.off()      

  3. 軸周辺の余白を広げても変化なし
    jpeg("myplot3.jpg", height=1000, width=1000)
    par(ps = 16, mfrow=c(1,3), mar = c(6, 6, 4, 2))
    plot(iris[,1],iris[,2])
    plot(iris[,1],iris[,2])
    plot(iris[,1],iris[,2])
    dev.off()      

  4. プロット自体を小さくしても変化なし
    jpeg("myplot4.jpg", height=1000, width=1000)
    par(ps = 14, mfrow=c(1,3), pin = c(1,2))
    plot(iris[,1],iris[,2])
    plot(iris[,1],iris[,2])
    plot(iris[,1],iris[,2])
    dev.off()
  • Use cex, not ps. -- 2018-07-08 (日) 15:39:10
  • 回答ありがとうございます。cexで指定するのは存じておりますが、やってみるとやはり、文字の大きさは異なってしまいます -- nona? 2018-07-08 (日) 16:03:04
  • 再度cexで検証すると、1,2まではうまくいきました。しかし、3,4などほかのパラメータをいじるとスペースに余裕がある設定にしても文字が小さくなってしまいました。 -- nona? 2018-07-08 (日) 16:18:05
  • > 3,4などほかのパラメータをいじると
    Do not change. -- 2018-07-08 (日) 16:46:14
  • 仰る通りcexで指定して対処します。ありがとうございました -- nona? 2018-07-08 (日) 20:30:59

分散分析

kx? (2018-07-08 (日) 12:52:20)

valores <- c(1,-1,0,-2,-3,-4,-2,0,1,1,4,0,1,-2,-3,0,4,2,-1,0,-2,0,3,2,2,4,0,-2,0,2,1,-1,2,3,2,1)

supplier <- factor(rep(1:3, each=12))

batches <- factor(rep(rep(1:4, each=3), 3))

のように入力し、

purity <- data.frame(valores,supplier,batches)
としてデータフレームを行い、
このpurityをsummaryでしたいのですが、この時にerrorの要素も入れるためには、

purity <- data.frame(valores,supplier,batches)だけではダメで、どのような操作が必要か分からずに困っています。

どなたかお教えくださいませんでしょうか。

  • 'error' ?? -- 2018-07-08 (日) 15:40:03
  • Rでaovを使って分析した結果をsummaryで表示させたときに、Residual standard errorが含まれないということですね? 含まれないなら別途コピペするしかないです。 -- のな? 2018-07-09 (月) 06:45:20
  • のな様 -- kx? 2018-07-09 (月) 12:12:20
  • のな様 ご連絡ありがとうございます。再度aovで分析する際error(supplier/batches)を追加することでerrorを含ませることができました。ご連絡いただきまして、ありがとうございます。 -- kx? 2018-07-09 (月) 12:14:08
  • 後学の為にもう少し、うまくいった手順を教えてください。。。私の指摘とは違う解決法をしたようですね。 -- のな? 2018-07-09 (月) 22:24:54

ベクトルから連続する値を削除する

(2018-06-25 (月) 23:56:24)

c(1,2,2,3,4,2,2,1,1,1)
のようなベクトルがあった時に
下記のように連続する値をもつ要素を削除する方法はありますでしょうか?
c(1,2,3,4,2,1)

実際のベクトルは非常に長いのでループ処理は避けたいです。

  •  -- 2018-06-26 (火) 06:10:39
    > x = c(1,2,2,3,4,2,2,1,1,1)
    > rle(x)$values
    [1] 1 2 3 4 2 1
  • x[c(TRUE,x[-length(x)]!=x[-1])] -- 名無し? 2018-06-27 (水) 12:35:57
  • ありがとうございます! -- 2018-06-27 (水) 18:56:03

要因ごとの計測

ぐれいぴ? (2018-06-22 (金) 09:29:57)

いろいろ調べたのですが、分からなかったのでお教え願います。

以下のようなデータがあった時に、要因(A、B、・・・)ごとの数を数えて集計したいと思いました。

a

  factor rate

1 A a
2 A a
3 A a
4 A a
5 A a
6 A b
7 A b
8 A b
9 A c
10 A c
11 B a
12 B a
13 B b
14 B b
15 B b
16 B b
17 B b
18 B c
19 B c
20 B d
21 C a
22 C b
23 C b
24 C b
25 C c
26 C c
27 C c
28 C c
29 C d
30 C d

手入力でAについてaは5個、bは3個、・・・と求めることはできるのですが、このデータを読み込ませたときに自動的(A、B、Cとは全く指定しないで)に、

 a b c d

A 5 3 2 0
B 2 5 2 1
C 1 3 4 2

のように出力させることは可能でしょうか? よろしくお願いします。

  • data.frameの各列がfactor化されているのなら、tableだけで可能です。 -- 2018-06-22 (金) 13:08:08
    > a <- data.frame(
    +   factor = rep(LETTERS[1:3], each = 10),
    +   rate = unlist(lapply(list(c(5, 3, 2, 0), c(2, 5, 2, 1), c(1, 3, 4, 2)), function (z) { rep(letters[1:4], z) })))
    > table(a)
          rate
    factor a b c d
         A 5 3 2 0
         B 2 5 2 1
         C 1 3 4 2
  • 早速のご回答ありがとうございます。参考にしてみます。 -- ぐれいぴ? 2018-06-22 (金) 13:23:35

restricted cubic splineの変曲点の個数に関して

jj? (2018-06-08 (金) 01:40:16)

いつも勉強させていただいております。
一年死亡と血圧の関係をrestricted cubic splineを用いて
coxph(Surv(死亡までの時間,死亡イベントありなし) ~ rcs(PP,変曲点), data=dat)として表しました。
rcs関数だと変曲点の個数は最小3個までなのですが、変曲点1つ、2つの場合はどのように処理すればよいでしょうか?他の関数がありますでしょうか?
宜しくお願い致します。


mclust結果の再現性

さくらんぼ? (2018-06-06 (水) 17:02:13)

宜しくお願い致します。

Mclustで繰り返し計算した際の再現性を得たいと考えています。

RdocumentationのMclustの項目に、

initialization
A list containing zero or more of the following components:

subset:
A logical or numeric vector specifying a subset of the data to be used in the initial hierarchical clustering phase. By default no subset is used unless the number of observations exceeds the value specified by mclust.options("subset"). Note that to guarantee exact reproducibility of results a seed must be specified (see set.seed).

とあることは分かったのですが、「再現性を得るためにはシードを設定する」とは具体的にどのようなことでしょうか?

  • とりあえず、R set.seed で検索したらたくさん解説が出てきますよ。また、このRjpwiki内をset.seedで検索してもたくさん使用例が出てきますよ。 -- 2018-06-07 (木) 11:48:21

Steel-Dwass検定がうまくいきません

ジョージ? (2018-06-05 (火) 17:20:05)

最近Rを使用し始めたばかりの初心者です。
よろしくお願いいたします。

多重比較検定を行う必要があり、NSM3 というパッケージの pSDCFglig というコマンドを用いて Steel-Dwass 検定を行おうと考えています。そこで簡単な例を作ってテストしてみました。


すると、計算が異常に重く、Rが応答しないようになりました。
この原因がわからず困っています。解決法のご教授をお願いいたします。
 - - - - - - - -
 まずは,上の方にも書いてあるように,「投稿における注意事項」を読んで,それに従ってください。
 これに従わない場合には,回答が得られにくい場合があります。 

  • 計算機が非力な場合は、もっと能力の高いマシンにした方がよいかもしれませんね。 -- 2018-06-05 (火) 23:45:55
    > system.time(pSDCFlig(dat,grp,method="Exact"))
       ユーザ   システム       経過  
        31.463      0.056     31.523
  • 分かりました。どうもありがとうございます。 -- ジョージ? 2018-06-07 (木) 14:17:08

R3.5.0へのbiOpsインストール

シロツメクサ? (2018-05-30 (水) 15:30:05)

よろしくお願いいたします。

Rの最新バージョンであるR3.5.0にbiOpsをインストールしたいです。
色々調べましたが、どの情報が新しいのかもよくわかりません。

どのページから行えばいいのかなど詳しい方法を教えていただけたらありがたいです。

よろしくお願いいたします。

  • 追記  -- シロツメクサ? 2018-05-30 (水) 16:57:48
  • Windows10です -- シロツメクサ? 2018-05-30 (水) 16:58:26
  • https://cran.ism.ac.jp/package=biOps に書いてあるとおりです. 古いアーカイブからソースを取ってきてそれを自前でビルドするか(もっともそれが出来る人は質問しませんから...), 簡単に実行するなら検証用(再現性)の為に置いてある古いR (https://cran.ism.ac.jp/bin/windows/base/old/ の中の例えばR-2.15)を取ってきて, 古いR用のbiOpsを https://cran-archive.r-project.org/bin/windows/contrib/2.15/ から取ってきてインストールするかです. R-3.5で動かすのはかなり手間が必要だと思います. -- 名無し? 2018-06-01 (金) 14:34:11
  • ありがとうございます。やはりビルドをするか、古いものを使うかになるのですね。 -- シロツメクサ? 2018-06-04 (月) 09:18:34

文字列の取り出し

ムーミン? (2018-05-26 (土) 17:15:31)

よろしくお願いします。

文字列 "1月",~"12月"から月を除いた文字列を作りたく下記のプログラム書きました。
結果は 1月",~"9月","10","11","12"となりました。
どこが間違っているのかわかりません。
どなたか教えてください。


hkan1 <- C("1月",~"12月")
k <- 0
for (r in hkan1) {

 
k <- k + 1
 
 if ( k < 9 ) t1 <- substring(hkan1, 1, 1)


 else  t1 <- substring(hkan1, 1, 2)
 

}

  • if(k=<9){hogehoge}else{hoge}でないかな。k<9だと9未満になってしまう -- 2018-05-28 (月) 12:12:15
  • gsub("月", "",hkan1)でいいのでは? -- 2018-05-28 (月) 15:12:02
  • if for 文使わなくても1つ行で記述できるのですね。有難うございました。 -- ムーミン? 2018-06-01 (金) 15:20:33

礼儀知らずの,無礼者

河童の屁は,河童にあらず,屁である。? (2018-05-25 (金) 21:41:41)

もうね
今後
こんな
礼儀知らずの
質問者には
回答しないことに
します


あるカラムの項目を複数選択することでデータセットを絞り込みたい

シント? (2018-05-22 (火) 13:16:55)

複数カラムを持つデータセットを、そのうち1つのカラムデータを用いて絞り込みをしたいです。

column01 column02 column03 column04
x1 y1 z1 a1
x2 y2 z2 a2
x3 y3 z3 a3
x3 y3 z2 a4
x1 y4 z4 a1
...

というデータセットに対して column01 に着目し、

[x1]
x2
[x3]
[x4]

の選択ボックス的なものを設けて、対象としたいものをクリックして複数条件(or条件)で絞り込むというイメージです。
DT パッケージの Row 選択に近いのですが、あれは data frame や matrix でしか出力できないと読みました。
チェックボックスやラジオボタンで実現するしか無いのでしょうか。。
ご教授頂ければ幸いです。どうぞよろしくお願いします。

  • やりたいことが今ひとつはっきりしないのですが,データフレーム名を d として,column01 が x1 or x3 のデータを抽出するなら
    d[column01 == "x1" | column01 == "x3",] # ] の前のカンマを忘れないように!
    または
    subset(d, column01 == "x1" | column01 == "x3")
    とするので十分でしょう。
    「data frame や matrix でしか出力できない」とありますが,じゃあ,どういう形で出力したいのか?出力方法はいろいろありますよ。
    「チェックボックスやラジオボタンで実現するしか無いのでしょうか」って,素の R だと,そんな方法でやる方が難しいでしょう。 -- 河童の屁は,河童にあらず,屁である。? 2018-05-22 (火) 15:57:07



rbayesianOptimizationパッケージの使い方(エラーへの対処法)を知りたいです。

イルカ? (2018-05-11 (金) 14:12:07)

train.csvとtest.csvはそれぞれ一列目に画像の判定、二列目以降は30*30の画像データを900列(gray scale)で記したものになっています。
DNNでのrbayesianoptimizationパッケージはそこそこ資料もあるので何とかなるのですが、CNNにするとデータの構造が問題になるようで、どう解決すればいいのかわかりません。
もし、分かる方がいらっしゃいましたら教えてくださると助かります。

以下にコードとエラー、traceback結果を載せています。
長くて申し訳ありません。

> options(max.print=2147483647)
> library(mxnet)
> train <- read.csv('C:/Users/User/R/train/getimage_1/train.csv', header = TRUE)
> test <- read.csv('C:/Users/User/R/train/getimage_1/test.csv', header = TRUE)
> train <- data.matrix(train)
> test <- data.matrix(test)
> train.x <- t(train[, -1])
> train.y <- train[, 1]
> test.x <- t(test[, -1])
> test.y <- test[, 1]
> dim <- 30
> channels <- 1
> test_array <- test.x
> dim(test_array) <- c(dim, dim, channels, ncol(test.x))
> train_array <- train.x
> dim(train_array) <- c(dim, dim, channels, ncol(train.x))
> 
> mxnet_bayes <- function(unit1, unit2, unit3, unit4) {
+     # Model
+     data <- mx.symbol.Variable('data')
+     # 1st convolutional layer 5x5 kernel 
+     conv_1 <- mx.symbol.Convolution(data= data, kernel = c(5, 5), num_filter = unit1)
+     tanh_1 <- mx.symbol.Activation(data= conv_1, act_type = "relu")
+     pool_1 <- mx.symbol.Pooling(data = tanh_1, pool_type = "max", kernel = c(2, 2), stride = c(2, 2))
+     # 2nd convolutional layer 5x5 kernel 
+     conv_2 <- mx.symbol.Convolution(data = pool_1, kernel = c(5, 5), num_filter = unit2)
+     tanh_2 <- mx.symbol.Activation(data = conv_2, act_type = "relu")
+     pool_2 <- mx.symbol.Pooling(data = tanh_2, pool_type = "max", kernel = c(2, 2), stride = c(2, 2))
+     # 1st fully connected layer
+     
+     fcl_1 <- mx.symbol.FullyConnected(data = pool_2, num_hidden = unit3)
+     tanh_3 <- mx.symbol.Activation(data = fcl_1, act_type = "tanh")
+     # 2nd fully connected layer
+     fcl_2 <- mx.symbol.FullyConnected(data = tanh_3, num_hidden = unit4)
+     # Output
+     model <- mx.symbol.SoftmaxOutput(data = fcl_2)
+     # Set seed for reproducibility
+     mx.set.seed(5000)
+     # Device used. Sadly not the GPU :-(
+     device <- mx.cpu()
+     model <- mx.model.FeedForward.create(model, X = train_array, y = train.y, 
+                                          ctx = device, 
+                                          num.round = 20, 
+                                          array.batch.size = 100, 
+                                          learning.rate = 0.07, 
+                                          momentum = 0.99, 
+                                          wd = 0.0000001, 
+                                          eval.metric = mx.metric.rmse, 
+                                          epoch.end.callback = mx.callback.log.train.metric(100), verbose=TRUE)
+ preds <- predict(model, test.x)
+ holdout_score <- rmse(preds, test.y)
+ list(Score=-holdout_score, Pred=-holdout_score)
+ }
> library(Metrics)
> library(rBayesianOptimization)
> opt_res <- BayesianOptimization(mxnet_bayes, 
+                                  bounds=list(unit1=c(200L, 300L), 
+                                              unit2=c(10L, 50L), 
+                                              unit3=c(100L, 150L), 
+                                              unit4=c(80L, 150L)), 
+                                  init_points=20, n_iter=1, acq='ei', 
+                                  kappa=2.576, eps=0.0, verbose=TRUE)
Start training with 1 devices
[1] Train-rmse=0.694788357881959
[2] Train-rmse=0.698895939954201
[3] Train-rmse=0.702352686365657
[4] Train-rmse=0.703651129075772
[5] Train-rmse=0.704188237229376
[6] Train-rmse=0.704072243436174
[7] Train-rmse=0.704307457989986
[8] Train-rmse=0.704044050930675
[9] Train-rmse=0.704189340228431
[10] Train-rmse=0.704024917141773
[11] Train-rmse=0.704088730139514
[12] Train-rmse=0.704510854642202
[13] Train-rmse=0.704353378706923
[14] Train-rmse=0.704272895208268
[15] Train-rmse=0.704260412182352
[16] Train-rmse=0.704688375203385
[17] Train-rmse=0.704331001542547
[18] Train-rmse=0.704090463144038
[19] Train-rmse=0.704570122472829
[20] Train-rmse=0.704810586026211
 symbol$infer.shape(list(...)) でエラー: 
  Error in operator convolution10: [08:26:02] d:\program files (x86)\jenkins\workspace\mxnet\mxnet\src\operator\./convolution-inl.h:377: Check failed: dshp.ndim() == 4U (2 vs. 4) Input data should be 4D in batch-num_filter-y-x
Timing stopped at: 721.7 39.89 440.3
> traceback()
16: stop(list(message = "Error in operator convolution10: [08:26:02] d:\\program files (x86)\\jenkins\\workspace\\mxnet\\mxnet\\src\\operator\\./convolution-inl.h:377: Check failed: dshp.ndim() == 4U (2 vs. 4) Input data should be 4D in batch-num_filter-y-x", 
        call = symbol$infer.shape(list(...)), cppstack = list(file = "", 
            line = -1L, stack = "C++ stack not available on this system")))
15: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x000000000858fda0>, 
        dll = list(name = "Rcpp", path = "C:/Users/User/Documents/R/win-library/3.4/Rcpp/libs/x64/Rcpp.dll", 
            dynamicLookup = TRUE, handle = <pointer: 0x000000006abc0000>, 
            info = <pointer: 0x000000000652a390>), numParameters = -1L), 
        <pointer: 0x0000000006522b90>, <pointer: 0x0000000008791920>, 
        .pointer, ...)
14: symbol$infer.shape(list(...))
13: mx.symbol.infer.shape(model$symbol, data = c(dimX[[2]], 1))
12: mx.model.select.layout.predict(X, model)
11: predict.MXFeedForwardModel(model, test.x)
10: predict(model, test.x) at #34
9: (function (unit1, unit2, unit3, unit4) 
   {
       data <- mx.symbol.Variable("data")
       conv_1 <- mx.symbol.Convolution(data = data, kernel = c(5, 
           5), num_filter = unit1)
       tanh_1 <- mx.symbol.Activation(data = conv_1, act_type = "relu")
       pool_1 <- mx.symbol.Pooling(data = tanh_1, pool_type = "max", 
           kernel = c(2, 2), stride = c(2, 2))
       conv_2 <- mx.symbol.Convolution(data = pool_1, kernel = c(5, 
           5), num_filter = unit2)
       tanh_2 <- mx.symbol.Activation(data = conv_2, act_type = "relu")
       pool_2 <- mx.symbol.Pooling(data = tanh_2, pool_type = "max", 
           kernel = c(2, 2), stride = c(2, 2))
       fcl_1 <- mx.symbol.FullyConnected(data = pool_2, num_hidden = unit3)
       tanh_3 <- mx.symbol.Activation(data = fcl_1, act_type = "tanh")
       fcl_2 <- mx.symbol.FullyConnected(data = tanh_3, num_hidden = unit4)
       model <- mx.symbol.SoftmaxOutput(data = fcl_2)
       mx.set.seed(5000)
       device <- mx.cpu()
       model <- mx.model.FeedForward.create(model, X = train_array, 
           y = train.y, ctx = device, num.round = 20, array.batch.size = 100, 
           learning.rate = 0.07, momentum = 0.99, wd = 1e-07, eval.metric = mx.metric.rmse, 
           epoch.end.callback = mx.callback.log.train.metric(100), 
           verbose = TRUE)
       preds <- predict(model, test.x)
       holdout_score <- rmse(preds, test.y)
       list(Score = -holdout_score, Pred = -holdout_score)
   })(unit1 = 296, unit2 = 37, unit3 = 118, unit4 = 95)
8: do.call(what = FUN, args = as.list(This_Par))
7: system.time({
       This_Score_Pred <- do.call(what = FUN, args = as.list(This_Par))
   })
6: eval(expr, pf)
5: eval(expr, pf)
4: withVisible(eval(expr, pf))
3: evalVis(expr)
2: utils::capture.output({
       This_Time <- system.time({
           This_Score_Pred <- do.call(what = FUN, args = as.list(This_Par))
       })
   })
1: BayesianOptimization(mxnet_bayes, bounds = list(unit1 = c(200L, 
       300L), unit2 = c(10L, 50L), unit3 = c(100L, 150L), unit4 = c(80L, 
       150L)), init_points = 20, n_iter = 1, acq = "ei", kappa = 2.576, 
       eps = 0, verbose = TRUE)
  • 何のお役にも立てませんが,パッケージ開発者にご相談なさるのが一番の近道かと??? -- 河童の屁は,河童にあらず,屁である。? 2018-05-11 (金) 22:24:37
  • 回答ありがとうございます。分かりました。製作者に相談してみようと思います。あまり期待はしませんが… -- イルカ? 2018-05-28 (月) 21:53:52

RStudioの言語設定

代理転載人? (2018-05-10 (木) 13:02:56)

[下記はトップページへのコメントに間違って記入された書き込み(2018-05-08 (火) 20:45:31)の転載です]
これからRを使い始めようかと思っている程度の初心者です。RStudioを使いたいのですが私の持っている教科書は初心者向けのはずなのに、あまり親切ではなくインストールがわかりません。私の理解では初めに日本語のRを入れておけばRStudioでは言語を選ぶ必要はないように思うのですが間違っていますか?

  • まず「日本語のRを入れた」という考え方が間違いです。「日本語のR」のようなものは存在せず「国際化されたR」があなたの設定に従って日本語を表示しているだけです。言語環境を指定する環境変数を変更すれば別の言語の表示になります。Rをインストールするときに「日本語」を選択しますが、これはインストーラの表示を日本語にするという意味です。日本語のRが存在する訳ではありません。何語でRを表示するかはあなたの自由です。一方、RStudioの方は国際化が十分ではありません。有志が日本語化に取り組んでいますが、現状では基本的に英語メニューで使うことになります。次に示す例は、日本語OSで環境変数を一時的に変更してRを起動した例です。
    es_ES.UTF-8(スペイン語)の場合
    es_ES01.png
    zh_TW.UTF-8(台湾の中国語)の場合
    zh_TW01.png
    このようにRをインストールしたら最初から他言語も一緒にあるのです。環境変数で日本語を指定すると日本語の表示になります。-- S? 2018-05-10 (木) 13:12:11
  • Rstudio は国際化されていません。エラーメッセージやファイルメニューを独自に日本語化する試みもあるようですが,完成にはほど遠いようです。もともと国際化を考えて作られていないようなので,望み薄でしょう。 -- 河童の屁は,河童にあらず,屁である。? 2018-05-13 (日) 00:02:32

ベクトルの要素のうち奇数のものを表示するプログラム

ムーミン? (2018-05-08 (火) 18:44:48)

よろしくお願いします
下記プログラムをRコマンダーで実行すると

エラー:
<text>

となります、どうしてなのかわかりません教えていただけませんか?

 ar <- c(1,3,5,9,11,17,8,7,21,13)
 for (x in ar) { 
	if (x %% 2 == 0) next
        cat(x," ") 
     }
  • 素のママの R で挙げられた5行を実行すると,ちゃんと結果が出ますか?
    > ar <- c(1,3,5,9,11,17,8,7,21,13)
    > for (x in ar) { 
    +     if (x %% 2 == 0) next
    +     cat(x," ") 
    + }
    1  3  5  9  11  17  7  21  13
    この通りの結果が出たとすれば,R コマンダーの使い方がまずいんでしょうね。
    なんで,R コマンダーを使いたいんですか?素の R を使えば良いと思うんですけどね。
    しょうがないから,R コマンダーを立ち上げてみましたよ(Mac 版なので Windows なら知らない)
    上の欄(R スクリプトの欄)に
    ar <- c(1,3,5,9,11,17,8,7,21,13)
    for (x in ar) { 
    	if (x %% 2 == 0) next
           cat(x," ") 
        }
    って入れて,「実行」ボタンをクリックしたら,出力欄(下の欄)に,
    > ar <- c(1,3,5,9,11,17,8,7,21,13)
    >  for (x in ar) { 
    + 	if (x %% 2 == 0) next
    +         cat(x," ") 
    +      }
    1  3  5  9  11  17  7  21  13  NULL
    って表示されましたけど??
    なんで,末尾が NULL やねん!!!!!!!!!!!!!あほか!
    あなたがやったことをちゃんと記述しないと,回答不能です。(いつもいってるよね)
    私の個人的な意見では,R コマンダーはいわゆるブラックボックスなので,普通に使えば便利なのかも知れないけど,「普通」でない使い方(環境が違うとか,ユーザの経験値が低すぎる??とか)の場合にはかえって害になるのではないかと危惧しているところ(実際,使ってみたけど訳分からんかったという人が多数発生) まずは,R コンソールを素のママで使うというチュートリアルを経て,R コマンダーの使い方の基礎というのをやってみるのがよいのじゃないかな? -- 河童の屁は河童にあらず屁である? 2018-05-10 (木) 20:19:26
  • インターネットに乗っていたものをコピペしたものです。RコマンダーをあきらめRレジスタで実行したところうまくいきました。ありがとうございました。た -- ムーミン? 2018-05-27 (日) 14:32:36

3次元マトリックスの加工

(2018-05-02 (水) 16:08:07)

3次元マトリックスmat[100,100,10]は
100×100の行列で各セル毎に10個の属性値を保有しています。

属性値が最も小さい添え字(1~10)を持つ、
100×100の行列を作成するにはどのようなコードを書けばよいでしょうか?

  • 4x4x3 の小規模な 3 次元配列の例を挙げます。
    > set.seed(123)
    > mat = array(sample(10:15, 48, replace=TRUE), dim=c(4, 4, 3))
    > mat
    , , 1 # 第 3 次元の添え字が 1 の行列
    
         [,1] [,2] [,3] [,4]
    [1,]   11@  15   13   14*     *, @ が何を意味するかは後述
    [2,]   14   10   12   13
    [3,]   12   13   15   10
    [4,]   15   15   12   15
    
    , , 2 # 第 3 次元の添え字が 2 の行列
    
         [,1] [,2] [,3] [,4]
    [1,]   11@  15   13   11*
    [2,]   10   14   14   10
    [3,]   11   13   13   15
    [4,]   15   15   13   15
    
    , , 3 # 第 3 次元の添え字が 3 の行列
    
         [,1] [,2] [,3] [,4]
    [1,]   14@  14   10   10*
    [2,]   14   11   12   10
    [3,]   10   11   12   11
    [4,]   12   11   12   12
    あなたが望むのは,以下のような行列ですか?
    第 1 次元が 1,第 2 次元が 4 のとき,第 3 次元が 1,2,3 のときの値は * で印をつけた (14, 11, 10) なので,最小値 10 の添え字である 3 が要素となる。
    もし,それで良ければ,以下の一行でできる。
    > apply(mat, 1:2, which.min)
         [,1] [,2] [,3] [,4]
    [1,]    1    3    3    3
    [2,]    2    1    1    2
    [3,]    3    3    3    1
    [4,]    3    3    1    3
    なお,最小値が同値の場合は最小の添え字が要素となる。たとえば,第 1 次元が 1,第 2 次元が 1 のとき,第 3 次元が 1,2,3 のときの値は @ で印をつけた (11, 11, 14) なので,最小値 11 は 2 つあり,その添え字は 1 と 2 であるが,小さい方の 1 が要素となる。
    もしそうでないなら,上の例であなたが望む行列がどのようなものかを示してください。 -- 河童の屁は,河童にあらず,屁である。? 2018-05-02 (水) 23:42:05
  • 河童の屁は,河童にあらず,屁である。様、ありがとうございます。非常に参考になります。 -- 2018-05-07 (月) 21:06:29

四分木、八分木を作成することができるパッケージ

(2018-04-30 (月) 01:24:12)

三次元空間からある形状の特徴を抽出するため
四分木もしくは八分木を作成することを試行したいのですが
パッケージはありますでしょうか?


参考書籍

ムーミン? (2018-04-21 (土) 18:25:20)

よろしくお願いします
エクセルからのインポートはできかしたが、そのデーターからグラフを作成しょうとWEBをみて回りましたがさっぱりわかりません。(途中が省かれたり解説なかったり、例がインポートしたものではなかったりなど)”Rによるデーターサイエンス”の本図書館から借りてみましたが上級者向けで理解できませんでした。ホントの初心者です、エクセルからインポートしたデーターをグラフ化することが詳しく解説されている書籍を教えてください。
めげそうです。

  • インポートしたデータであろうがなかろうが,データフレームとして格納されたデータをグラフ化するという点では同じでしょう。
    まずは,どのようなグラフを作りたいのか? -- 河童の屁は,河童にあらず,屁である。? 2018-04-21 (土) 21:54:40
  • http://cse.naro.affrc.go.jp/takezawa/r-tips/r/48.html 参考にどうぞ -- 2018-04-24 (火) 11:15:50
  • 金先生の「Rによるデーターサイエンス」は初心者向けです。初心者向けなので、上級者向けの詳細をばっさり削られて逆に理解できないという状態でしょうか。まずは、書籍よりもRに付属するマニュアルでRグラフィックの基礎の基礎を理解されてはいかがでしょうか。Rをインストールしていればマニュアルを参照できますが、オンラインで閲覧したければ、ここを参照して下さい。具体的には、An Introduction to Rの12 Graphical proceduresになります。日本語訳は間瀬先生がこつこつ作成されています。このWikiシステムのどこかにリンクがあったと思います。なお、視覚化する対象データがもともとエクセルのデータであろうが、SPSSのデータであろうが、視覚化作業には全く関係がないです。 -- S? 2018-04-24 (火) 11:20:52
  • http://cse.naro.affrc.go.jp/takezawa/r-tips/r/48.html 参考にどうぞ -- 2018-04-24 (火) 14:56:56
  • 回答ありがとうございます -- ムーミン? 2018-04-24 (火) 18:29:02

R言語へのエクセルからのデーターのインポート

ムーミン? (2018-04-18 (水) 20:14:01)

どこに書き込んだらよいかわからなかったので新規投稿に書きました
よろしくお願いします。
手順は
1)data4=read.table("clipboard",header=TRUE)を記述、
2)データーをコーピー
3) 1)をエンターキーを押しました。
又は
1)、2)を逆にし実行

下記が結果です。何も起こりません


R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。
一定の条件に従えば、自由にこれを再配布することができます。
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。

R は多くの貢献者による共同プロジェクトです。
詳しくは 'contributors()' と入力してください。
また、R や R のパッケージを出版物で引用する際の形式については
'citation()' と入力してください。

'demo()' と入力すればデモをみることができます。
'help()' とすればオンラインヘルプが出ます。
'help.start()' で HTML ブラウザによるヘルプがみられます。
'q()' と入力すれば R を終了します。

data4=read.table("clipboard",header=TRUE)

  • その操作の後,単に data4 と 5 文字入力した後に,リターンキーを押したらどうなりますか??? -- 河童の屁は,河童にあらず,屁である。? 2018-04-18 (水) 22:04:59
  • ありがとうございます。できました。 -- ムーミン? 2018-04-19 (木) 18:22:36

症例対照研究のロジスティック回帰について

AAA? (2018-04-17 (火) 22:42:38)

お世話になります。
glm関数で症例対照研究のロジスティック回帰を実行しようとしたのですが、症例対照研究は症例群と対照群のサンプル数を任意に設定できるので、生存率やオッズの算出に意味はないという資料がありました。ロジスティック回帰式の左辺はlog(p/(1-p))で対数オッズを意味していますので、そもそも回帰することができないということになるでしょうか。
glmに目的変数と説明変数を与えると計算結果自体は出力されるのですが、根本的に前提が間違っているような気がしています。

宜しくお願いします。

  • 症例群と対照群を併せて分析しようとしているのでしょうか?ならば,サンプルサイズの差が結果に影響するのは当たり前でしょう。
    普通は,別々に分析して結果(パラメータ,オッズ比など)の違いを比較・検討するんじゃないですか? -- 河童の屁は,河童にあらず,屁である。? 2018-04-18 (水) 09:19:07

R言語へのエクセルからのデーターのインポート

ムーミン? (2018-04-17 (火) 18:19:45)

よろしくお願いします
下記データーをRコンソール、にクリップボードを介してインポートする方法を教えてください。

R言語のインストールは下記のページを参考にして行いました
https://qiita.com/FukuharaYohei/items/8e0ddd0af11132031355

インポートは下記ページを参考にしましたがうまくいきません
http://monge.tec.fukuoka-u.ac.jp/r_analysis/input_clipbord00.html

月 電気量 電気料金
1月 306  8184
2月 335  9065
3月 341  9311

R言語のバージョンは3.4.4

ウィンドウズ10でエクセルのバージョンは1803です

  • いやー,ビックリしたわ。初級Q&A15へ投稿したんだねえ。
    あなたが,どういう風にしたのか,その結果どのようなエラーメッセージが出たのか,コンソールの出力をそのままコピーして,ここに,ペーストしなさい!!! -- 河童の屁は,河童にあらず,屁である。? 2018-04-17 (火) 20:45:31
  • よろしくお願いします。 -- ムーミン? 2018-04-18 (水) 20:02:06
  • R version 3.4.4 (2018-03-15) -- "Someone to Lean On" -- ムーミン? 2018-04-18 (水) 20:03:18

2つのデータをlmで回帰したときに傾き切片が有意差を持つかどうか

kagakuma? (2018-04-13 (金) 12:00:31)

両対数を取ると明らかに線形関数に乗るデータがあります。
このデータをlm()で線形回帰したところR2が0.95でフィッティングしました。
このデータ群は2つあり、線形回帰したのですが、いずれも違う直線に乗りました。 この結果から傾きと切片が2組でますが、両者の傾きと切片に有意差があるかどうかを確かめる方法はございませんでしょうか。
Rの機能で閉じていると助かりますが、手計算でもできるならやろうと思います。
単純には両者を引き算してそれの傾きと切片を求めるという方法も考えましたが、正当性がわかりません。 よろしくおねがいします。

  • 共分散分析というものです。http://www.snap-tck.com/room04/c01/stat/stat99/stat0204.pdf に重回帰分析との関連が詳しく書かれています。lm でできます。 -- 河童の屁は,河童にあらず,屁である。? 2018-04-13 (金) 14:26:25
  • 河童様:ご返事ありがとうございます。lmでできる、という言葉の意味が取れなかったので重ねての質問になりますが、二群をクラス分けして一本のデータにしたものをanova(aov(value~factor))に掛けるのと等価の処理でしょうか。共分散分析は勉強したはずなのに思いつきませんでした。精進します。 -- kagakuma? 2018-04-13 (金) 17:40:43
  • データを挙げて,結果も示すという分析例があるのですから,まずは,その例題を lm を使ってやってみれば良いと思います。
    ただ,それをここで書いて見せてあげても仕方ないでしょうということ。 -- 河童の屁は,河童にあらず,屁である。? 2018-04-13 (金) 19:09:49

入門機械学習による異常検知p137

ksaki? (2018-04-12 (木) 14:42:13)

お世話になります。

井手剛先生著の
入門 機械学習による異常検知のp137の実行例5.1を真似て、以下のコマンドを入力しましたが、エラーが出ます。
何が間違っているか教えてください。
以下、入力したコマンド

> data <- read.table("R_r1.csv",header=T)
> data
                                                  a.b.c.d.e.f.g.h.i.j.k
1         P2201A1,-4.78,11,1.44,-0.48,3.83,-10.05,15.79,4.31,1.44,18.66
2     P2201A2,-3.35,-21.53,-11,8.13,-6.22,18.66,-2.87,-0.96,2.39,-11.48
3            P2201A3,2.88,3.63,4.69,0.61,1.21,1.36,-1.67,1.06,1.06,1.67
4       P2201A4,-0.48,3.35,-5.26,-6.22,-3.35,-4.78,0.48,-0.48,1.91,3.35
5    P2201H1,-14.35,-5.26,0,-11.96,-7.66,14.35,-11.48,-5.26,14.35,-0.48
6  P2201H2,12.92,13.87,0.96,13.4,-0.96,1.91,-12.44,-13.87,-10.05,-14.35
7           P2201H3,7.18,3.83,3.35,0,-4.31,-8.61,-12.44,-3.35,1.44,5.74
8     P2201H4,-7.18,-16.27,-16.27,-5.26,2.39,8.61,12.92,12.92,6.7,-0.48
9        P2201V1,-6.7,-3.83,-12.92,2.39,2.39,2.87,12.44,2.87,1.91,-8.13
10   P2201V2,-3.03,-18.17,22.71,-27.25,27.25,-15.14,0,-10.6,-18.17,21.2
11      P2201V3,-4.31,-0.48,1.91,-1.44,-5.26,1.44,3.35,-8.61,-6.7,-2.87
12        P2201V4,0.48,2.39,1.91,3.35,-1.44,-7.18,-5.74,-1.91,7.66,7.66
13       P2202A1,-1.44,-0.96,3.35,1.91,-0.48,0.96,-3.35,-2.39,0.48,-6.7
14         P2202A2,-3.83,0,1.44,-6.22,-3.35,0.96,-1.44,0.48,-0.48,-1.91
15      P2202A3,0.61,-1.36,-0.15,0.61,0.76,-2.57,-2.12,-2.57,-0.91,0.76
16        P2202A4,0.45,2.27,-0.45,1.21,0.15,-0.15,0.76,-1.06,-1.21,1.06
17       P2202H1,5.26,-4.31,-0.48,-1.44,-3.83,0.48,0.48,5.74,-0.48,0.48
18         P2202H2,-0.96,-1.91,-0.96,-5.74,0,1.91,-5.74,1.44,-1.91,-6.7
19       P2202H3,-1.67,0.45,-0.45,2.57,2.27,-1.21,-0.61,-0.3,-0.15,0.45
> cc <- c("a","b","c","d","e","f","g","h","i","j","k")
> mask <- is.element(colnames(data),cc)
> Xc <- t(scale(data[,mask]))
> colnames(Xc) <- t(data[,"a"])
Error in `[.data.frame`(data, , "a") :  未定義の列が選ばれました

コマンド、ここまで
〇環境設定

> sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932   
[3] LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
[5] LC_TIME=Japanese_Japan.932    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] MASS_7.3-45

loaded via a namespace (and not attached):
[1] tools_3.3.3
  • 入力ファイル "R_r1.csv" は自分で入力したのでしょうか。data の次の出力を見ると,19 行のデータは,"a.b.c.d.e.f.g.h.i.j.k" という名前を持つ文字型の1変数として入力されていますよ。その原因のひとつは,変数名の行が "," ではなく "." で区切られていること。もう一つは,もし read.table を使うのなら,sep="," を加えるか,あるいは read.table ではなく read.csv を使う(ファイル名からいうと,read.csv を使う前提なのだろうけど)。 -- 河童の屁は,河童にあらず,屁である。? 2018-04-12 (木) 18:13:01
    > data = read.csv("R_r1.csv") # read.csv は header = TRUE はデフォルトなので,指定不要
    > data
             a      b      c      d      e     f      g      h      i      j      k
    1  P2201A1  -4.78  11.00   1.44  -0.48  3.83 -10.05  15.79   4.31   1.44  18.66
    2  P2201A2  -3.35 -21.53 -11.00   8.13 -6.22  18.66  -2.87  -0.96   2.39 -11.48
       中略
    18 P2202H2  -0.96  -1.91  -0.96  -5.74  0.00   1.91  -5.74   1.44  -1.91  -6.70
    19 P2202H3  -1.67   0.45  -0.45   2.57  2.27  -1.21  -0.61  -0.30  -0.15   0.45
    > cc = c("b","c","d","e","f","g","h","i","j","k") # 以下の意図はよく分からないけど,"a" は外さないとエラーが出るよ
    > # cc = letters[2:11] とも書けるけど
    > mask = is.element(colnames(data),cc)
    > Xc = t(scale(data[,mask]))
    > # Xc = t(scale(data[, 2:11])) で十分。mask や cc なんか使わなくても良いし
    > colnames(Xc) = t(data[,"a"]) # t は不要
  • 河童様、教えて頂き、感謝の気持ちでいっぱいです。
    "R_r1.csv"は自分で入力しました。テキストで開くと","になっています。が、"."表示になっているのを理解しました。 -- ksaki? 2018-04-12 (木) 18:40:19
  • 「テキストで開くと","になっています」
    そうですか。もしかして,全角のカンマ(あるいは,半角だけど ascii 文字でないカンマ)で入力されていませんか? -- 河童の屁は,河童にあらず,屁である。? 2018-04-12 (木) 18:44:09
  • エクセルに張り付けた測定記録に追加で自分で各行にabc..を追加して作ったcsvなので、何故上段の1行目と2行目で"."と","なっているのか頭の整理ができません。試して後ほどご報告いたします。 -- ksaki? 2018-04-12 (木) 23:46:33


添付ファイル: filetest.wmf 4件 [詳細] filetest.emf 3件 [詳細] filetest-wmf.png 4件 [詳細] filelastsave.txt 39件 [詳細] filees_ES01.png 49件 [詳細] filezh_TW01.png 41件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Google
WWW を検索 OKADAJP.ORG を検索
Last-modified: 2018-08-13 (月) 08:46:44 (1d)