【R言語】統計解析フリーソフトR 第5章【GNU R】at MATH
【R言語】統計解析フリーソフトR 第5章【GNU R】 - 暇つぶし2ch355:342
14/10/10 01:45:15.16 .net
追記。
例えば、
$ echo -e "x1,x2¥n11,A¥n22,B¥n' ',C¥n33,D" > test.csv
$ cat test.csv
x1,x2
11,A
22,B
' ',C
33,D
というcsvファイルがあったとして、
> read.csv("test.csv")
x1 x2
1 11 A
2 22 B
3 ' ' C
4 33 D
> class(read.csv("test.csv")$x1)
[1] "factor"
というように、数値型にならずに因子型になる。
表計算ソフトではx1の3番目は空白なので見えない。

356:132人目の素数さん
14/10/10 02:04:46.33 .net
再現できるcsvくれ

357:132人目の素数さん
14/10/10 10:54:24.22 .net
>>338
どうもPCA pf MEANは2相の主成分分析の様です。
CPfuncで計算されるfitにあたるものが累積寄与率にあたるものなのでしょうか?

358:132人目の素数さん
14/10/11 21:18:27.38 .net
質問です。データフレームの列名の一部を変更したいのですがどのように操作すれば宜しいでしょうか。
よろしくお願いします。

359:132人目の素数さん
14/10/11 21:28:06.62 .net
>>348
> (dat <- data.frame(x = 1:3, y = month.name[1:3], z = LETTERS[1:3]))
x y z
1 1 January A
2 2 February B
3 3 March C
というデータフレームがあったとして、
yをhogeに替えるなら、
> names(dat)[2] <- "hoge"
> dat
x hoge z
1 1 January A
2 2 February B
3 3 March C
例では1つの列名だけだが、もちろん、複数の列名を同時に替えることもできる。

360:132人目の素数さん
14/10/12 09:52:52.95 .net
>>349さん
ありがとうございます!

もう一つ質問させてください。
例えば以下のようなデータフレームがあったとします。
data1、data2、data3、・・・

下の繰り返し処理の中で、ループの中でdata1、data2、・・・のデータフレーム
を読み込みたいのですが、どのように記述すればよいのでしょうか。

#for (i in 1:5) {



361: } 下記のように記述したのですがうまくいきませんでした。 (pastedateにはdata1という名前のデータが入ってしまい、以前に入ってたデータは消えてしまっているようです。) pastedate <- paste("data",i,", sep = "") sumdata<-rbind(XXXXX,pastedate) よろしくお願いします。



362:132人目の素数さん
14/10/12 10:51:17.99 .net
>>350
いまいち状況が分からない。
data1, data2, ...をファイルから読み込みたいのか、
それとも、単に既存のデータフレーム(data1, data2, ...)をrbindで連結したいのか。

後者なら、
> data1 <- data2 <- data3 <- data.frame(x = runif(3))
というデータフレームがあったとして、
> alldata <- lapply(paste0("data", 1:3), get)
という感じでリスト化して、
> Reduce(rbind, alldata)
とすれば結合できる。
他にも、いろいろな連結方法があると思うけど、
自分は、シリーズになっているデータフレームは常にリスト化して運用するので、
do.call()やReduce()で連結している。

363:132人目の素数さん
14/10/13 19:28:38.06 .net
## S4 method for signature 'formula'
ksvm(x, data = NULL, ..., subset, na.action = na.omit, scaled = TRUE)

ってヘルプに書いてあったのに、xがformulaのときここに出てない引数を使えるんですけどどうしてですか?
一つ和訳がわからなかったのですが、...(説明:additional parameters for the low level fitting function)が関係あるんでしょうか

364:132人目の素数さん
14/10/13 22:19:35.86 .net
>>352
引数「...」は下請け関数にそのまま渡す引数。
kvsm()は直接使わないけど、
下請け関数が使う引数を指定できますよという意味。
もし「...」がなければ、kvsm()が指定した引数以外を指定するとエラーになる。
例えば、
> f <- function(x = 1){return(x)}
という関数を定義して実行すると、
> f()
[1] 1
となるが、x以外を指定するとエラーになる。
> f(y = 2)
以下にエラー f(y = 2) : 使われていない引数 (y = 2)

でも「...」を追加するとエラーにならない。
> f <- function(x = 1, ...){return(x)}
> f(y = 2)
[1] 1

365:132人目の素数さん
14/10/14 00:34:29.21 .net
>>353
なるほど。
たとえば
「ksvm(x,data=y,cross=n)」→分析結果(分類法、誤分類率、n重交差確認法による誤分類率)
 (「ksvm(x,data=y)」(xはyの列の内クラスを表わす列を指す)→分析結果(分類法、誤分類率))
というようにヘルプの形式に明示してないけど使えたcrossは、総称的関数ksvmからこの時呼ばれた下請け関数に渡され、使われたのですね
すっきりしましたありがとう!

366:132人目の素数さん
14/10/14 23:54:05.52 .net
テキストファイルから、Rのデータフレームに格納することを考えています。

例えば2014年10月10日の血液検査のデータが
WBC 4900, RBC 470, Plt 47.3, ALT 32, CRP 7.2, AdV -, Ur.WBC 3+
このようなテキストデータで与えられたとします。
これを読み込んでデータフレームに次のように格納するにはどのようにすればよいでしょうか。
data.frame(20141010, WBC)=4900, data.frame(20141010, RBC)=470, .........
Rだけでやるより、ほかの言語で読み込んで、Rに渡す方がいいでしょうか。
その後で、そのデータフレームからopen office calcのworksheetの相当するセルに値を入れることを考えています。そこはR4Calcでできるかと考えているのですが。アドバイスお願いし

367:132人目の素数さん
14/10/15 01:33:53.41 .net
>>355
お、同業者が来た。

そのままcsvとして読み込んで、データを分離しちゃえば?
2行のtmp.csvがあったとして、
> (a <- read.csv("/tmp/tmp.csv", header = FALSE))
V1 V2 V3 V4 V5 V6 V7
1 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
2 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
とdata.frameにする。変な空白が混入したので前処理。空白が混入しなければ不要。
> library(stringr)
> (b <- t(apply(a, 1, str_trim)))
V1 V2 V3 V4 V5 V6 V7
[1,] "WBC 4900" "RBC 470" "Plt 47.3" "ALT 32" "CRP 7.2" "AdV -" "Ur.WBC 3+"
[2,] "WBC 4900" "RBC 470" "Plt 47.3" "ALT 32" "CRP 7.2" "AdV -" "Ur.WBC 3+"
さて、次にstrsplit()で分離して、必要なところだけを回収する。
> sapply(apply(b, 2, strsplit, split = " "), function(x){sapply(x, function(y){y[2]})})
V1 V2 V3 V4 V5 V6 V7
[1,] "4900" "470" "47.3" "32" "7.2" "-" "3+"
[2,] "4900" "470" "47.3" "32" "7.2" "-" "3+"

368:354
14/10/15 01:43:41.07 .net
read.csv()のstrip.whiteオプションの存在を忘れていた。
これを指定すれば前処理は不要。
> (a <- read.csv("tmp.csv", header = FALSE, strip.white = TRUE))
V1 V2 V3 V4 V5 V6 V7
1 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
2 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
> (b <- sapply(apply(a, 2, strsplit, split = " "), function(x){sapply(x, function(y){y[2]})}))
V1 V2 V3 V4 V5 V6 V7
[1,] "4900" "470" "47.3" "32" "7.2" "-" "3+"
[2,] "4900" "470" "47.3" "32" "7.2" "-" "3+"
> b <- data.frame(b)
> names(b) <- c("WBC", "RBC", "Plt", "ALT", "CRP", "AdV", "Ur.WBC")
> b
WBC RBC Plt ALT CRP AdV Ur.WBC
1 4900 470 47.3 32 7.2 - 3+
2 4900 470 47.3 32 7.2 - 3+

369:132人目の素数さん
14/10/15 10:12:33.01 .net
追記。いまいち意図がくみ取れないけど、
「20141010」は行名ということかな。
そして、「WBC 4900, RBC 470, Plt 47.3, ALT 32, CRP 7.2, AdV -, Ur.WBC 3+」は2014年10月10日のデータで、
次のデータ行は2014年10月11日だったりするのかな?
それなら、2014年10月10日と翌日のデータが入ったtmp.csvがあったとして、
> a <- read.csv("tmp.csv", header = FALSE, strip.white = TRUE)
> b <- sapply(apply(a, 2, strsplit, split = " "), function(x){sapply(x, function(y){y[2]})})
> b <- data.frame(b, row.names = seq(20141010, length.out = nrow(b)))
> names(b) <- c("WBC", "RBC", "Plt", "ALT", "CRP", "AdV", "Ur.WBC")
> b
WBC RBC Plt ALT CRP AdV Ur.WBC
20141010 4900 470 47.3 32 7.2 - 3+
20141011 4900 470 47.3 32 7.2 - 3+

こんな感じかな。

370:132人目の素数さん
14/10/16 21:16:18.81 .net
356さん

有難うございます。
apply関数の使い方をべんきょうしてみます。
また質問させてください。

371:132人目の素数さん
14/10/19 01:06:21.07 .net
RをUSBにインストールしたいんですが
一応あるブログを参考にインストールできたのですが
パッケージをインストールしたさいにUSBに保存されないのはどうしたらいいでしょうか?

372:132人目の素数さん
14/10/19 04:47:02.51 .net
>>360
パッケージのインストール先をUSBに指定すればいいと思うよ

373:132人目の素数さん
14/10/19 12:40:27.56 .net
>>361
それはどうしたら指定できますか?
パッケージをインストールすると
ダウンロードされたパッケージは、以下にあります
C:\Users\NEC-PCuser\AppData\Local\Temp\Rtmpgdg0TT\downloaded_packages

と表示されるのでUSBに保存されていないようです

374:132人目の素数さん
14/10/19 21:13:07.40 .net
>>362
>それはどうしたら指定できますか?
いろいろな方法があるけど、
とりあえずは、install.pacakges()のlibオプションでインストール先を指定すればどうだい?
見たところ、Windows? USBブータブルなLinuxの話じゃ無かったの?
「あるブログ」とか話をぼかさずにちゃんと伝わるように説明しようよ。
Windowsのパスの仕組みはよく知らないけど、例えば、DとかEとかなら、
> install.packages(c("hoge", "fuga"), lib = "D:/library", dependencies = TRUE)
とか。Windowsのパス表記が間違っていたらすまん。
Windowsのパス区切り記号は変態的だから、normalizePath()とかで正常化してやる必要があるかも。
逐次的に指定するのではなく、恒久的にパッケージのインストール先をUSBにしたいなら、
$HOME/.Rprofile に「.libParhs(USB内のインストール先)」を書いておく。
install.packages()のlibオプションが省略された場合、.libPaths()の最初の要素が使われるので、
それをR起動時に設定してしまうという方法。

375:132人目の素数さん
14/10/19 23:13:16.92 .net
あるブログはこれです
URLリンク(d.hatena.ne.jp)

パッケージは常にUSB内のR/R-3.1.1の中に保存されるようにしたいです
パッケージだけでなくRに関するすべてのファイルをUSB内に保存できるようにしたいです

376:132人目の素数さん
14/10/20 00:31:14.89 .net
>>364
install.packages()でlibを指定し�


377:ト、ちゃんとUSB内にインストールされるのことは確認したの? また、そのブログには環境変数R_LIBSをちゃんと設定するように書いてあるけど。 | 環境変数R_LIBSを設定することで、追加したライブラリがUSBメモリ内に | インストールされるようにする ドライブレターが毎度変わるから、R起動前にカレントディレクトリを変更して、 R_LIBSをフルパスではなく相対パスにするのはさすがだ思った。 ブログに書いてある通りに、バージョンを読み替えながら設定したら、 うまくいきそうなんだけどなぁ。 私は、Winodwsユーザじゃないので、Rの話ではないWindows操作の話なら、 他の方にパス。



378:132人目の素数さん
14/10/20 09:10:02.77 .net
なにも設定してないと自分のホームディレクトリのRのディレクトリ内にパッケージがインストールされるはずだけど。
LinuxならそれをシンボリックリンクでUSBのところにして上手くUSBのところに保存されるようにするとか
mount --bind
してやれば希望の動作になりそうな気がするけどな。

379:132人目の素数さん
14/10/20 09:35:40.16 .net
>>366
仕様が変わったの?
ホームディレクトリにRのディレクトリを作らなければ、システム側にインストールされるはずだけど。
ホームディレクトリに、Rのディレクトリが存在する場合は、そちらが優先されるらしいが。
RStudioとかは、ホームディレクトリ内にRのディレクトリを勝手に掘っちゃうので迷惑する。

380:132人目の素数さん
14/10/20 14:04:45.85 .net
>>367
ユーザでinstall.package("hogehoge")
したら普通に自分のホームディレクトリにRを作ってその中にさらにディレクトリ、その中にインストールしてくるけどな。
それをmount --bind であらかじめusbの該当のディレクトリに繋げとけば楽だと思うけどな。

381:132人目の素数さん
14/10/20 15:04:48.08 .net
>>368
新ユーザを作成して試してみた。
$ R --vanilla
[snip]
> install.packages("A3")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
install.packages("A3") 中で警告がありました:
'lib = "/usr/local/lib/R/site-library"' は書き込み可能ではありません
Would you like to use a personal library instead? (y/n) n
以下にエラー install.packages("A3") :
パッケージをインストール出来ませんでした

以上により、.libPaths()[1]は、
ホームディレクトリのRディレクトリではなく、
/usr/local/lib/R/site-library であることが確認できた訳だけど、
「personal libraryを作る」に y と回答すれば、
確かに勝手にディレクトリを掘りそうだな。
拒否すれば勝手なことはされないけど。
拒否せずに許可するのが「普通」であれば、>>368 は正しいな。

$HOMEを汚されたくない人 (system-wideにしたい人)は、
/usr/local/lib/R/site-libraryにsetgidが立っているから、
このグループに自分のユーザ名を追加することだね。

382:132人目の素数さん
14/10/20 15:23:14.73 .net
>>369
Linuxならシンボリックリンクはっとくとか
mount --bindしとけば汚れないよ。

383:132人目の素数さん
14/10/20 15:37:36.61 .net
>>370
「Linuxなら」とか、元質問者であるWindowsユーザを置いてけぼり

384:132人目の素数さん
14/10/20 17:50:22.09 .net
はよWindows消してLinuxとかBSDにしてしまえ!
そうすれば寿命伸びるよPCの。
無理してバージョンアップで肥大化するOSのためにハードを強化する必要なくなるし。

385:132人目の素数さん
14/10/20 18:05:27.32 .net
話題がズレてるし

386:132人目の素数さん
14/10/21 13:38:03.44 .net
362です
R_LIBS=の後にインストール先を入力すればいいってことですか?

387:132人目の素数さん
14/10/21 13:57:37.01 .net
>>374
その方法も正しいです。
ただし、USBだと、ドライブレターがころころ変わるので、
インストール先を設定するのが難しく、
そこを乗り越える必要があります。
どうやって乗り越えるのか、その一例が、あなたが示したブログに書かれています。

念のために、申し添えますが、R_LIBSはOSの環境変数です。



388:i出来なくはないけど)Rの操作によって設定するものではありません。



389:132人目の素数さん
14/10/21 20:46:25.64 .net
>>374
消せるディレクトリを指定して容量の少ないパッケージをインストールしてみたら話はやいんだよ。
それでどういうディレクトリ掘られるかわかるでしょ。
あとはインストールしたいディレクトに微調整すればOK。

Linuxなら上に書いたようにmount --bindとかシンボリックリンクでいけるけど
Windowsにはそういうの無いの?

390:132人目の素数さん
14/10/22 09:43:07.07 .net
R言語に興味をもったので
Debian GNU Linuxにインストールしようと思っているのですが、
軽量なバイナリラッパーなるlittlerというパッケージを見つけました。
URLリンク(packages.debian.org)
この解説文を読んでもいまいちよく分からない(汗)
「環境無しの R 言語」っていったい......

391:132人目の素数さん
14/10/22 10:15:09.81 .net
>>377
Rじゃないrは便利ですよ。
bcで十分と考える人には必要ないですが、
例えば、sin(10)っていくつだったけと思ったとき、
$ echo 'print(sin(10))' |r
[1] -0.5440211
とすれば、Rを起動してなくても即座に結果を得ることが出来る。

また、統計的検定なら、
A群(145/300)とB群(157/250)の比率の差を検定するとき、
わざわざRを起動しなくても、rに流し込めばその場で結果を得ることが出来る。
$ echo 'print(prop.test(c(145, 157), c(300,250)))' |r

2-sample test for equality of proportions with continuity correction

data: c(145, 157) out of c(300, 250)
X-squared = 10.9497, df = 1, p-value = 0.0009362
alternative hypothesis: two.sided
95 percent confidence interval:
-0.23071879 -0.05861454
sample estimates:
prop 1 prop 2
0.4833333 0.6280000

392:132人目の素数さん
14/10/22 14:56:44.89 .net
>>377
実行ファイルとして

/usr/bin/r

がイストールされるみたい。

シェルスクリプトのように

#!/usr/bin/r

ではじまる ファイルでRのコマンドが実行できるみたい。

俺もインストールした知らなかったありがとう。

>>378 さんの使い方も参考になった。

インストールして以下で内容物確認

dpkg -L littler

あとは

man r

読むとわかりやすいよ。

393:132人目の素数さん
14/10/22 16:55:55.04 .net
>>379
スクリプト言語として使うなら、
littlerよりも、
#!/usr/bin/Rscript
の方がよいとどこかで読んだ気がする。

394:132人目の素数さん
14/10/22 18:47:04.91 .net
>>380
情報サンクス。
その理由覚えてる?

395:132人目の素数さん 転載せんといてや ©2ch.net
14/10/22 18:53:32.32 .net


396:132人目の素数さん
14/10/22 19:49:15.42 .net
3次元ヒストグラムを書いたプログラム例などありませんでしょうか?

397:132人目の素数さん
14/10/22 19:53:36.88 .net
>>383
3次元というのは、3変量という意味か、2変量で立体的にしたヒストグラムか、
どんなものをイメージしているの?

398:132人目の素数さん
14/10/22 21:02:55.71 .net
>>384
レスありがとうございます
2変量?でしょうか?
x,yの値があって、z軸に頻度分布、のような。
ありますでしょうか?

399:132人目の素数さん
14/10/23 09:49:48.69 .net
>>385
なるほど。では、手作業でやるとこんな感じかな。自分で関数化して使って。
> d <- data.frame(x1 = rnorm(100), x2 = rnorm(100))
というデータがあったとして、
> h1 <- hist(d$x1, plot = FALSE)
> h2 <- hist(d$x2, plot = FALSE)
> c1 <- cut(d$x1, h1$breaks, right = FALSE)
> c2 <- cut(d$x2, h2$breaks, right = FALSE)
> table(c1, c2)
c2
c1 [-4,-3) [-3,-2) [-2,-1) [-1,0) [0,1) [1,2) [2,3)
[-3,-2.5) 0 0 0 0 1 0 0
[-2.5,-2) 0 0 0 1 1 1 1
[-2,-1.5) 0 0 0 1 3 1 0
[-1.5,-1) 0 1 0 2 2 0 0
[-1,-0.5) 0 0 3 4 8 2 0
[-0.5,0) 1 0 2 10 5 0 1
[0,0.5) 0 0 2 2 12 1 0
[0.5,1) 0 0 3 6 6 0 0
[1,1.5) 0 0 0 4 4 1 0
[1.5,2) 0 0 1 1 1 3 0
[2,2.5) 0 0 0 0 1 0 0
[2.5,3) 0 0 0 0 1 0 0
と2次元の度数分布表が作成できるから、scatterplot3dパッケージでプロット。
> library(scatterplot3d)
> scatterplot3d(as.data.frame(table(c1, c2)), type="h", lwd=5, pch=" ")
期待したのと違うなら、もっと具体的に説明して。

400:132人目の素数さん
14/10/24 00:35:10.19 .net
>>386
ありがとうございます。
まさに、これです。大変助かりました。
いただいたサンプル利用させていただきます。
ありがとうございました。

401:132人目の素数さん
14/11/01 13:07:52.20 .net
R 3.1.2 来た!
Win用バイナリはあるけど、MacOSX用バイナリはまだない。
Ubuntu PPAにも来ていない。Debianもまだ。

402:132人目の素数さん
14/11/01 13:14:46.47 .net
自分確認すべきだけど大きな変更あった?
便利になる機能ある?
バグフィックスがメインかな?

403:132人目の素数さん
14/11/01 14:14:04.49 .net
>>389
OS XでCLIのRを使っている人はXQuartzがらみで要確認だけど、
Yosemite対応もしているみたいだし、それほど変更点はなさそう。
WindowsのR.exeは64bit固定になったみたいだが、関係ないので読み飛ばした。
個人的に注目したのはembedFonts()のformat引数の値が、
今までNULLだったけど"ps2write"に変わったことぐらい。

404:132人目の素数さん
14/11/01 14:34:26.67 .net
なんだかんだ言っている間に、OS X版バイナリが来た。
でも、Snow Leopard版とMarvericks版のみ

405:132人目の素数さん
14/11/01 18:25:44.30 .net
>>390
情報ありがとう。

406:132人目の素数さん
14/11/01 21:28:02.43 .net
Macおじさん多いんだね

407:132人目の素数さん
14/11/02 10:26:48.46 .net
Linux Debian Sidだとすでに3.1.2のパッケージ昨日の段階で供給されてたみたい。
今確認したら3.1.2になってた。

408:132人目の素数さん
14/11/14 13:20:33.78 .net
plot()の技術的な質問失礼します

plot(iris$Sepal.Width, iris$Sepal.Length, col=c(2,3,4)[iris$Species])
のように記述すれば質的変数で点の色分けが出来ますが、
x種はy色、と明示的に記述する方法などありますか?

(質的変数の名前順を確認して色を割り振る、最初に質的変数毎に分けておいてpointsする、などで
簡単に実現できるので絶対必要というわけではありませんが、何か簡単な書き様があるのではと気になっています)

409:132人目の素数さん
14/11/14 14:27:53.65 .net
>>395
せっかく簡単に色指定できるようにRで工夫されているのに、
いちいちx種はy色とか個別に指定すると逆に面倒な気がするが、
次のようにすれば、x種はy色と指定できる。

> cols <- character(nrow(iris))
> cols <- NA
> cols[iris$Species == "setosa"] <- "orange4"
> cols[iris$Species == "versicolor"] <- "violetred"
> cols[iris$Species == "virginica"] <- "tan4"
> plot(iris$Sepal.Width, iris$Sepal.Length, col = cols)

410:394
14/11/14 14:50:16.66 .net
別解として、事前に色対応のデータフレームを作成しているとすると、
次のような感じ。
> (col.table <- data.frame(Species = c("setosa", "versicolor", "virginica"), cols = c("orange4", "violetred", "tan4")))
Species cols
1 setosa


411: orange4 2 versicolor violetred 3 virginica tan4 という対応テーブル(データフレーム)が事前にあったとして、 > iris2 <- merge(iris, col.table, x.all = TRUE) > with(iris2, plot(Sepal.Width, Sepal.Length, col = cols))



412:132人目の素数さん
14/11/16 11:43:38.42 .net
>>396-397
レス遅くなりまして申し訳ありません
参考にさせていただきます、ありがとうございました

413:132人目の素数さん
14/11/28 18:55:36.77 .net
積分を含んだ関数のフィッティングってできますか?
例えば、
f(x) = ∫^1_x {a*t^b/√(t^2 - x^2)}dt
0<x<1
のようなやつです

414:132人目の素数さん
14/11/28 22:08:21.00 .net
>>399
与えられた関数ではたぶんt^2-x^2が負になることがあるのがめんどいので変えました
できてるかな?コードが汚いのは勘弁して下さい

SS<-function(par){
a=par[1]
b=par[2]
t=par[3]
fx<-c()
for(m in 1:10){
fx<-c(fx,integrate(f,lower=1,upper=x[m],a=a,b=b,t=t)$value)
}
print(fx)
return(sum((y-fx)^2))
}

f<-function(x,a,b,t){
#if(0<x && x<1){return(0)}
#return((a*t^b)/(sqrt(t^2-x^2)))
return(a*x^b+t*log(x))
}

x<-1+2*runif(10)
y<-x+runif(10)
SS(c(1,1,1))

fx=integrate(f,lower=1,upper=12,a=1,b=0.5,t=1.2)
optim(c(1,1,1),SS)

415:132人目の素数さん
14/11/28 22:48:41.97 .net
うひょー、こんなパッとできるのですか!
ありがとうございます

416:132人目の素数さん
14/11/29 10:22:04.83 .net
統数研のR研究会配信ハジマタ
URLリンク(www.ustream.tv)

417:132人目の素数さん
14/11/29 23:44:13.84 .net
>402
生中継のみで録画なしか。
出遅れた。残念。

418:132人目の素数さん
14/12/04 14:43:19.93 .net
optim関数を実行した時に「オブジェクトは 'double' に変換できません」というエラーが出ます。
何が原因でしょうか?

以下コード

data <- read.table("RSRF_mc150k_80kev.txt", header=FALSE, sep="\t")

f <- function(par){
b <- par[1]
c <- par[2]
d <- par[3]
l <- par[4]
f <- par[5]
g <- par[6]
h <- par[7]
m <- par[8]
V1 <- data[1]
V2 <- data[2]
w <- (-V2 + 1 - ((b*exp(-f*V1))/(1-exp(-f)) + (c*exp(-g*V1))/(1-exp(-g)) + (d*exp(-h*V1)/(1-exp(-h)) + (l*exp(-m*V1))/(1-exp(-m))))^2 )
return(w)
}

init <- c(1.611e-5, 1.468e-4, 9.19e-4, 1.48e-2, 0.0023, 0.0150, 0.0827, 0.5786)
opt <- optim(par=init, fn=f, NULL, method = "SANN")

以下にエラー optim(par = init, fn = f, NULL, method = "SANN") :
(list) オブジェクトは 'double' に変換できません

419:132人目の素数さん
14/12/04 17:47:16.92 .net
optim関数は関係ない
V1、V2にデータフレームが入っているからエラーが出る、たぶん

(参考) irisを例にstr()で構造を確認してみれば、これらで構造が違うことが解る
str(iris[1])
str(iris[,1])

420:132人目の素数さん
14/12/04 18:05:52.54 .net
>>405
ありがとうございます。
エラーメッセージが変わりました。↓
optim の目的関数が 1 つではなくて 1135 個の結果を評価しています

nlsのかわりとしてoptimを使ったのですが、nlsのように連立方程式を解くというようなことはできないということでしょうか?

421:132人目の素数さん
14/12/04 18:38:19.66 .net
どうせ目的関数がベクトルになってんだろ

422:132人目の素数さん
14/12/04 18:38:26.17 .net

V1 <- data[,1]
V2 <- data[,2]
w <- (-V2 + 1 - ((b*exp(-f*V1))/(1-exp(-f)) + (c*exp(-g*V1))/(1-exp(-g)) + (d*exp(-h*V1)/(1-exp(-h)) + (l*exp(-m*V1))/(1-exp(-m))))^2 )
www <- sum(w^2)
return(www)
}


これじゃダメ?

423:132人目の素数さん
14/12/05 13:04:42.76 .net
>>408 ありがとうございます。 できました



425:132人目の素数さん
14/12/09 06:11:09.54 .net
1-100の整数を、すべて一回ずつランダムな順番で表示(発生?)させたいのですが
そのような関数はありますでしょうか

426:132人目の素数さん
14/12/09 08:16:28.42 .net
sample(1:00)でいいんじゃない?

427:132人目の素数さん
14/12/09 08:17:46.35 .net
sample(1:100,100)

428:132人目の素数さん
14/12/09 09:17:00.86 .net
>>412
全て1回ずつなら、引数sizeは省略可能だよ。

429:408
14/12/10 07:25:42.80 .net
ありがとうございます!

430:ほげ
14/12/10 19:10:41.03 .net
Rの入力画面が“+”になったままです。
通常の“>”にするにはどうすればいいのでしょうか。
ご教示ください。

431:ほげ
14/12/10 19:17:12.30 .net
”STOP”をクリックして解決しました。
どうも失礼しました。

432:132人目の素数さん
14/12/10 19:21:13.85 .net
別に失礼しなくて良いから死ね

433:132人目の素数さん
14/12/10 20:30:40.69 .net
いちおう答えておくと入力が足りないというメッセージだから足りないものを補うか、
ESCキーで逃げる。

434:132人目の素数さん
14/12/24 08:45:38.47 .net
macさいこう~

435:132人目の素数さん
15/01/04 21:18:39.64 81Vyorrh.net
【趣味】 確率・統計をマスターし、色々分析して遊びたい。 いい勉強法を教えて!
スレリンク(poverty板)

436:132人目の素数さん
15/01/09 07:40:53.73 33u48+dB.net
みなさんCPU何使ってますか?

わたしはintel i5 の2coreですが
nnetや深層学習で遅さを感じるように
なりました

437:132人目の素数さん
15/01/09 13:10:53.64 QZWUgko2.net
>>421
バッチとかシェルとか使って
次々作業を自動でするようにするとか

もっと高いCPU使うとか
並列処理させてみるとか。

安いんだから台数増やして対応したらどう?

俺は基本的に一番安いノートを使ってる。
昔は高いCPUとか部品とか購入してたけど
数年たつと安物に速度も容量も負けるので
バカらしくなって高級部品は買わずに
一番安い機種を購入することにしてるよ。

438:至高の狐独文武学者cafeーSHO-GUNイスラム金融系最高指導者遅獄先生
15/01/09 14:20:10.06 fTyN8wof.net
統計学は太兵を失い敗退し、時代遅れだが、
虚実混合実数確率集合論は、世界二十世紀最後の最難関
だったから、一読の価値あり。兵法書としても。
戦場で探せるかな。盗み読み。走り読み。

439:至高の狐独文武学者cafeーSHO-GUNイスラム金融系最高指導者遅獄先生
15/01/09 14:21:12.56 fTyN8wof.net
大兵。

440:132人目の素数さん
15/01/09 21:55:55.72 QZWUgko2.net
そうか?
数学の中で統計って結構役にたつよ。
特にコンピューター関係で非常に役にたってるじゃん。

441:132人目の素数さん
15/01/30 22:02:06.23 HgcHm/47.net
Rを使ったクラスター分析についてわからないことがあるので教えて下さい。
Rコマンダーを使ってクラスター分析をウォード法、ユークリッド距離を使って行いました。
その際クラスター数を何個にするべきかクラスターの距離?を使って判断したいんですが
どのようにその距離を数値化することができますか。
JMPを使ったクラスター分析では例えば
クラスター数が1の場合、距離という項目が10.389
2の場合は10.256
3は10.132
4は9.618
5は9.578
というような形


442:で明記されます。 この時3と4の間の距離が大きいのでクラスター数を3個にするといった判断基準を行ってきました。 これと同様のことをRを使って行いたいのですが、調べてもわかりません。 上記をする方法を教えていただきたいです。お願いします。



443:132人目の素数さん
15/01/31 11:20:45.92 SiAB+M7V.net
>>426
一般的に、
回答できない人 → Rコマンダーユーザ層
回答できる人 → 普通のRユーザ層
と思われるので、
Rコマンダーをメニューから実行したときに出現するコマンドを書いた方が
回答を得やすいと思うよ。

444:132人目の素数さん
15/01/31 12:50:36.50 C1UilbcO.net
ネット検索しろよ
ツール名 やりたい事
でネット検索したら簡単に調べれるだろ。
osoパッケージ入れてキーワード検索するのも良いかも。

445:132人目の素数さん
15/01/31 21:48:54.24 Epu3UWxe.net
30名限定!銀座で飲みながら「人生でやりたいことを諦めない」パラレルキャリアについて語り合うイベントを開催!
ってのがヒットした

446:132人目の素数さん
15/01/31 21:56:57.08 RXQnWHQr.net
>>429
どんだけ検索ヘタッピなんだよ。
メンドクセーやつ。
もっと馬鹿向けのツールにかえた方が良いよ。

447:132人目の素数さん
15/01/31 22:10:30.13 BZTS7IuP.net
自分が馬鹿なのを人のせいにするなよ

448:132人目の素数さん
15/01/31 23:00:35.19 19ip1QXI.net
>>431
自分で使えないようなツールつかうなよ。
検索すらできないおバカ!

449:132人目の素数さん
15/02/02 10:21:50.97 GNP7Ha4V.net
卒論シーズンになると子供が湧くなw
罵倒している子供も、質問している子供と50歩100歩
>>426
クラスターの個数を決めるなら、例えばNbClustパッケージを使うとか
ウォード法、ユークリッド距離を使った例
> data <- iris[,-c(5)]
> library(NbClust)
> res <- NbClust(data, diss=NULL, distance = "euclidean", min.nc=2, max.nc=6,
+ method = "ward.D2", index = "kl")
All 150 observations were used.
> print(res)
$All.index
2 3 4 5 6
5.6522 4.1503 1.5906 1.5679 2.5556
$Best.nc
Number_clusters Value_Index
2.0000 5.6522
$Best.partition
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[38] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[112] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[149] 2 2

450:419
15/02/13 17:34:03.21 Wh9OMXZ9.net
>>422
ご助言ありがとう
高いスペックのPC買うより
安いのを複数で並列にしますわ

451:132人目の素数さん
15/02/28 23:45:01.63 GpLE1gOh.net
424です
自分なりに調べてみたんですがやはりわからないです
どうやら私が知りたいのはクラスター分析の履歴で、距離の結合過程のようです
すみませんがどなたか教えてください、困ってます
>433さんのはたぶん距離の結合過程ではないようです、でもありがとうございました
>427さん
コマンドで表すと
HClust.1 <- hclust(dist(model.matrix(~-1 +j+k+n+m, A)) , method= "ward")
plot(HClust.1, main= "Cluster Dendrogram for Solution HClust.1", xlab= "Observation Number in Data Set A", sub="Method=ward; Distance=euclidian")
です

452:132人目の素数さん
15/03/01 00:45:41.96 TyvXqwym.net
>>435
昔ネット検索したときに
距離の関数を自作すれば計算してくれるパッケージあったけどな
ちゃんと検索しろよ
面倒くさくなって検索ちゃんとしとらんだろ
自分でプログラム作れないなら
検索くらいしっかりしろよ

453:132人目の素数さん
15/03/01 00:59:38.46 Dyp/TkMy.net
>>436
色々と検索してみたんですがダメでした
検索するときに重要なキーワードとかあったら教えて下さい

454:132人目の素数さん
15/03/01 02:47:57.26 h7tGl4X4.net
>>435
?dist

455:132人目の素数さん
15/03/01 08:37:56.17 TyvXqwym.net
>>437
途中であきらめとるだろ
俺がみつけれとんだし
まず検索しなおせよ

456:132人目の素数さん
15/03/01 08:38:24.79 TyvXqwym.net
>>437
そんな手間かけずにみつけれたぞ
なんて名前のパッケージか忘れたけど

457:132人目の素数さん
15/03/01 14:06:11.66 Dyp/TkMy.net
>>438
distではないようです
>>439
>>440
この1ヶ月検索してみたのですがダメでした
ヒントだけでも教えて下さいお願いします

458:132人目の素数さん
15/03/01 18:26:16.55 08QQ84Zx.net
>>441
OSOパッケージつかうと検索はしやすい

459:132人目の素数さん
15/03/01 19:12:17.23 Dyp/TkMy.net
424です
いやもう限界です
もう自力では無理です
教えてくださいお願いします

460:132人目の素数さん
15/03/01 20:55:32.53 08QQ84Zx.net
>>443
検索すらまともにできんのかよ
この馬鹿は
検索は忍耐力だけ
耐えんかい!

461:132人目の素数さん
15/03/01 21:02:05.44 Dyp/TkMy.net
>>444
忍耐力というか
もう検索するキーワードがなくてどうしようもないんです
お願いですから教えて下さい

462:132人目の素数さん
15/03/01 23:12:06.71 wKImvE5a.net
>>426
Rではできないと思う
おれはあきらめて、Rubyでプログラムを作ったよ
プログラミングは得意だと思っていたが二か月かかった
ネットで探しても、参考になるようなソースは見つからなかったから
かなり大変だった
健闘を祈る!

463:132人目の素数さん
15/03/01 23:46:59.39 g1rgEkfW.net
自分がした苦労はさせたくなる

464:132人目の素数さん
15/03/02 00:43:34.19 TMpvWbpk.net
RubyGemsが特別CRANより優れている訳でもないから
Rubyで書ける計算はRでも書けると思うのだが?

465:132人目の素数さん
15/03/02 01:25:28.92 YeRETgHB.net
達成感は味わえるからね
山登り同じ

466:132人目の素数さん
15/03/20 12:16:48.76 +ItMXnMR.net
すみません、多数の住所を巡回しなきゃならないんですが、
このソフトでTSPを解けるんですかね?
住所を緯度経度に変換するところまではなんとかやりましたが、
最短で廻るルートがさっぱりで...
よろしくお願いします

467:132人目の素数さん
15/03/23 07:31:24.96 3O0PhtPn.net
R TSP でぐぐれ

468:132人目の素数さん
15/03/25 10:00:13.13 YSqNlYmo.net
GPUに勝てない

469:132人目の素数さん
15/03/25 11:42:34.89 XFYYJvdYK
R初心者です
nls.lmの使い方を教えてください


いままでフィッティングはエクセルでやってましたが
誤差評価をつけろと言われてRを始めたところ全然分からなくて困っています


時間に対して観測値が変化するのを普通の式でフィッティングするのはできるのですが
一定の時間の後に式が変化するときの場合分けはどうしたらよいのでしょうか?
具体的に言うと、1回投与に対するフィッティングはできるけど
数回に分けて投与する場合のフィッティングが分かりません

推定値をgetPred(parS, t)という関数で求めるとして、
getPred関数中のif文でtの値による場合分けをして
サブルーチンを呼び出


470:そうと思ったのですがnls.lm中にはtの値はベクトルで渡されていてnls.lmが最少化する目的関数の計算中に変化させているt[?]の状態でサブルーチンに渡すことができず単純にtをgetPredに渡してif(t<1)とかやると「条件の長さが2以上なので・・・」というエラーメッセージがでてしまいますうまく場合分けする方法はあるでしょうか



471:453
15/03/25 11:49:25.36 XFYYJvdYK
補足です
if文ではなく、
getPredの中に場合分けに対応した複数の式を書いて
それぞれの頭に
ceiling(min(1,max(0,t-1)))*
のような0か1になる場合分けの式を書き込んでもnls.lmは分けてくれませんでした

472:132人目の素数さん
15/03/25 14:04:02.55 CH/w1DxE.net
違うところに書き込んでたようなので移動しました
453 :132人目の素数さん:2015/03/25(水) 11:42:34.89 ID:XFYYJvdYK
R初心者です
nls.lmの使い方を教えてください
いままでフィッティングはエクセルでやってましたが
誤差評価をつけろと言われてRを始めたところ全然分からなくて困っています
時間に対して観測値が変化するのを普通の式でフィッティングするのはできるのですが
一定の時間の後に式が変化するときの場合分けはどうしたらよいのでしょうか?
具体的に言うと、1回投与に対するフィッティングはできるけど
数回に分けて投与する場合のフィッティングが分かりません
推定値をgetPred(parS, t)という関数で求めるとして、
getPred関数中のif文でtの値による場合分けをして
サブルーチンを呼び出そうと思ったのですが
nls.lm中にはtの値はベクトルで渡されていて
nls.lmが最少化する目的関数の計算中に変化させているt[?]の状態で
サブルーチンに渡すことができず
単純にtをgetPredに渡してif(t<1)とかやると
「条件の長さが2以上なので・・・」
というエラーメッセージがでてしまいます
うまく場合分けする方法はあるでしょうか
454 :453:2015/03/25(水) 11:49:25.36 ID:XFYYJvdYK
補足です
if文ではなく、
getPredの中に場合分けに対応した複数の式を書いて
それぞれの頭に
ceiling(min(1,max(0,t-1)))*
のような0か1になる場合分けの式を書き込んでもnls.lmは分けてくれませんでした

473:132人目の素数さん
15/03/25 16:15:22.17 CFPzIfdW.net
>>455
数千種のパッケージがある中、使用パッケージの前置きなしに、突然nls.lmと言われても、
ほぼ誰も答えられないと思うぞ。minpack.lmなんて初めて聞いた。有名なのか?
MWE (Minimal Working Example)の提示もなしに、言葉だけの説明だと、検証して助言する気にもなれない。
> day <- 1:100
> y <- 2 * day + 3
> yeps <- y + rnorm(length(y), sd = 2)
> dat <- data.frame(day, yeps)
1日から50日はyeps ~ a + b * day
51日から100日は yeps ~ a + b * I(day^2)だとすると、
> nls(yeps ~ a + b * day, data = dat[dat$day < 51, ], start = list(a = 0.12345, b = 0.54321))
Nonlinear regression model
model: yeps ~ a + b * day
data: dat[dat$day < 51, ]
a b
3.01 2.00
[以下省略]
> nls(yeps ~ a + b * I(day^2), data = dat[dat$day > 50, ], start = list(a = 0.12345, b = 0.54321))
Nonlinear regression model
model: yeps ~ a + b * I(day^2)
data: dat[dat$day > 50, ]
a b
76.3125 0.0131
[以下省略]
質問の意図と全く違うなら、説明の仕方が悪い。

474:132人目の素数さん
15/03/25 19:45:53.39 daif1ydQ.net
誤差評価もエクセルでやれば解決すると思います。

475:451
15/03/25 21:08:40.68 CH/w1DxE.net
さっそくのお返事ありがとうございます
説明が悪くて申し訳ありません
nls.lmはnlsよりエラーが出にくいとネットで見たので
エラーの対処もなかなかできない自分にとってはそのほうがいいかと思って使ってみました
実際にはnls.lmもエラーが出てそれほど良いわけでもなさそうでした
プログラミング自体初心者なものでMWEがうまくつくれず
どうしても非常に長くなってしまうので
データの概形が分かるグラフだけを下に貼ってみました
これで分かりますでしょうか
t<-c(1:100)
pre<- c(1:100)
k1=0.3
k2=0.1
graphplot<-function(x){
for(i in 1:x){
pre[i]<-
k1/(k1-k2)*(exp(1)^(-k2*t[i])-exp(1)^(-k1*t[i]))+
ceiling(min(1,max(0,t[i]-7)))*k1/(k1-k2)*(exp(1)^(-k2*(t[i]-7))-exp(1)^(-k1*(t[i]-7)))+
ceiling(min(1,max(0,t[i]-21)))*k1/(k1-k2)*(exp(1)^(-k2*(t[i]-21))-exp(1)^(-k1*(t[i]-21)))+
ceiling(min(1,max(0,t[i]-35)))*k1/(k1-k2)*(exp(1)^(-k2*(t[i]-35))-exp(1)^(-k1*(t[i]-35)))
par(new=T)
plot(t[i],pre[i],xlim=c(0,100),ylim=c(-5,5))
}
}
graphplot(100)
続きます

476:451
15/03/25 21:09:15.05 CH/w1DxE.net
続きです
変なコーディングで意味不明かもしれませんが
不規則な(0,7,21,35日目での)投与で患者さんの反応が4つ山のグラフになっているイメージです



477:アれを、上の関数で使っている k1/(k1-k2)*(exp(1)^(-k2*t[i])-exp(1)^(-k1*t[i])) という 直列につながった2ボックスのモデルでフィッティングして 患者さんの体内にあるそれぞれのボックスの代謝排出速度定数k1,k2を得ようとしています その方法で悩んでいるところです エクセルでパラメータの誤差を得る方法も分からなくてRを試していました>>457 とりあえず1回投与のような単純なものはRのnlsでパラメータと誤差を得ることができました エクセルでパラメータの誤差を簡単に得る方法はどこかに出てますでしょうか? 探し方が悪いのかなかなか見つかりません・・・



478:451
15/03/25 21:12:02.62 CH/w1DxE.net
y軸の指定をミスってグラフがつぶれ気味になってしまいました
すみません

479:132人目の素数さん
15/03/26 00:47:26.80 0DqIuYAV.net
あん?結局目的は達成できてるの?何ができてないの?

480:451
15/03/26 09:49:43.09 6GQExkhD.net
目的はパラメータk1, k2を誤差つきで得ることです
>>458のようなデータ(例えばこれにランダムな誤差を与えたもの)を
>>459のような2ボックスモデルで解析してk1,k2を決定したいのですが
nlsやnls.lmでうまくできなくて困っています
>>458のデータは4回投与なので4つの山の合成のような形になっています
>>458のモデルはそのままだと1つの山なので
そのままnlsなどでに突っ込んでもフィッティングできません
なにか方法はないでしょうか

481:132人目の素数さん
15/03/26 10:59:53.11 i5xJoGQy.net
とりあえず >>458をrewriteしてみた
t <- 1:100; n <- max(t)
k1 <- 0.3; k2 <- 0.1
x <- x0 <- k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t))
x[(1 + 7):n] <- x[(1 + 7):n] + x0[1:(n - 7)]
x[(1 + 21):n] <- x[(1 + 21):n] + x0[1:(n - 21)]
x[(1 + 35):n] <- x[(1 + 35):n] + x0[1:(n - 35)]
plot(t, x, type = "l")
で、区間毎に別々にk1, k2を求めて標準誤差または信頼区間を計算するのはだめで、
k1とk2が統合されなければならないってこと?

482:451
15/03/26 11:37:43.13 6GQExkhD.net
k1,k2は生理的なものなので、それぞれが常に一定である必要があります
例えると、ある薬品が血中に投与された時の
k1は薬物の代謝分解速度定数、k2は腎臓からの排出速度定数で
これらが一定な状態の被験者に
薬物を4回投与した時のデータが>>458のグラフになります
つまり、
知りたいのは人間の体の代謝能力の方で
ある時間における代謝の状態ではないということです
なかなかうまく説明できなくてすみません

483:451
15/03/26 11:43:15.31 6GQExkhD.net
例えと書きましたが、
実際に排出速度定数k1,k2の直列2コンパートメントの微分方程式を解いたものが
k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t)) です
>>463のように短く書けるのですね
勉強になります。ありがとうございます

484:132人目の素数さん
15/03/26 11:48:35.14 i5xJoGQy.net
例えば、こんな感じなのか。
t <- 1:100; n <- max(t)
k1 <- 0.3; k2 <- 0.1
x <- x0 <- k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t))
x[(1 + 7):n] <- x[(1 + 7):n] + x0[1:(n - 7)]
x[(1 + 21):n] <- x[(1 + 21):n] + x0[1:(n - 21)]
x[(1 + 35):n] <- x[(1 + 35):n] + x0[1:(n - 35)]
s1 <- ceiling(pmin(1, pmax(0, t - 7)))
s2 <- ceiling(pmin(1, pmax(0, t - 21)))
s3 <- ceiling(pmin(1, pmax(0, t - 35)))
m1 <- nls(x ~ k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t)) +
s1 * k1/(k1-k2)*(exp(-k2*(t - 7))-exp(-k1*(t - 7))) +
s2 * k1/(k1-k2)*(exp(-k2*(t - 21))-exp(-k1*(t - 21))) +
s3 * k1/(k1-k2)*(exp(-k2*(t - 35))-exp(-k1*(t - 35))),
data = data.frame(t, x, s1, s2, s3),
start = list(k1 = 0.4, k2 = 0.2),
control = list(warnOnly = TRUE))
summary(m1)
confint(m1)
confint()が計算できないみたいだけど。

485:451
15/03/26 12:17:33.16 6GQExkhD.net
ありがとうございます
nlsに与える式の中にtの値での場合分けがあってもちゃんと答えが得られるんですね
式の与え方は自分がやってうまくいかなかったときと同じようなので
tの渡し方とかその辺でなにか間違っていたのかもしれません
(式の複雑さとか、tが整数ではないとか細かい違いはたくさんありますけれど)

うまくいく例>>466を教えていただいたので
それをベースに改変すればできるはずと分かり助かりました
先が見えたのでエラーがでても


486:めげずにデバッグできそうです 有難うございます



487:132人目の素数さん
15/03/26 12:41:20.44 i5xJoGQy.net
>>467
s1, s2, s3は、君のやり方を踏襲したけど、
t <- 1:100; n <- max(t)
s1 <- rep(0:1, c(7, n - 7))
s2 <- rep(0:1, c(21, n - 21))
s3 <- rep(0:1, c(35, n - 35))
でいいと思うぞ。

488:451
15/03/26 16:02:29.70 6GQExkhD.net
教えていただいたテンプレをベースにやったらうまく解析できました
自分でやってうまくいかなかった理由は
ceiling(min(1,max(0,t[i]-7)))*
という部分だと判明しました
投与時間t[i]は実数で欠損値もないので
なぜmin,maxがNaNを返すのかまだ理解できていませんが
とにかく、pmin,pmaxだと大丈夫で、min,maxだと
「計算結果がNaNになりました・・・」というエラーになるようです

nlsやnls.lmの使い方の問題ではなく
自分の式の書き方の問題でした
おさわがせして申し訳ありません
いろいろ教えていただいた皆様、有難うございました
>>463, >>468の書き方も勉強になりました

489:132人目の素数さん
15/03/26 17:15:55.08 i5xJoGQy.net
>>469
pmin()とmin()は用途が違う。
> (a <- round(rnorm(10)) + 5)
[1] 4 6 6 5 3 5 6 2 4 4
> min(1:10, a)
[1] 1
> pmin(1:10, a)
[1] 1 2 3 4 3 5 6 2 4 4
> max(1:10, a)
[1] 10
> pmax(1:10, a)
[1] 4 6 6 5 5 6 7 8 9 10

490:451
15/03/26 20:05:22.29 6GQExkhD.net
t[i]じゃなくてtになってました。なのでpmin,pmaxですね
こまごま間違いがあるもの、というか
自分がミスが多すぎるのでしょうか・・・
うまくいったと思っても
別の被験者のデータを入れたらまたエラーになってしまいました
いまのところ5人中3人でNaNエラー
エクセルで得た推定値を入れていて初期値での推定値が測定値にはほぼ一致しているのに何故NaNエラー?
まだまだデバッグにかかりそうです・・・

491:451
15/03/26 20:35:12.43 6GQExkhD.net
結局6人のデータのうち3人がエラーでした
測定値とエクセルの推定値をプロットして回帰すると
エラーがでなかった方でy=0.81-0.93, r2=0.97-0.99
エラーが出た方で0.84-1.15,r2=0.85-0.98
異常値があるわけでもないしデータの問題ではなさそうです
nlsに入れた式の部分をコンソールにコピーすれば
測定値にほど近い正の実数が並ぶし
なにが問題なんでしょう・・・

492:451
15/03/26 21:46:40.01 6GQExkhD.net
nlsでエラーが出るデータはnls.lmでもエラーになりました
nls.lmはエラーが出にくいという話でしたが
そういう問題じゃないところでのエラーか

493:132人目の素数さん
15/03/28 00:27:44.38 7TzTwEzf.net
Mさんだとエラーが出ていしまう男性は多数、
私の数字の概念をはるかに超えている醜さ。
無限大の脂肪率で、人格障害で恋愛成就する確率は0.1の1億乗。
半径50M以上は近づかないでほしい。(証明おわり)

494:132人目の素数さん
15/03/28 17:37:38.27 XFZ1n0Q5.net
人間の価値は顔とコミュ力の二変数関数と良い近似を見せる

495:132人目の素数さん
15/03/30 06:33:40.56 Dd802dndL
初歩的なことですが、質問させてください。
CSVファイルの複数のsheetから、それぞれsheet名を指定して、dataframeに取り込むことはできるでしょうか。
自分で調べた感じでは、各sheetを複数のcsvファイルとして保存し直して、list.files()などで読み込むことはできるような書き込みは見つけたのですが。
よろしく、おねがいします。

496:132人目の素数さん
15/04/07 04:22:35.92 IdhiGeWV.net
質問です
whi.e(i in 1:10)
{
 p[i] = i
 i = i + 1
}
print(p)
とすろとオブジェクトpがありませんというエラーが出るのですが、
pというオブジェクトが生成されてない原因は何なのでしょうか

497:132人目の素数さん
15/04/07 05:06:06.46 IdhiGeWV.net
while


498:じゃなくてforです



499:132人目の素数さん
15/04/07 05:55:48.97 IdhiGeWV.net
先にp=0書いたらできて自然解決しましたすみません

500:132人目の素数さん
15/04/21 01:49:43.71 SSLCOHB9.net
統計解析言語の最新版「R 3.2.0」がリリース、Windows向けに新たにインストーラーを提供
URLリンク(codezine.jp)

501:132人目の素数さん
15/04/28 00:49:48.08 Tq0doYMv.net
行列の特定の要素に任意の値を代入するにはどうすればいいですか
a[1,2]=10としてもエラーがでます
これに関してググりまくったんですがなぜか全然出てこなくて困ってます

502:132人目の素数さん
15/04/28 04:52:33.71 zIHTG37z.net
>>481
> a<- matrix(1:16,nrow=4)
> a
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> a[1,2]<- 10
エラー出ないよ。
エラーメッセージを載せたら?

503:132人目の素数さん
15/04/29 00:43:49.64 0Y6+dzWb.net
>>482
どうやら既存の要素でないと書き換えることができないことを知らず、
その表でいうとa[1,5]=10みたいなことをやっていて、
しっかりnrow=5で行と要素を存在させてから命令したらうまくいきました
ありがとうございました

504:132人目の素数さん
15/05/03 00:28:40.00 pU39guuD.net
いまESS使ってるんですが、Rstudioとどっちが使いやすいでしょうか?
Rstudioに乗り換えようか迷っています

505:132人目の素数さん
15/05/04 18:48:25.55 QlLBoMAo.net
共存させてるけど。

506:132人目の素数さん
15/05/16 15:00:59.37 NHBCVBFJ.net
2次元形式で文字を表示させるにはどうすればいいでしょうか
cd/m^2の2乗を表示したいです

507:132人目の素数さん
15/05/19 10:20:57.41 7yqFaZsb.net
>>486
2次元形式は意味不明だけど、superscript (肩付き)のことを言っているなら、
「expression r superscript」でぐぐれ

508:132人目の素数さん
15/05/24 14:18:31.56 pUq1jstv.net
>>487
ありがとうございます。
出来ました!!

509:132人目の素数さん
15/06/03 21:12:58.43 TMOQWk9m.net
>>485
こっちは、どっちが使いやすいかを訊いているのですが?
お前が共存させてようが知ったことではないです。

510:132人目の素数さん
15/06/04 19:38:35.06 gfaBlbTX.net
>>489
あなたが共存させて使い比べるのが一番でしょう。
あなたにとっての使いやすさの話なんだろうから。

511:132人目の素数さん
15/06/05 12:35:31.55 MDjykZPp.net
>>489
そのような返答は端から見ていても不快ですよ。
私はEmacsに慣れているので、ESSの方が圧倒的に使いやすいです。
RStudioとESSとどちらが使いやすいかは、人それぞれですよ。
ただ、Emacsを使ったことがない人には、RStudioを薦めています。

512:132人目の素数さん
15/06/05 18:00:31.95 VSz1UO41.net
Rは連立三次方程式解けますか?

513:132人目の素数さん
15/06/07 02:03:18.21 dt9xZyh/.net
>>492
当然解ける。
ていうかそれは言語関係ないよ。

514:132人目の素数さん
15/06/08 18:34:18.87 K54v27jp.net
エクセル持って無いんだけどopenofficeのデータを
Rにコピペする方法ってある?(´・ω・`)

515:132人目の素数さん
15/06/08 18:38:32.69 /HB4vF8B.net
区切り文字が分かればできてるでしょ
ちなみにExcelはタブ区切り

516:132人目の素数さん
15/06/08 20:36:58.31 M9dGRTLi.net
OpenOffice持ってないんだけど、範囲選択し、copyを選択し、
Rで
read.delim("clipboard")
とかで出来ないかな。

517:132人目の素数さん
15/06/09 18:58:46.73


518:ifB12Z3k.net



519:132人目の素数さん
15/06/24 11:45:26.96 T/10yu39.net
ggplot2って使いにくくない?(+_+)

520:132人目の素数さん
15/07/01 04:25:30.24 TGLv9MfB.net
Rのマニュアルやらわかりやすい例題やら作れって言われた。 
創薬系研究室在籍やけど、なんかいい例題ないですかね?

521:132人目の素数さん
15/07/01 13:44:33.87 XbOl36dq.net
URLリンク(psych.educa.nagoya-u.ac.jp)
これ

522:132人目の素数さん
15/07/01 17:44:31.10 lIG3ApTr.net
>>500さん ありがとう

523:132人目の素数さん
15/07/01 18:59:00.19 Nau31m3L.net
競馬解析なら万人にウケる

524:132人目の素数さん
15/07/01 22:18:43.50 I24ifN48.net
いや万人には受けない…
データ取ってくるの一番めんどくさそう

525:132人目の素数さん
15/07/12 14:57:40.77 Sw/04KCk.net
rinsideってc++にR組み込めるみたいだけど
fortranかjavaにR組み込めるパッケージ出ないのかな
作ろうっていう神とかいらっしゃらない?

526:132人目の素数さん
15/07/21 23:10:29.27 FsBb/NpU.net
3.2.0が出たことを知った今日この頃
ちな3.1.1
ここにいる皆さんは新しいバージョンが出るとすぐにアプデするの?

527:132人目の素数さん
15/07/23 20:48:22.72 AOB+IQP4.net
お前R全然使えないじゃん。
ブログのコードとか結構ひどいと思うぞ

528:132人目の素数さん
15/07/24 09:37:24.04 YGu5K6J3.net
>>505
Ubuntu/Debianだと、事実上自動的にアップデートされてしまうので、
そんなことは意識しない。論文を書くときに、分析したときのバージョンをチェックするぐらい。

529:132人目の素数さん
15/07/25 01:01:48.47 1RK8+FfS.net
ないよりまし

530:132人目の素数さん
15/07/27 18:25:21.42 KzAHLkDJ.net
プログラミングの非常に初歩的な質問で申し訳ないんですが、複数のcsvファイルを読み込んで特定の列を抽出して結合し、一つのマトリクスとして書き出したいのですが、どのようにプログラムを組めばいいでしょうか?
手作業でも可能な作業ですが、csvファイルの数は500あるのでプログラムを組んで時間を短縮できたらと思います。
おそらくfor文を使うのでしょうが、プログラミングを始めたばかりでどのように書けばいいのかわかりません
知恵を貸してください

531:132人目の素数さん
15/07/27 20:13:57.39 hW1bJ8L9.net
list.files()とかでとれないっけ

532:132人目の素数さん
15/07/27 20:26:20.99 KzAHLkDJ.net
>>510
回答ありがとうございます
読み込みに関してはread.csvでa1-a500まで書いて読み込めてます
非効率なのは承知していますが、これからもっと勉強して効率的なコード技術を身につけたいと思います。
問題はその後、for文を使えば繰り返しを行えるとのことで
i=1
for[i in 500]{
bi <- ai[,10]
}
みたいに書いてみたのですが、当然回りませんでした。
結合はcbindを使えばいいということも調べたのですが、列抽出と結合をfor文に上手く組み込めないという現状です。

533:132人目の素数さん
15/07/27 20:54:47.17 hW1bJ8L9.net
かなり汚い書き方だけど、その列の長さ(nとする)が同じなら
A<-list.files()
B<-matrix(0,n,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
#その列の名前がxとする
B[,m]<-temp$x
}
とかでできないのかなあ

534:132人目の素数さん
15/07/27 21:24:59.06 KzAHLkDJ.net
>>512
>>509です
A<-list.files(pattern=".csv$")
B<-matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
B[,m]<-tenp$10
}
こんな感じでよろしいのでしょうか?列の長さは等しくないので最大のcsvのものを設定しています.
このまま回したところエラーが吐き出されてしまいました.

535:132人目の素数さん
15/07/27 21:54:41.71 hW1bJ8L9.net
$10って取り出せてるのか
試してみて

536:132人目の素数さん
15/07/27 22:07:51.04 KzAHLkDJ.net
>>514
取り出せていなかったようなので
A<-list.files(pattern=".csv$")
B<-matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
B[,m]<-tenp$name
}
こちらで回したところ,
Error in file(file, "rt") : コネクションを開くことができません
追加情報: Warning message:
In file(file, "rt") :
ファイル 'NA' を開くことができません: No such file or directory
>
とのことでした.
また,ValuesにAは表示されていますが,character(empty)となっていてcsvファイルも読み込まれていないように感じます.
私はmacでRStudioという環境ですが,Rと.csvが同一フォルダにある場合list.files()のパスは必要ないんですよね?
質問ばかりで申し訳ありませんが,後学のために教えていただけると助かります.

537:132人目の素数さん
15/07/27 22:26:08.37 hW1bJ8L9.net
list.files(pattern=".csv$")
ここだけ実行して目的のcsvは表示される?
指定もできるけどと思うけど指定しなかったら普通にカレントだろうねえ
まあRSTtudii使ってるなら引数は候補で出てくるしそこらへん適当にヘルプでも見て

538:132人目の素数さん
15/07/27 22:37:29.01 KzAHLkDJ.net
>>516
character(0)となっているということは.csvが検出されていないということですよね?
なぜでしょう…

539:132人目の素数さん
15/07/27 23:14:50.99 hW1bJ8L9.net
>>517
getwd()でカレントどこになってるか見える
RStusioの右下に表示されてるスペースがカレントとは限らなかったような

540:132人目の素数さん
15/07/28 00:16:37.53 vtbmtaiA.net
>>518
getwd()でカレントを確認し,pathに代入して
A<-list.files(path,pattern=".csv$")
B<-matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
B[,m]<-tenp$速度name
#nameに列名
}
で回しても
Error in file(file, "rt") : コネクションを開くことができません
追加情報: Warning message:
In file(file, "rt") :
ファイル 'NA' を開くことができません: No such file or directory
Aはcsvを見つけられてないようです

541:132人目の素数さん
15/07/28 00:26:37.64 vtbmtaiA.net
>>518
すいません!!カレントを正しく打ち込み直したらcsvを読み込むことができました!!
ただBの中身が全て0になってしまい
Error in make.names(col.names, unique = TRUE) :
'<95>W<8d><82><28>m)' に不正なマルチバイト文字があります
というエラーを吐き出してきました
これはどういう修正を加えれば良いでしょうか?

542:132人目の素数さん
15/07/28 00:33:47.62 KWe1rzzX.net
>>520
わからん
ただ、ぐぐったら
URLリンク(app.f.m-cocolog.jp)
こんなのが出てきた
今はcsvファイルの一列目は列の名前ですか?
そうでないならheader=FALSEにしてみてください
そのときに$でアクセスすることができなくなります。何列目か固定(m列目とする)ならtemp[,m]でいけるかな

543:132人目の素数さん
15/07/28 00:40:51.36 vtbmtaiA.net
>>521
遅くまでありがとうございます.
ヘッダーの件はは自分でも調べてエンコードを以下のように変えてなんとか対処できました.
path <-XXXXX
A <- list.files(path,pattern=".csv$")
B <- matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE,fileEncoding = "utf8")
B[,m]<-temp$name
}
すると,以下のようなエラーがでました
エラー: 関数でないものを適用しようとしました
追加情報: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
入力コネクション ‘YYYYYYY.csv' に不正な入力がありました
2: In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on ‘YYYYYY.csv'
これについては何かおわかりでしょうか?

544:132人目の素数さん
15/07/28 01:08:17.44 KWe1rzzX.net
>>522
Warningなら動いてるはずだけど
mが1のときはちゃんと読み込めてるんだよね?

545:132人目の素数さん
15/07/28 01:31:14.83 vtbmtaiA.net
>>523
そのはずなんですが…
Bが0行列になってしまっているということは読み込めていないんですかね?

546:132人目の素数さん
15/07/28 01:34:31.26 KWe1rzzX.net
>>524
まずtempのとこには入ってるの?

547:132人目の素数さん
15/07/28 01:40:23.15 vtbmtaiA.net
>>525
どうやらtempに上手くデータが入っていないようです

548:132人目の素数さん
15/07/28 01:45:28.67 KWe1rzzX.net
>>526
temp<-read.csv(A[1],header=TRUE,fileEncoding = "utf8")
も入んないのかね?
Aにやっぱりファイル名取れてる?
コンソールでAとだけ打ったら中身見えるのは知ってるよね?

549:132人目の素数さん
15/07/28 01:55:44.46 vtbmtaiA.net
>>527
Aにはちゃんと全ファイル名が取れています
見てみると1つ目のcsvファイルで突っかかっているようです

550:132人目の素数さん
15/07/28 01:57:20.78 vtbmtaiA.net
>>527
追記になりますがA[1]に置き換えて1行で実行しても同じエラーを吐き出します

551:132人目の素数さん
15/07/28 02:00:17.62 KWe1rzzX.net
>>528
なるほどねえ
あ、今ってさ、カレントディレクトリにcsvあるわけじゃないんだけ?
setwd(path)でそこにディレクトリ移動できるからそれからread.csvやったらダメかね?

552:132人目の素数さん
15/07/28 02:05:16.07 vtbmtaiA.net
>>530
setwd(path)
getwd()
path <- ‘ZZZZZZZZZZ’
A <- list.files(path,pattern=".csv$")
B <- matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE,fileEncoding = "utf8")
B[,m]<-temp$name
}
こちらで回しても同様です
.Rファイルと.csvファイルは同じフォルダにいれています

553:132人目の素数さん
15/07/28 02:17:01.15 KWe1rzzX.net
>>531
pathはちゃんとしてるとなるとcsvになってないとかなのかなあ
ちなみに
URLリンク(cse.naro.affrc.go.jp)
ここの
URLリンク(cse.naro.affrc.go.jp)
これってread.csvできる?
(実はまだpathとかが怪しいとちょっと思ってます)

554:132人目の素数さん
15/07/28 02:39:20.26 vtbmtaiA.net
>>532
先ほどのtxtをcsv形式で保存してpath2に代入
bb<-read.csv(path2,header=TRUE,fileEncoding = "utf8")
bb
こちらは普通にマトリクスが表示されます

555:132人目の素数さん
15/07/28 02:59:14.78 KWe1rzzX.net
>>533
そっか、手間取らせちゃったね
Rとは直接関係ないけど、csvファイルのセパレータは「,」か改行コードがどうとかなのかなあ
テキストエディタでcsv開いたら確認できる

556:132人目の素数さん
15/07/28 10:06:15.51 vtbmtaiA.net
>>534
お早うございます昨日はありがとうございます
一応read.csvの中にsep=','も入れてるのですがどうにも…
ヘッダーに日本語が混じっているとエンコード入れてもダメなんですかね?

557:132人目の素数さん
15/07/28 20:43:03.59 M+NvABK0.net
>>535
> ヘッダーに日本語が混じっているとエンコード入れてもダメ
今のRは、そんなことない。
正常なcsvは正常に読み込めて、君のcsvは正常に読み込めないのであれば、
われわれ読み手には分からない未知の原因がそのcsvファイルにあるのだと思うよ。
とにかくファイルA[1]がread.csv()で読めるようにならないと先に進まないよね。
こういう場合は、csvファイルの列を減らして、徐々に増やして、原因を調べる。
また、行を減らして、3行ぐらいのcsvを作ってみて、それを試してみるとか。
成功したら、また行を増やして試してみるとか。
不正なcsvファイルの原因を追及して、分かったら、その対処をして、Rに読み込めばいいと思うよ。

558:132人目の素数さん
15/07/28 23:00:40.47 vtbmtaiA.net
>>536
アドバイスありがとうございます
遅くなってしまいましたが、解決したので報告にきました。
全てのcsvのヘッダーを削除することでread.csvが正常に作動するようになりました。(ヘッダーのT,F切り替えでは無理でした)
また、結合したい列群をlist関数に一度格納して、全てを結合することで解決できました。
ご協力頂いた方、ありがとうございました

559:132人目の素数さん
15/07/31 09:59:53.05 DO8zGsqL.net
>>537
> ヘッダーのT,F切り替えでは無理でした
header = FALSEにするなら、1行目を無視するためにskip = 1も必要だろ。
いずれにしても解決おめでとう。

560:132人目の素数さん
15/07/31 21:25:16.77 riU+k5oH


561:.net



562:132人目の素数さん
15/07/31 21:35:39.73 riU+k5oH.net
統計解析がどの程度「科学」なのかにちょっと疑問を感じて。
p値が10のマイナス××乗くらいだと「何かある」と言って良いのだろうけど、
反証可能性がどうのという次元と5%で有意という次元に、厳密性でだいぶ開きがあるような気がする。

563:132人目の素数さん
15/07/31 22:54:53.01 awcQKgZ6.net
統計解析ミステリーとか面白いな
主人公が頑張って調べて一応事件が解決するんだけど、
唯一残った謎が実は有意水準の設定による第1種の誤謬とかが
起こっていたみたいなエピローグがあるところまでは、妄想したw

564:132人目の素数さん
15/08/01 02:33:55.55 ZNLg3iYz.net
確率が絡む分かりやすい例はDNA鑑定なのかな
もっとも統計解析ミステリーと銘打っておいて題材がDNA鑑定じゃ
ちょっと陳腐か

565:132人目の素数さん
15/08/01 14:00:24.11 cdZbFyUY.net
こんなのなら少し近いかな。
『グレーレンズマン』アスタウンディング誌1939年10月号より四回連載。
>「では分析し理論づけを行い、結論を引き出そう」首席は宣言した。
>各生物は自己のアイディアと推論を機械に提供した。機械は短時間
>うなった後、テープを押し出した。<中略>「九五パーセント以下の
>可能性しか持たない結論はすべて除外する」彼は宣言した。「われ
>われは次のような結論を得た。第一、三つ一組の事実が、九九・九
>九パーセントの確率で―つまり事実上確実に―存在する。すなわち…
九五パーセントって、統計的検定を意識してるよね。

566:132人目の素数さん
15/08/01 20:38:34.34 3lDnuubF.net
あ、すごい有意水準定めてるwwwww
俺統計学史には疎いんだけど、ストーリーに紹介されるほどには発達してたんか

567:132人目の素数さん
15/08/02 11:08:47.80 pPxvYBP9.net
警察による税金を使ったいやがらせ犯罪、集団ストーカー。犯行内容
盗聴、盗撮、尾行、待ち伏せ、家宅侵入、窃盗、器物破損、風評のばらまき、就職妨害、リストラ工作、
暴走族や暴走大型車両による騒音攻撃の繰り返し、住居周辺での事件のでっちあげ、音声送信の強要、
電磁波による触覚攻撃、思考盗聴、無言電話、無実の人間を犯人にでっち上げ、ヘリによる威嚇、殺人、
メディアを使ってのほのめかし。特に家宅侵入、器物破損、窃盗は犯罪そのもので、犯罪組織に人を
逮捕する権限をあたえているのが今の日本であり、恐ろしい国になっているである。

568:132人目の素数さん
15/08/19 04:13:08.56 tbE5FBce.net
for(a 1 in 100){
 for(b 1 in 100){
  for(c 1 in 100){
   for(d 1 in 100){
    e=a*b*c*d
    if(e>max_e)max_e=e
   }
  }
 }
}

という入れ子ループにすると、
ご存知の通�


569:鏗では劇的に処理が遅く、 これを解決する手法としてベクトル化することが知られてますが、 ググってはみてもベクトル化の仕方が分かりません forが1つであれば分かるのですが入れ子の場合はどうすればベクトル化できるのでしょうか



570:132人目の素数さん
15/08/19 11:13:37.49 fli8kshb.net
RってCUDAもしくはCPUのマルチスレッド化をできるものなんですかね?

571:132人目の素数さん
15/08/20 00:09:16.90 ShE/kWzv.net
>>546
こんなのは? 2行目がベクトル化ということだと思う:
df <- expand.grid(a=1:10, b=1:10, c=1:10, d=1:10)
df$e <- with(df, a*b*c*d)
max(df$e)

572:132人目の素数さん
15/08/20 01:40:41.55 dXbmcH55.net
>>548
うおお・・・!
素晴らしいとしか言いようがないです
1:100として手元のi5ノートPCで走らせたところ
ユーザ システム 経過
20.19   4.97    25.43
なお541のコードだと・・・
ユーザ システム 経過
499.98  0.19    505.33
雲泥の差です
expand.gridで組合せの行列を作ることができるんですね
それでeを一括計算してmaxで最大値を導き出す
やはりRでは常にベクトル化を心がけないと遅すぎでR嫌いになりかねないというか、
いかにベクトル化できる知識があるかというのが重要なファクターですね
i7でゴリ押し処理出来ないこともないんですが、エクセレントコード化への努力がハード面の改良を大きく越えることができるのがRの長所(R以外の言語もそうですが)と思うので、色々と本なりネットなり漁ってみたいと思います
ほんと勉強になりました
ありがとうございました

573:132人目の素数さん
15/08/20 19:38:07.40 6h9pThzp.net
>>549
max(1:100%o%1:100%o%1:100%o%1:100)

574:132人目の素数さん
15/08/20 19:46:36.26 Y8GshSzD.net
>>550
この例だったら総当りじゃなくて重複組み合わせの積で十分だと思うけど
Rでどうやってやんの?

575:132人目の素数さん
15/08/20 20:23:38.30 6h9pThzp.net
>>551
RってLAPACKのラッパーだからな。
行列の処理に帰着させられない問題はもともとどうしようも無いのだと思う。

576:132人目の素数さん
15/08/20 22:35:35.61 QdNms7Zc.net
余計な関数使わないほうが早そうなのに

577:132人目の素数さん
15/08/24 11:33:04.13 fMyLrrec.net
オレもexpand.gridが思い浮かんだ。
>>550と比較すると、
> system.time(max(1:100%o%1:100%o%1:100%o%1:100) )
ユーザ システム 経過
0.711 0.075 0.787
> system.time({df <- expand.grid(a=1:10, b=1:10, c=1:10, d=1:10);df$e <- with(df, a*b*c*d);max(df$e)})
ユーザ システム 経過
0.002 0.000 0.002
圧倒的だな。

578:132人目の素数さん
15/08/24 19:09:22.89 FDixOhnI.net
>>554
10^4と100^4を比べれば圧倒的にもなる。

579:132人目の素数さん
15/08/25 14:23:38.49 VKOwsEzn.net
>>555
ほんまや、すまんかった
> system.time(max(1:100%o%1:100%o%1:100%o%1:100))
ユーザ システム 経過
0.643 0.104 0.747
> system.time({df <- expand.grid(a=1:100, b=1:100, c=1:100, d=1:100);max(with(df, a*b*c*d))})
ユーザ システム 経過
4.381 0.759 5.144

580:132人目の素数さん
15/08/25 20:10:30.76 Lv4uD/YM.net
>>556
マルチコア対応BLASを使うとどうなるんだろ。

581:132人目の素数さん
15/08/28 02:21:22.46 BhFILxkp.net
expand.gridで組合せ一覧を作って行列計算できる系だと速いけど、
if文とか入ってる自作関数を適用するときはエラー吐かれて結局逐次計算せざるを得ないケースも多いから、
俺の場合行列計算で高速化できるケースは少ない

582:132人目の素数さん
15/08/28 10:17:06.13 D54eSQRE.net
>>558
なんで「if文とか入ってる自作関数を適用するときは...逐次計算せざるを得ない」のだろう?
最小の事例とか示せる?

583:132人目の素数さん
15/08/29 17:32


584::24.04 ID:nwQxpgb8.net



585:132人目の素数さん
15/08/29 19:13:13.30 2gl0DL79.net
>>560
大きなお世話かもしれんが、データフレームでいいんだったらこんなんでいいと思うけど。
library(dplyr)
y <- data.frame(x=floor(runif(10000, min=-10, max=10+1)), group=rep(1:1000, each=10))
summarize(group_by(y, group), A=sum(x[x>=0]), B=sum(x[x<0]), C=A+B)

586:132人目の素数さん
15/08/29 19:39:13.16 2gl0DL79.net
行列で計算するならこんなだろうか。
x<-floor(runif(10000, min=-10, max=10+1))
y<-matrix(x,ncol=10)
z <- cbind(y, apply(y, 1, function(a) sum(a[a>=0])+sum(a[a<0])))

587:132人目の素数さん
15/08/29 20:24:54.57 nwQxpgb8.net
>>561,557
調べればRって大規模計算が苦手なんだな
dplyrって結構有名らしいがニッチなパッケージばかりいじってたから知らなかった
汎用性高そうというかRに最初から付属しておいて欲しいくらい高性能だ
しかも俺みたいにパッケージに丸投げして終了ではなく、
しっかり標準装備の関数でも実現するとは・・・
ちなみに557の方が556より20倍速かった
ということでdplyrマスターするためにあれこれググろうと思う
行列計算にif文使えるというのが分かって非常に感動している
ありがとう>>561さん、涙出た

588:132人目の素数さん
15/08/29 23:11:25.09 Ks3pTbSX.net
>>563
失礼かもしれないがこれって結構常識だぞ
rってスクリプトでバカでもすぐ動くコードが手に入るからこういう知ったかした自称中級者みたいなやつが多すぎる気がする
データサイエンティスト()みたいな人たちもかなりひどいコード書いてる事例をいくつも見てきた

589:132人目の素数さん
15/08/31 10:26:40.19 0WBAiZli.net
dplyrとかggplot2とか、未だに抵抗あるし、使っていない。

590:132人目の素数さん
15/08/31 18:25:06.81 6OjiZrwk.net
先輩方、2つ質問があります
1つはベクトルを一期ずつずらして行列にするというもので、
1~100が入ったベクトルから、
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
...
という行列を作りたいんですが、
こういうのは、
a=1:100
b=a
a.len=length(a)
for(i in 2:5){
b=cbind(b,a[i:a.len])
}
b
という感じでforとbind使うしか方法ないでしょうか?
これだとaが10000とかあるとまあまあの処理時間を要してしまいます

591:132人目の素数さん
15/08/31 18:25:53.91 6OjiZrwk.net
もう一つがあれから色々とググってたdplyrについてで、
dplyrのsummarizeという関数は、
applyみたいに行単位で関数にデータを渡して計算できないんですか?
上のbをb.df=data.frame(b)として、
のb.dfをsummarizeにそのまま渡したら行ではなく全体を計算してしまうわけですが、
>>562のapply(y, 1, function(a) sum(a[a>=0])+sum(a[a<0]))
みたいな処理をさせるにはb.dfをグルーピングする必要があるのでしょうか?

592:132人目の素数さん
15/08/31 21:21:59.53 VE1W5WJm.net
a<-1:1000
n<-5
b<-c()
last.b<-length(a)-n
for(i in 0:last.b){b<-rbind(b,head(a,n)+i)}
そこまで時間かかるわけでもないしなにがしたいのかあまりわからない・・・
横は5固定なのだろうか・・

593:132人目の素数さん
15/08/31 21:37:59.43 a6KkcCW8.net
>>566
for と bind を使うしかないと思う。縦にずらした後の末尾の値がNAでいいのなら、より早いのは
library(dplyr)
a <- list(1:100)
for (i in 2:5) a[[i]] <- lead(a[[i-1]])
b <- do.call(cbind, a)
>>567
データフレームでもそのままapplyが使える。
b.df=data.frame(b)
apply(b.df, 1, function(a) sum(a[a>=0])+sum(a[a<0]))

594:132人目の素数さん
15/08/31 22:32:28.45 lXwg9Va+.net
>>566
t(matrix(1:5,5,100))+0:99

595:132人目の素数さん
15/08/31 22:49:57.01 bRmq7rAJ.net
>>566
n <- length(a)
m <- 5
idx <- outer(1:n, 1:m, function(x, y) {
i <- x + y - 1
ifelse(i > n, NA, i)
})
matrix(a[as.vector(idx)], n, m)

596:132人目の素数さん
15/08/31 23:03:08.47 a6KkcCW8.net
>>566
matrix(1:105, nrow=106, ncol=5)[1:100,]

597:132人目の素数さん
15/09/01 03:44:48.39 APnc79JV.net
>>568
この時系列行列に変換する作業を数百回近く計算させるので少しでも速い方が良いわけです
1000も5も暫定の数です
やはりcbindではなくrbindですよね
forの回数を減らしたいがためにちょっとインチキかなと思ったんですが、
563さんのコードが正確に意味を捉えた書き方で、
自分のやり方だと行列計算したときに結果が違ってきそうです
>>569
おお、dplyrを使った方法とは・・・
末端部分に多少の欠損値があっても大丈夫です
do.call関数でググったら、
なにやらcbind_allというものを使うとめっちゃ速くなるらしいので少し調べてみたいと思います
b.dfにapplyを適用させるのではなく、
apply(b.df,1,・・・と同等の処理をdplyrで実現できないか?ということです
実はforからapplyに書き換えたら処理速度が遅くなったという経緯がありまして・・・
多分書き換える過程で余計な処理が入ったためと思われますが、
dplyrで処理したら或いはという思惑と、
これが実現できたらこれから大分dplyrに依存=夢広がるという期待があります

598:132人目の素数さん
15/09/01 03:45:19.40 APnc79JV.net
>>570,567
うおお・・・for文使ってない!
凄いのですが基本を右往左往してる自分には理解するのに暫くかかりそうです
特に+0:99など何がどうなっているのか
あと条件後出しで申し訳ないんですが実際計算するときのaは等間隔で増加するベクトルではなく、
任意の数列を使うのでサンプルでとなるとa<-floor(runif(1000, min=-10, max=10+1))みたいなのを想定しています
matrix関数を使って出来るのでしょうか
>>571
今のところ最速で処理できています
aを任意のベクトルにしても実用的な速さで十分な速度が得られています
まだコードを理解しきれていないですが、これでかなりいけそうです
あとはこれをdplyrで行列計算できれば・・・

599:132人目の素数さん
15/09/01 06:35:19.43 APnc79JV.net
>>571
と思ったらこちらも任意のベクトルを適用できませんでした・・・orz
しかしトリッキーな発想で面白い
ん~・・・試行錯誤してみます

ちなみに自前のデータで処理時間を計測
[要素数1,000]
for+cbind
ユーザ システム 経過
0.07 0.00 0.07
dplyr(>>569)
ユーザ システム 経過
0 0 0
[要素数100,000]
for+cbind
ユーザ システム 経過
6.78 0.53 7.42
dplyr
ユーザ システム 経過
0.41 0.03 0.43
[要素数1,000,000]
for+cbind
ユーザ システム 経過
61.94 8.00 70.55
dplyr
ユーザ システム 経過
4.23 0.78 5.02
という結果でした

600:132人目の素数さん
15/09/01 11:44:57.85 K/HKBkbA.net
>>566
任意のベクトルを使い、n行m列の場合。意外なことに、行列を使った方が遅かった。
n <- 100000; m <- 1000; x <- floor(runif(n, min=-10, max=10+1)); library(dplyr)
system.time(suppressWarnings(matrix(c(x,rep(NA,m)),


601:nrow=n+m+1,ncol=m)[1:n,])) system.time({y<-list(x);for(i in 2:m) y[[i]]<-lead(y[[i-1]]);do.call(cbind,y)})



602:132人目の素数さん
15/09/01 14:54:45.72 sVtr2BWr.net
Rのkernlabパッケージのksvmについて質問です。
クラス分類の方法は、1対他分類法でしょうか?それとも、1対1分類法でしょうか?

603:132人目の素数さん
15/09/01 21:52:40.64 APnc79JV.net
>>576
numericで領域確保してからやると1割くらいは速くなりましたが、
やはりc++で書かれてるdplyrが大分上手のようです
applyライクな処理をdplyrでの件ですが、
引き渡すベクトルが順不同であればsummarizeでもイケるんじゃね、
ということで見様見真似で書いたのが、
result <- data.frame(b,group=1:length(b[,1]))%>%group_by(group)%>%summarize(sum(x[x>=0])+sum(x[x<0]))
で、遅っい上に結果も散々でした
どこが悪いんでしょうか

604:566
15/09/01 22:17:22.56 SSGZ4Gcs.net
>>576
a が任意のベクトルで動作するはずだが。
うまくいかないなら、例を示してくれ。

605:566
15/09/01 22:41:48.49 SSGZ4Gcs.net
>>575
a が任意のベクトルで動作するはずだが。
うまくいかないなら、例を示してくれ。

606:132人目の素数さん
15/09/02 02:57:51.71 4iW/oU28.net
>>579
どうやら色々やってるうちにaに生成した(1:1000)ベクトルが入った状態でテストしたようで、
勝手に先の流れで序順を利用したコードだと思い込んでいました
大変に失礼しました
ちなみに処理時間を計測
[要素数1,000]
ユーザ システム 経過
0 0 0
[要素数100,000]
ユーザ システム 経過
0 0 0
[要素数1,000,000]
ユーザ システム 経過
0 0 0
( д) ゚ ゚

これが神か・・・
コードの理解に暫く時間がかりますが、
これは何としても使えるようになりたいです
 

607:132人目の素数さん
15/09/02 12:39:45.57 4iW/oU28.net
なるほど先に要素行列を作ってベクトルに変換して必要な要素を一気に取り出して行列に変換しているのか
1期ずらす処理を1度に処理する為にouter使っているのがミソというわけで
見るほどに感心するコードだ

608:132人目の素数さん
15/09/03 00:14:38.52 5YiJ7XJ/.net
今はdplyrだけに頼らず、
他の関数見つけたりプログラムの構造変えたりで何とかやってみます
みなさんどうもありがとうございました!

609:132人目の素数さん
15/09/09 20:32:02.94 QQfGZEIe.net
Programming R in Haskell
URLリンク(tweag.github.io)

610:132人目の素数さん
15/09/09 21:15:19.06 TrnTzRuR.net
プログラミング言語っていくつ覚えればいいのか不安になる(と思ったのが10年以上昔のこと)。
C/C++、Perl 4とshだけでもこりごりという感じだったのに。

611:132人目の素数さん
15/09/17 23:09:34.21 IcXN+AYD.net
重回帰分析についての質問です。
普通の線形回帰で、残差をリサンプリングするブートストラップはlm.boot関数でできます。
そして、ロバスト回帰はlmrob関数でできます。
ロバスト回帰の標準誤差を「残差をリサンプリングする」ブートストラップで
求めるにはどうしたらいいでしょうか?
FRBパッケージのFRBmultiregMM関数だと、説明変数をリサンプリングするタイプしかできません。
よろしくお願いします。

612:132人目の素数さん
15/09/19 23:05:08.64 SzjUH7wj.net
581さんと被っちゃいますが、重回帰分析について質問です
調べたのですがどうにも重相関係数Rの出し方が分からなくて。どなたかお教え頂けないでしょうか?

613:132人目の素数さん
15/10/07 21:26:24.84 SCBAaPXh.net
普通の多層パーセプトロン(MLP)なら {neuralnet} や {RSNNS}、
リカレントボルツマンマシン(RBM)なら {RSNNS} や {deepnet}、
Deep Belief Network (DBN)なら {deepnet} など。
よく読みこめてませんが、広


614:くディープラーニングは {h2o}。 畳み込みニューラルネット(DNN)、ディープボルツマンマシン(DBM)を 実装しているパッケージが見つかりません。 知っている方いらっしゃったら教えていただけませんか?



615:132人目の素数さん
15/11/25 11:47:23.80 w1ZE2Z96.net
昨日からターミナルで使い始めた初心者です。
?saveでsaveのヘルプを表示させました。
スペースを押して、ヘルプの最後まで表示させると
(END)という表示が出ています。
このヘルプを終了させて、?saveでヘルプを表示させる
までの続きの作業をしたいのですが、どうやって
ヘルプを終了させてもとのRの作業に戻れるのでしょうか?

616:132人目の素数さん
15/11/25 12:29:22.87 wET37QtA.net
>>589
操作はページャの種類に依存します。
自分でoptions("pager")を設定した記憶がないのであれば、
lessやmanなどと同じ操作系だと思います。
qを押下して終了です。

617:132人目の素数さん
15/11/25 17:52:35.61 w1ZE2Z96.net
>>590
ありがとうございます。教えていただいたやり方でヘルプを抜けることが
できました。

618:132人目の素数さん
15/11/28 17:28:15.50 YHjirQEi.net
RとRsdudioインストールしました。入門書教えてください。

619:132人目の素数さん
15/11/28 17:36:37.55 hMPkNogr.net
man R

620:132人目の素数さん
15/11/28 18:20:49.99 /G6hJ4fc.net
できました
print("hello")

621:132人目の素数さん
15/11/30 12:14:45.58 zZxdQ0Zc.net
>>592
help.start()
に「An Introduction to R」があるはず。
これが入門書

622:132人目の素数さん
15/11/30 16:28:03.44 mrGrCOoh.net
>>593
>>595
ありがとう、でも初心者には難しい
はじめての「R」、とか見付けたので色々あさってみる

623:132人目の素数さん
15/12/09 11:22:45.05 /M/35Cmk.net
Rのコンソール設定を変更して、背景色を変えたり、テキストのカラーを
変更してsaveやapplyしても、もう一回、Rコンソールに入り直すと、
デフォルトの白色の背景色と赤色の>コマンドになってしまうのは、なぜなのでしょうか。
ちなみに、windowsユーザで、Rstudioは使用していません。
macユーザだと、その辺りが簡単になっている感じがする。

624:132人目の素数さん
15/12/09 11:30:29.13 /M/35Cmk.net
あと、R3.2.2だと、直交表を作成するconjointライブラリーやepicalcライブラリー
が入らないのですが、R3.2.2で、それらと同様のことが出来るライブラリーは
ありませんか。
Rの2系を入れて試しても、バージョンが少しでも違うと入らないようです。
なるべく、R3.2.2だけを利用していきたいので、なんかいい方法ないかな、と。

625:132人目の素数さん
15/12/09 17:19:57.20 eAv93o6+.net
嘘はよくないぞ
> R.Version()$version.string
[1]

626:132人目の素数さん
15/12/09 17:21:57.88 eAv93o6+.net
あれ、途中で切れた?
R version 3.2.2でもepicalcはインストールできるよ
> R.Version()$version.string
[1] "R version 3.2.2 (2015-08-14)"
> packageVersion("epicalc")
[1] ‘2.15.1.0’

627:132人目の素数さん
15/12/10 13:23:04.42 0xWTEjIU.net
>>600
今、それと同じように実行してみたところ、以下の結果になった。
> R.Version()$version.string
[1] "R version 3.2.2 (2015-08-14)"
> packageVersion("epicalc")
packageVersion("epicalc") でエラー:
パッケージ ‘epicalc’ が見付かりません
と表示されたので、パッケージをインストールしてみた。

> install.packages('epicalc')
Installing package into ‘C:/Users/ユーザー名/Documents/R/win-library/3.2’
(as ‘lib’ is unspecified)
--- このセッションで使うために、CRAN


628:のミラーサイトを選んでください --- 警告メッセージ: package ‘epicalc’ is not available (for R version 3.2.2) と表示されて、やはり、入らなかったよ。



629:132人目の素数さん
15/12/10 13:30:31.94 1yOwJ443.net
>>601
epicalcはアーカイブに入っているから、そんな方法じゃ入らないよ。
CRANからソース(*.tar.gz)をダウンロードして、ソースから入れないと。
コンパイルできる環境が構築していないなら、まずはそこからだな。
Mac OS XやLinuxでは何てことはない平常運転でも、
Windowsユーザはいろいろと苦労しなくてはいけないことがあるが、まぁ頑張れ。

630:132人目の素数さん
15/12/10 14:17:12.25 0xWTEjIU.net
>>602 ありがとうございます。やはり、Rはコンソール設定など含めて、
Macの方がいろいろと楽みたいですね。
あと、今、自分が使っている、最近、出版されたRのテキストに、
IQR()関数は、四分位偏差と書いてあるのだけど、
これって、四分位範囲のことと間違えているんじゃない。
四分位範囲は、(第3四分位数)-(第1四分位数)のことで、それを2で
割ったものが、四分位偏差だと思うのだけど。

でも、それをRで実行してみると、おかしな結果になる
> a <- c(1,2,3,4,5,6)
> median(a)
[1] 3.5 中央値は、これで正解になっている

> IQR(a)
[1] 2.5
と出るのだけど、四分位範囲であれば、ここでの第3四分位数である
5と、第1四分位数である2を引いた数である3が正解になっているはず
なのに、なぜか、2.5がIQR()関数での結果となってしまう。
この理由が分かる人、誰かいませんか。

631:132人目の素数さん
15/12/10 14:21:30.25 /qElYksh.net
ソース見なされ

632:132人目の素数さん
15/12/10 15:13:40.19 0xWTEjIU.net
>>604 関数の()を付けないで入力すると、函数のソースを出せるんですね。
さっそく、やってみました。
> IQR
と、入力してIQR()関数がどうなっているかを調べてみると、

function (x, na.rm = FALSE, type = 7)
diff(quantile(as.numeric(x), c(0.25, 0.75), na.rm = na.rm, names = FALSE,
type =


633:type)) <bytecode: 0x2c0ca970> <environment: namespace:stats> この関数のコードは、よく分からないのだけど、たぶん、ベクトルcの中で、 0.75の位置にあるもの(第3四分位数)と0.25の位置にあるもの(第1四分位数)を 差分(diff)した解を求める関数とある。やはり、IQR()は、四分位範囲(quantile)を 求める関数で、四分位偏差を求めると記述してあったRの本は、記述ミスだったらしい。 でも、 a <- c(1,2,3,4,5,6)で、自分で計算するやると、やはり、3が答えになるのだけど、 Rだと、 > IQR(a) [1] 2.5 と表示されるので、やはり、自分にとっては謎設定であるIQR()関数



634:132人目の素数さん
15/12/10 16:30:41.89 1yOwJ443.net
>>602
誰の本?

635:132人目の素数さん
15/12/10 16:30:43.29 /qElYksh.net
>>605
aをquantile()に入れてみそ
ヘルプ見ると分かるけど四分位値の計算方法って9通りあるから
スマフォなんで、ぶっきらぼうでスマンが

636:132人目の素数さん
15/12/10 16:32:36.22 1yOwJ443.net
>>604
そのあたりの話はヘルプに詳しく書いてあった気がするけど。
>>606 の指摘通り、複数のやり方があるので要注意。

637:132人目の素数さん
15/12/10 17:08:12.50 /qElYksh.net
もう一つ、aをfivenum()に入れてみそ

638:132人目の素数さん
15/12/10 22:09:25.43 0xWTEjIU.net
>>606
共著者3人で書かれたものです。題名と著者名があえて挙げないけど、
出版社はオーム社で、今年、出版されたもの。これだけで、結構、
該当著書が絞り込めるはず

>>607
面白い方法を教えてくれて、ありがとうございます。
さっそく、言われた通り実行してみると、
a <- c(1,2,3,4,5,6)
quantile(a)
0% 25% 50% 75% 100%
1.00 2.25 3.50 4.75 6.00
と実行結果が得られる。このRの四分位数の計算だと、第3四分位数が75%の下に
書いている4.75になって、第1四分位数が25%の下にある2.25になって、
その四分位範囲は、(第3四分位数の4.75)-(第1四分位数の2.25)の演算で
2.5が答えという風になっているようだけど、学校で習う一般的なレベルでの
要素が偶数個ある場合の四分位範囲の求め方は、
a <- c(1,2,3,4,5,6) だと、左半分(この場合は、1,2,3)の中央値である2が
第1四分位数となって、右半分(この場合は、4,5,6)の中央値である
5が第3四分位数になるので、a <- c(1,2,3,4,5,6) のベクトルでは
(第3四分位数の5)-(第1四分位数の2)=(四分位範囲の3)
が、一般的な四分位範囲の答えのはずなのです。

639:132人目の素数さん
15/12/10 22:09:52.51 0xWTEjIU.net
>>608 ヘルプに書いてあるんですね。今、コンソールのヘルプにある
関数で、quantileを入力すると、
URLリンク(127.0.0.1:27220)
に、その演算の仕様が書いてあって、英語なので、まだ、よく読んでいない
のだけど、教えてくれたように、9タイプくらいの方法 quantile algorithms が
あるみたいです。そして、記述によると、どうもベクトル内の要素を連続量(値)とみなすか、
離散量(値)とみなすかで計算方法が違うらしくて、それで私の計算結果との誤差が生じている
感じですね。RのIQR()関数は、どうやら連続量を前提にして、計算しているらしいです。
quantile(a)
0% 25% 50% 75% 100%
1.00 2.25 3.50 4.75 6.00  で、分かりました。

640:132人目の素数さん
15/12/10 22:10:14.21 0xWTEjIU.net
>>609
やってみました。
> fivenum(a)
[1] 1.0 2.0 3.5 5.0 6.0
そう、この区切り方が5数要約として一般的なもの。この並びだと
真ん中の3.5が、このベクトルの中央値で、一番左の1.0が最小値、
一番右が最大値6.0、
(第3四分位数の5.0)-(第1四分位数の2.0) = (四分位範囲の3)
でいいはずなのに、Rで実行すると、IQR(a) は2.5になってしまう。
上記に書いたように、Rは四分位範囲を離散値でなく、実数の連続量
とみなして計算しているらしいので、いろんな計算の仕方があるんだ、
という風に理解しておきます。みなさんのアドバイス、すごい役立ちました。
感謝です。

641:ID:/qElYksh
15/12/10 23:09:46.44 cDoHP26z.net
既にご自身で結論を出されていましたね。Rで計算結果に疑問を感じたら
ヘルプを見て、ソースを見てみて下さいな。

642:132人目の素数さん
15/12/12 17:09:26.81 kkbLZYaG.net
The R Tips 初心者にはお勧め

643:132人目の素数さん
15/12/22 21:39:05.11 9PXApgtJ.net
URLリンク(blog.rstudio.org)

644:132人目の素数さん
15/12/25 06:56:52.21 aM2CFtVE.net
ggplot2のパッケージが、いろんな設定(rstan、JAGS言語など)を
グチャグチャ昨日、適当にいじっていたら、使えなくなってしまった。
インストールは普通に出来るのだけど、library(ggplot2)で実行すると、
> library(ggplot2)
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) :
‘Rcpp’ という名前のパッケージはありません
エラー: ‘ggplot2’ に対するパッケージもしくは名前空間のロードが失敗しました

となってしまう。Rでggplot2が使えないのは、かなり致命傷になる。それでqplot()なども
使えなくなってしまう。R自体をアンインストール、再インストール・再起動しても同じ状態。
ファイルやフォルダ関係、あとは、アクセス権限がない、みたいなエラーが出たので、
その辺りも、いろいろ弄ってしまったので、調べても訳が分かりません。
barplot()の棒グラフやhist()ヒストグラム、箱ひげ図などは、普通に、表示できるっぽい。
qplot()関係がダメ。だから、それを使った散布図などが出来なくなりました。
windowsユーザーです。Rstudioは使っていない。
こ�



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch