統計解析R たぶんpart3くらいat TECH
統計解析R たぶんpart3くらい - 暇つぶし2ch1:デフォルトの名無しさん
12/06/22 13:33:12.40 .net
あっても良さそうなんですが,需要ないの?

過去スレのうちのひとつ
統計解析R
スレリンク(tech板)


2:デフォルトの名無しさん
12/06/22 13:33:48.72 .net
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

3:デフォルトの名無しさん
12/06/22 13:34:23.47 .net
Rのスレは別の板にあったと思うけど

4:デフォルトの名無しさん
12/06/22 13:38:51.83 .net
数学板にあったけど、あっちはサーバーが飛んじゃったから、こっちに立ててもいいんじゃないかな。

5:デフォルトの名無しさん
12/06/22 14:03:13.96 .net
R ってデータベース?

6:デフォルトの名無しさん
12/06/22 14:07:26.08 .net
R言語

7:デフォルトの名無しさん
12/06/22 14:14:08.01 .net
SQLみたいなもの

8:uy
12/06/22 14:55:08.20 .net
Rはゴミカス向けだと断言する

俺はゴミカスだがエリートゴミカスだ

お前らのような下級ゴミカスとは格が違う

9:デフォルトの名無しさん
12/06/22 16:45:46.35 .net
数学版から誘導されてきたけど、
Rjpwikiと裏Rjpwikiのヲチはここでよいの?

10:デフォルトの名無しさん
12/06/22 16:54:24.99 .net
いいんじゃないの

11:デフォルトの名無しさん
12/06/22 20:08:15.52 .net
これのクラスとかのオブジェクト指向言語的な機能って
なんか目指すところが普通の言語と違ってる感じだよな

12:デフォルトの名無しさん
12/06/22 20:28:36.18 .net
>>11
具体的にどのように?

13:デフォルトの名無しさん
12/06/23 02:07:10.62 .net
programmerというよりはstatisticianが使いやすいことを念頭にしているから?

14:デフォルトの名無しさん
12/06/23 20:38:20.57 .net
>>13
R言語って、統計解析ソフトのマクロ言語みたいなものだから、
一般のプログラミング言語と比較する方が間違っていると思う。
Rの基本関数はCやfortranで書かれたものを呼び出しているに過ぎない。

15:デフォルトの名無しさん
12/06/24 00:59:34.17 .net
なんでこの板にスレ立てたの?

16:デフォルトの名無しさん
12/06/24 17:58:17.10 .net
Rを使ってる奴等はなにに使っているのか

17:uy
12/06/24 18:16:28.30 .net
俺はゴミカスだがエリートゴミカスでR
お前らのような下級ゴミカスとは格が違うのでR

18:uy
12/06/24 18:36:21.91 .net
ゴミ

19: 忍法帖【Lv=40,xxxPT】
12/06/24 18:37:28.15 .net
そういえば S のスレはなんでないの?

20:uy
12/06/24 18:38:38.18 .net
Mのスレならあるぞ
ちなみに俺はMだ

21:デフォルトの名無しさん
12/06/25 00:19:02.83 .net
>>16
10個くらいのパラメータあるときに、
pairsで、総当りの相関見るのは便利


22:デフォルトの名無しさん
12/06/27 10:48:52.12 .net
これってマスマティカみたいな使い方できるの?

23:デフォルトの名無しさん
12/06/27 12:30:40.49 .net
>>22
つmaxima

24:デフォルトの名無しさん
12/06/27 13:16:37.54 .net
ありがとうございます。
maximaも荒らしが凄いのねプログラム板に移動したいですね。

25:デフォルトの名無しさん
12/06/28 01:50:26.32 .net
2ch の見過ぎで ステマ ティカに見えた。

26:デフォルトの名無しさん
12/08/05 14:19:49.11 .net
●関連サイト
The R Project
URLリンク(www.r-project.org)
RjpWiki
URLリンク(www.okada.jp.org)
リンク集
URLリンク(www.okada.jp.org)


27:デフォルトの名無しさん
12/09/28 23:24:36.57 .net
【R言語】統計解析フリーソフトR 第4章【GNU R】
スレリンク(math板)

28:デフォルトの名無しさん
12/11/19 21:54:33.25 .net
データを分割してスペクトルを測定しようとして次のようなプログラムを書いてみたんですが、
「以下にエラー spec.pgram(x, ...) : 添え字が許される範囲外です 」
と出て動かないですが何がおかしいんでしょうか?
行ごとに実行して動いているんですけど。

function(x)
{
n <- length(x)
l <- 40000
m <- floor(n/l)
for (i in 0:(m -1))
{
spectrum(ts(x[i*l+1 : (i+1)*l],deltat=.0025))
}
}

29:デフォルトの名無しさん
13/02/18 15:28:53.89 .net
>>28
カッコ追加してみた。
spectrum(ts(x[(i*l+1) : ((i+1)*l)],deltat=.0025))

30:デフォルトの名無しさん
13/06/07 03:19:25.84 .net
馬鹿には無理

31:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
RなんかよりもIncanterを使うべき

32:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
>>31
>Incanter
知らなかったので調べてみたら、
本当にExcel統計に負けるほどの基本関数しかなさそう。
経済、医学、生態とか分野別になってもいないし、
ベイズ推定とかデジタル地図の空間演算とか何もなさそう。

> RなんかよりもIncanterを使うべき
お薦めの点はどういうところ?

33:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
俺が作った(きりっ

34:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
lispで書ける。それだけだが、それこそが何ものにもかえがたい。

35:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN wY2Fpqcr!.net
groovyからR呼べないの?Javaって機械学習周りのOSSツール沢山あるのに
最近、Apache族がGroovyをデファクトで採用しそうな感あるよね

36:デフォルトの名無しさん
13/07/18 NY:AN:NY.AN .net
>>31
と言っている本人も使っていないくせに。まだpytnonでnumpyとscikits statsmodels & pandasを使う方がまだ実用性がある。

37:デフォルトの名無しさん
13/07/20 NY:AN:NY.AN .net
Pythonにはthink.statsて物もあるからね。
普及はしてナイっぽいが。

38:デフォルトの名無しさん
13/09/19 22:08:26.66 .net
Excelとか信用できない

39:デフォルトの名無しさん
13/11/11 00:53:05.70 .net
タイトルに次からはR言語って入れろや
次スレは5年は後だろうけど

40:デフォルトの名無しさん
13/11/12 13:22:39.61 .net
>>39
RのことをR言語というは2重の意味で反対って、
御大が仰っていたが。

41:デフォルトの名無しさん
13/11/22 19:28:27.39 .net
人いないの?

42:デフォルトの名無しさん
13/11/22 21:38:26.09 .net
>>41
いるけど、何故か質問は数学版の方にしか来ない

43:デフォルトの名無しさん
13/11/23 01:14:47.37 .net
なる

44:デフォルトの名無しさん
13/11/29 09:29:59.88 .net
>>42
>>41
数学版
スレリンク(math板)

45:デフォルトの名無しさん
14/02/25 19:38:37.59 .net
↓こんなんあるんだね。なかなか良さそう。

URLリンク(www.rstudio.com)

46:デフォルトの名無しさん
14/02/25 22:00:32.70 .net
>>45
ESSを使えよ

47:デフォルトの名無しさん
14/02/26 21:50:31.58 .net
え?

48:デフォルトの名無しさん
14/02/28 05:46:01.14 .net
ESSって何?

49:デフォルトの名無しさん
14/02/28 10:10:53.87 .net
>>48
Emacs Speaks Statistics
世界の主なR開発者とユーザが使っているEmacs用のインターフェイス
昔はRStudioとかなくて、pmgとかRKWardとかはあったけど、
あまり使い物にならなかったので、事実上、ESSしか選択肢がなかった。
だから、Rの古参ヘビーユーザはほとんどESSユーザ。
# Emacsを団塊世代の化石と揶揄するのはなしの方向で

50:デフォルトの名無しさん
14/02/28 13:35:24.88 .net
ESSで、なにげにJuliaも使える
便利

51:デフォルトの名無しさん
14/02/28 14:19:03.56 .net
何故、EmacsはVimより重いのか

52:デフォルトの名無しさん
14/02/28 16:15:38.85 .net
こんなとこでEmacsとVimの論争はやめてよ!

53:デフォルトの名無しさん
14/03/01 19:08:21.35 .net
なにこれ言語?

54:デフォルトの名無しさん
14/03/01 21:46:47.33 .net
Rって汎用言語よりも遥かに短く式書けていいよね

55:デフォルトの名無しさん
14/03/01 23:36:28.98 .net
>>53
行列演算をサポートするスクリプト言語。
おもに統計の手法開発向けに考えられたS言語というのがあって
それの兄弟言語。
無償なんで結構つかっている人は多い。

56:デフォルトの名無しさん
14/03/03 20:39:05.33 .net
gsにならなくて良かったと思う

57:デフォルトの名無しさん
14/03/04 02:50:08.77 .net
確かに

58:デフォルトの名無しさん
14/03/05 13:05:50.24 .net
今、本を読んで、
多くの常識はずれなことに当惑している

ここはプログラム板だから、
プログラムの観点から言わせてもらうと、

まず行ではなく、列方向に、
データがまとめられていることに、
ショックを受けた

次に、C言語の配列がなく、
リストを配列と呼んでいるらしい

もう、ついていけん!これは文系脳?

59:デフォルトの名無しさん
14/03/05 13:59:51.37 .net
論理的に述べよ

60:デフォルトの名無しさん
14/03/05 15:10:50.95 .net
Lisp脳からすると配列とか言われると頭がモヤモヤする。

61:デフォルトの名無しさん
14/03/05 15:12:20.33 .net
>>58
Rの目的は、自分が考えたオレ様統計量やモデルを簡単に実装すること。
既存の言語に過度に振り回されず、簡潔明瞭に統計モデルが記述できればそれでよい。

> 次に、C言語の配列がなく、
> リストを配列と呼んでいるらしい
arrayとlistは別物だけど、そこは理解している?"["関数は理解している?
> a <- array(1:9, dim = c(3, 3))
> a[2, 3]
[1] 8
> b <- list(x = matrix(1:6, 2), y = letters[1:5])
> b
$x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

$y
[1] "a" "b" "c" "d" "e"

> b[[1]][2, 2]
[1] 4

62:デフォルトの名無しさん
14/03/05 15:19:18.25 .net
あっ、逆か。
Cのリスト構造がRの配列に相当すると主張しているのか?
でも、そうすると余計に意味不明。

データフレームが変数ごとにまとめられているのは、
データベース的観点から言えばあたりまえ。

63:デフォルトの名無しさん
14/03/05 18:13:19.20 .net
もともと、Sの世界でデータフレームというものはなかった。
あくまで手法開発ツールなので、それでよしということだったが
データ処理という観点で必要性が高いため追加された。
ただし、データ管理という点では今だ無いに等しいので、ビジネスで
使うには他ソフトとのコラボレーションがどうしても必要。

64:デフォルトの名無しさん
14/03/05 19:02:19.38 .net
データベース的には行指向のほうが普通じゃない?
最近は列指向DBもあるけど
構造体とかオブジェクトとかとは逆だけどそれはそういうもんだと思うしかないのでは

65:デフォルトの名無しさん
14/03/05 19:55:49.67 .net
>データベース的には行指向のほうが普通じゃない?
実世界のデータ自体がそういう形だからね。
数理系の目的以外で使用するのはちと厳しい。

66:デフォルトの名無しさん
14/03/07 09:46:21.15 .net
>>58
行列データの物理的な格納方式のことを言っているのだったら、
C言語は行列の格納は行指向(row-major)だけど、
Fortranだと列指向(column-major)なので、Rが列指向なのはむしろ自然。

67:デフォルトの名無しさん
14/03/07 09:48:09.85 .net
RDBに慣れた人がKVSに文句言ってるくらい可笑しい話

68:58
14/03/07 18:07:17.21 .net
>次に、C言語の配列がなく、
>リストを配列と呼んでいるらしい
漏れの勘違い

Rのベクトルは、C言語の静的配列で、
同じデータ型の要素が並ぶもの

Rのリストは、C言語の構造体で、
異なるデータ型の要素が並ぶもの

Rのデータフレームは、Rのリストの集積

「アート・オブ・R・プログラミング」を読んでいるが、
オライリーの本は外人なので、
わかりにくいし、疲れる。時間のムダ

アンクの絵本みたいに、
図で表示すればすぐわかるのに

69:デフォルトの名無しさん
14/03/07 22:00:30.36 .net
>>68
文句ばっかりw
しかも間違っているし。

70:デフォルトの名無しさん
14/03/07 23:03:20.28 .net
>>58
数値計算専用のFortranは列指向なわけだが

71:デフォルトの名無しさん
14/03/07 23:04:33.54 .net
68みたいに何の素養もないボケがRを使うような機会ってあるの?

72:デフォルトの名無しさん
14/03/08 01:14:26.20 .net
ひょっとして手当たりしだいに履歴書だせば、Rでデータ解析するような仕事に付けるの?

73:デフォルトの名無しさん
14/03/10 17:40:34.54 .net
>>72
試してみれば?

74:デフォルトの名無しさん
14/06/23 23:56:50.05 8AKvYnoG.net
>>74
URLリンク(detail.chiebukuro.yahoo.co.jp)

75:デフォルトの名無しさん
14/06/25 10:07:33.40 2DQs2BI0.net
やはりそのようなパッケージはないということでしょうか?

76:デフォルトの名無しさん
14/06/25 12:34:21.85 dEg0ohw8.net
>>75
Tucker法とかなら、ThreeWayパッケージ

77:デフォルトの名無しさん
14/06/25 12:37:16.63 2DQs2BI0.net
ご返答ありがとうございます
three Wayパッケージについて調べてみたいと思います。

78:デフォルトの名無しさん
14/06/29 22:51:21.82 oVWMi4Qv.net
・グラフを重ねて描画
・グラフを並べて描画
この2つの両立は可能でしょうか?

以下の様な流れのコードで、可能かと思ったのですが、
ひとつのグラフエリアに全グラフを出力してしまい、実現できませんでした。
よろしくお願いします。


//描画領域を1行4列に
 jpg('test.jpg')
 par(mfcol=c(1,4))

//4回繰り返す
while(4回繰り返す){ 

 //1つのグラフに、3本の線を描画
  while(3回繰り返す){
   par(new=T)
   hogehoge = 描画したいデータ
   plot(hogehoge,type="l")
  }
}

//画像ファイル出力
dev.off()

79:デフォルトの名無しさん
14/06/30 10:15:13.59 F0ToNnNt.net
>>78
> ・グラフを重ねて描画
> ・グラフを並べて描画
> この2つの両立は可能でしょうか?

可能と言えば可能。
ただし、1つのグラフに、3本の線≠グラフを重ねること
複数の折れ線グラフを描画するときには、
plot()で軸などを描画した後に、lines()で線を描くのが基本。
matplot()を使うのもあり。

plot(runif(10), runif(10), type = "l")
lines(runif(10), runif(10), lty = 2, col = 2)
lines(runif(10), runif(10), lty = 3, col = 3)

これを1行4列に
op <- par(mfcol=c(1,4))
sapply(1:4, function(i){
hogehoge <- as.data.frame(x = runif(30), y = runif(30))
plot(hogehoge[1:10, ], type = "l")
lines(hogehoge[11:20, ], lty = 2, col = 2)
lines(hogehoge[21:30, ], lty = 3, col = 3)
})
par(op)
みないな感じにする。

なお、// のコメント禁止。代入に=を使うのは禁止。
初心者はpar(new=T)の使用禁止。
while()も真にやむを得ない場合以外は避ける(回数が決まっているループに使うのはもってのほか)。

80:デフォルトの名無しさん
14/07/15 00:50:38.77 wW4cYINX.net
画像ファイル形式に、表(行列)を出力する方法ってありますか?

無ければデータフレームをwriteでcsvに書き出して、スクショとってペイント切り貼りなので、
できれば避けたいです・・・

81:デフォルトの名無しさん
14/07/15 04:48:30.38 BzYTWLeF.net
gridExtraパッケージのgrid.table()でいける

82:デフォルトの名無しさん
14/07/15 09:50:16.91 zeQtrZTc.net
>>81
質問者じゃないけど、参考になった。

複雑な図にたくさんの数字ラベルをつけて、
横に数字とラベル名の対照表を簡単につけられないかと長年考えていたが、
これなら簡単そうだな。

op <- par(mfrow = c(1,2))
x <- data.frame(x = runif(10), y = runif(10))
plot(x, cex=2)
i <- 1:10
text(x, as.character(i))
grid.table(data.frame(Month = month.name[i]))
par(op)

だが、古典グラフィックとGridの共存がうまくいかないw

83:83
14/07/15 10:02:10.30 zeQtrZTc.net
突っ込まれる前に追記。
もちろん、下記のようにすれば、ある程度実現することは分かっているけど、
ちゃんとレイアウトされた表にすることが難しい
x <- data.frame(x = runif(10), y = runif(10))
plot(x, xlim = c(0, 1.5), cex=2)
i <- 1:10
text(x, as.character(i))
legend("topright", paste(formatC(1:10, width=2),
month.name[i]), title = "Month", bty = "n")

84:デフォルトの名無しさん
14/07/22 23:06:40.83 ygL5Ppst.net
>>81
ありがとうございます。
無事表示できました

贅沢を言えば、
>>82の方が言うように
既存のplotと共存させてなくなってきました。
ライブラリを読みましたが、既存のplotとの共存はできないのでしょうか

①②

①プロットしたグラフ
②その値の表

85:デフォルトの名無しさん
14/07/23 14:05:46.44 DL7ooDbK.net
>>84
古典グラフィックと混載するのではなく、
全てをGrid化して制御すれば、自由自在に描画できると思うよ。
とりあえず、viewport()を勉強してくれ

ちょっと長くなるけど、下記のコードは期待通りになった。
library(gridExtra)
grid.newpage()
pushViewport(viewport(x = 0, width = 0.8, just="left"))
pushViewport(plotViewport())
grid.rect(); grid.xaxis(); grid.yaxis()
x <- runif(10); y <- runif(10)
grid.points(x, y, size = unit(1.5, "char"))
grid.text(as.character(1:10), x = x, y = y)
grid.text("Grid test plot", y = unit(1, "npc") + unit(2, "lines"))
popViewport()
pushViewport(viewport(x = 1.2, width = .2, just = "right"))
grid.table(data.frame(Month = month.name[1:10]))

86:デフォルトの名無しさん
14/08/10 10:38:43.73 frgBbTF3.net
【動物】外へ出たネコはどこへ行くのか? 1000匹のデータから解明するプロジェクト [8/8]
スレリンク(newsplus板)

87:デフォルトの名無しさん
14/08/10 17:44:43.02 2ZseX05a.net
RのクラスってC言語上でクラスを作るみたいなもんだな

88:デフォルトの名無しさん
14/08/12 16:06:31.87 8jEy2U7J.net
pygmentsを使ってみたが、

$ pygmentize -N tmp.R
splus
$ pygmentize -N tmp.r
rebol

拡張子が小文字だとREBOLと認識される模様。

89:デフォルトの名無しさん
14/08/13 10:33:15.47 oD1F8/c3.net
代入にほとんど<-が使われていますが、
=を<-と同じとして使ってよいのでしょうか?

90:デフォルトの名無しさん
14/08/13 10:54:55.70 o5aSPwlN.net
>>89
だめ。意味が違うし、結果が異なる場合もある。
ベテランでも<-にすべきところで=を使っている人もいるので、
混乱すると思うけど、S言語の仕様に従った方が間違いがない。

<-と=で結果が変わってしまう例:

> (x <- 9:11)
[1] 9 10 11
> mean(x = 1:3); mean(x)
[1] 2
[1] 10
> mean(x <- 1:3); mean(x)
[1] 2
[1] 2
> x
[1] 1 2 3

引数に<-を使うと、mean(x)の値が予期せず変わってしまう。
9,10,11の平均値を2として論文に書いてしまう人はいないだろうが、
複雑な計算だったら、気がつかずにそのまま解析結果にしてしまうかも知れない。

91:デフォルトの名無しさん
14/08/13 23:10:16.62 oD1F8/c3.net
>>90
ありがとうございました
最近勉強始めたのですが、教えていただけなければ全部=で覚えるところでした
また機会ありましたらよろしくおねがいします

92:デフォルトの名無しさん
14/08/14 23:20:58.24 R0JPen8d.net
ちょっとお聞きしたいのですが、
x y z f
1 1 1 f1
1 1 2 f2
1 1 3 ・・
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
・・
のようなデータがあって、
例えばzが1だけのx,y,fだけで3次元サーフェスプロットを書きたいのですが、
Rだとそういったことはもしかしてできたりしますでしょうか?
(可能なら他のz=2,z=3でのサーフェスプロットも同時に表示するなど・・)
突然ですいませんがもしよろしければご教示いただけると幸いです

93:デフォルトの名無しさん
14/08/15 07:01:45.18 fd04cuVy.net
subsetで抜き出せばいいんじゃないの?

94:デフォルトの名無しさん
14/08/15 07:27:33.42 Evb4CBKF.net
aggregate

95:デフォルトの名無しさん
14/08/15 10:42:07.27 keCvNQ07.net
>>92
> dat <- data.frame(expand.grid(1:3, 1:3, 1:2)[,3:1], as.factor(paste0("f",1:18)))
> names(dat) <- c("x", "y", "z", "f")
> dat
x y z f
1 1 1 1 f1
2 1 1 2 f2
3 1 1 3 f3
4 1 2 1 f4
5 1 2 2 f5
6 1 2 3 f6
[中略]
17 2 3 2 f17
18 2 3 3 f18
というデータがあったとして、
> (dat1 <- dat[dat$z == 1, ])
x y z f
1 1 1 1 f1
4 1 2 1 f4
7 1 3 1 f7
10 2 1 1 f10
13 2 2 1 f13
16 2 3 1 f16
とすればzが1だけのデータになる。これを行をx、列をyとしたときのfの行列を作成してpersp()で表示すればよい。
> m <- matrix(NA, nrow = max(dat1$x), ncol = max(dat1$y))
> for(i in 1:nrow(dat1)){m[dat1[i, 1], dat1[i, 2]] <- dat1[i, 4]}
> persp(m)
factor型のfを強制的に整数型にしているけど、適宜、自分の思うとおりにアレンジしてくれ。

96:デフォルトの名無しさん
14/08/16 09:02:48.15 qH3oiq6R.net
>>93-96
ありがとうございました
特に具体的なやり方まで教えていただき、感謝です
試させていただこうと思います

97:東京女子医科大学病院プロポフォール大量投与
15/06/08 16:27:57.84 Fqp3awmG.net
マスゴミ・売国奴・医療業界が隠そうとする真実---------------------安楽死---------------------奴隷に勝手に死なれては困る
安楽死旅行企画が大人気|竹田恒泰チャンネル
URLリンク(www.youtube.com)

武田邦彦:安楽死と大麻、そして売春・・・オランダに学ぶ
URLリンク(www.youtube.com)

安楽死党
URLリンク(www.youtube.com)
自殺は後遺症が怖い!だから-----------------------------------安楽死制度-------------------------------------安心して生きるために

98:デフォルトの名無しさん
15/06/08 18:08:45.21 rJB8iCDI.net
まだあったのかこのスレ

99:デフォルトの名無しさん
15/06/20 23:30:00.14 Qr2aZUd+.net
bash スクリプト内でRのスクリプトを起動して統計処理させてその結果を
1か0かで戻り値($?)として返すにはどうすれば良いでしょうか?

100:デフォルトの名無しさん
15/06/21 00:47:25.51 3VZnQzoZ.net
シェルスクリプト test.sh の内容
#!/bin/bash
r --vanilla --slave < test.R
# コマンドの直後に、終了コードを見る
echo $?

101:デフォルトの名無しさん
15/06/21 01:10:40.72 r+1klduk.net
ありがとうございます。
test.R側で戻り値を返す際の指定の仕方が判らなかったのですが、
単に戻り値が入った変数を最終行に書く?

102:デフォルトの名無しさん
15/06/21 01:21:55.21 3VZnQzoZ.net
Rで、returnを使えるかどうか、よく知らないけど、
test.R(Rスクリプト)側に、return 0か1を書けば、
シェルスクリプト側に、返り値を返せないのかい?
もし返り値を返せるのなら、その直後に、
echo $? で確認できる

この話題を続けるのなら、名前欄に100と入れておくれ

103:100
15/06/21 19:38:19.06 r+1klduk.net
手元のPCにインストールしてやってみたのですが、
test.Rで
nantoka <- 123
nantoka
とやって>>100のようにして $?を確認しても0ですね
return nantoka
と書くと今度は「エラー:予想外のシンボルです」と出て弾かれます
return はtest.R内定義された関数からの戻りにしか使えなさそうです。
やっぱtest.Rを呼び出した側にステータス値を返すのは出来ないんですかねぇ。

104:デフォルトの名無しさん
15/06/22 12:27:26.12 uueAlGhq.net
>>103
ちょっとまて。
0で正解だろ。
Rの処理が失敗すれば1に、成功すれば0だから、それで正しいだろ。
何がしたいんだ。
------- ここから -----
#!/bin/bash
cat <<EOF > test.R
nantoka <- 123
hoge
EOF
R --vanilla --slave < test.R
echo $?
------- ここまで ------
これならちゃんと期待通り1が返るけど。

105:100
15/06/22 23:35:39.56 S3HFEXZp.net
>0で正解だろ。
>Rの処理が失敗すれば1に、成功すれば0だから、それで正しいだろ。
質問の仕方が悪くてすみません。具体的にやりたい事を書くと、mean()で計算した結果が、
ある範囲に入っていたらbashスクリプト側にスタータス値として 1を返し、範囲外だったら0
を返すをやりたいんですが、どう書いたら良いんでしょう。。。

106:100
15/06/22 23:57:01.52 S3HFEXZp.net
Rスクリプト側でステータス値を標準出力に印字して
bashスクリプト側で変数に代入する事で出来ました。
>>104さんのレスがヒントになりました。感謝!
ありがとうございました。

107:デフォルトの名無しさん
15/08/02 12:32:42.11 idlTEEIr.net
RのpackageがGPL3のとき、それを使ったcodeもGPL3にしなければいけないのでしょうか?
packageがGPL2のときは、どうなるのでしょうか?ライブラリを動的にリンクすると解釈して、自分のコードはGPLにしなくていいのでしょうか?

108:デフォルトの名無しさん
15/08/28 17:44:03.14 gCzTjEPZ.net
Rが嫌いすぎる。
1オリジンが気に食わない。
インデックス指定で、やたら+1とか-1を書かないといけない。バグの元凶。
名前空間の概念が皆無なのが気に食わない。デフォルトインストール状態でグローバルな名前空間に、
小文字二文字でしらっと置いてある識別子がただのサンプルデータ(例: lh)だったりする。
文法が気に食わない。「a <- b < -1」って書くべきところ、間違ってマイナスの前のスペースを
入れ忘れると、警告も無く別の意味になる。
設計したやつ頭悪すぎ。
できれば使いたくない、抹殺したいんだけど、仕事の分野で好んで使う人が多いんだよなぁ。

109:デフォルトの名無しさん
15/08/28 18:52:05.79 uyIc6mpd.net
>>108
はははは、ウケる!
> デフォルトインストール状態でグローバルな名前空間に、
> 小文字二文字でしらっと置いてある識別子がただのサンプルデータ(例: lh)だったりする。
これは君の勘違いだから、よく確認して。

110:デフォルトの名無しさん
15/08/29 19:00:44.80 6T7B8OhX.net
そこらのLinuxディストリのリポジトリからインストールすると、
datasetsパッケージから読まれた状態にならない?

111:デフォルトの名無しさん
15/08/31 02:17:53.94 /Res4O1b.net
googlabilityの低さだけでRは唾棄するに値する。

112:デフォルトの名無しさん
15/08/31 02:41:18.19 YeB+ArJK.net
S

113:デフォルトの名無しさん
15/08/31 13:01:31.84 pbDzwjeD.net
>>110
そうだね。
$ R --vanilla
[snip]
> search()
[1] ".GlobalEnv" "package:stats" "package:graphics"
[4] "package:grDevices" "package:utils" "package:datasets"
[7] "package:methods" "Autoloads" "package:base"
でも、
> ls(envir = .GlobalEnv)
character(0)
だよ。

114:デフォルトの名無しさん
15/08/31 13:41:28.94 pbDzwjeD.net
なお、起動時にライブラリが自動読み込みされるのが嫌なら、
~/.Rprofileなどで、
options(defaultPackages="")
とでもしておけばよいのでは。

115:デフォルトの名無しさん
15/08/31 15:23:52.28 lnhGD55+.net
なにバッドノウハウひけらかしてドヤ顔してんのww
Rが低能向けゴミ言語であることの証左にしかならんね。

116:デフォルトの名無しさん
15/09/01 01:31:57.27 bxs8OqLw.net
じゃあフリーでLinuxでもWindowsでも使える
R以上の統計解析言語教えてくれ

117:デフォルトの名無しさん
15/09/01 10:36:16.50 FCO6+VHV.net
>>115
コンピュータ言語だと思うから、そのような感想が出てくるのでは?
統計ソフトウェアのマクロ機能と認識したらいい。

118:デフォルトの名無しさん
15/10/23 10:35:38.68 PW+zDUKh.net
すみません、質問です。Rの教科書をめくりながら、length(grep("^[0-9]{8}", code))
というのを理解しようとしているのですが、"^[0-9]{8}"というのはどういうことですか?

119:デフォルトの名無しさん
15/10/23 21:46:06.88 gk5p2TwL.net
どう見ても正規表現だらうが
r以前の問題

120:デフォルトの名無しさん
15/10/24 00:07:21.80 UobHhbYM.net
^[0-9]{8}
^ は行頭。
[0-9]は、0~9のうちのどれか、つまり数字。
{8}は、直前の文字が、8回繰り返す
つまり、行頭に、8桁の数字がある行にマッチする

121:デフォルトの名無しさん
15/10/24 10:04:48.60 15ItISv+.net
ありがとうございます、正規表現でぐぐって勉強しました。

122:デフォルトの名無しさん
15/11/21 00:24:32.92 VHysWTPx.net
striptimeで、時刻型に変換したデータを横軸にトレンドグラフをplotしています
このグラフに縦線を入れたいのですが、可能でしょうか?
date = c(20151101235959 , 20151103235959)
value = c(10 , 20)
plotdate = striptime(date , "%Y%m%d%H%M%S")
plot(plotdate , value , type="l")
ここまでは可能でした。
x軸に縦線を入れたいのですが、ablineでの描き方がわかりません
どなたかご教示いただけないでしょうか

123:デフォルトの名無しさん
15/11/24 22:19:32.58 L4GoLvG3.net
>>122
縦線って
> for(i in seq(from=plotdate[1], to=plotdate[2], length.out=10)){abline(v=i)}
こんな感じのものを求めているの?

124:デフォルトの名無しさん
15/12/18 19:52:52.36 2coSHlfA.net
すみません、どうしてもわからなくて質問です。
a<-1:10
b<-1:10
for(i in 1:10){
for(j in i+1:10){
if(a[i]!=b[j]) print(

125:デフォルトの名無しさん
15/12/18 19:54:57.43 2coSHlfA.net
すみません、どうしてもわからなくて質問です。
a<-1:10
b<-1:10
for(i in 1:10){
for(j in i+1:10){
if(a[i]!=b[j]) print("hello") }}
これを実行したらif文の所にエラーが出るんです。どうしたら解決できますか。教えてください、お願いします。

126:デフォルトの名無しさん
15/12/20 11:31:46.28 5iYm2Bjx.net
「i+1:10」のところの演算子で、+よりも:が優先されるから。
「(i+1):10」とすればよい。

127:デフォルトの名無しさん
15/12/22 17:32:24.26 tE+guwu7.net
ありがとうございます。聞かないと分かりませんでした。

128:デフォルトの名無しさん
16/02/15 22:29:22.41 GQeFSl1p.net
R言語徹底入門、初版は何箇所か誤訳があるので購入は様子見。

129:デフォルトの名無しさん
16/02/16 23:39:43.76 Np/Wt5jb.net
増刷がかかるか
誤訳が修正されるか
と考えると買っちまうかな、「徹底入門」じゃなくて「徹底解説」。

130:デフォルトの名無しさん
16/02/17 03:10:57.33 pWJL2EDc.net
増刷かかるほど売れないと思う。
でも仮に誤りがあったとしても得られるものは少なくないと思う。
岩波のWEBサイトで数ページPDFで読める。
R言語徹底解説
URLリンク(www.kyoritsu-pub.co.jp)

131:デフォルトの名無しさん
16/02/17 16:47:27.88 5ZIVa4Nt.net
岩波w

132:デフォルトの名無しさん
16/02/19 15:53:33.09 SsZWzvjo.net
第二刷まだー?

133:デフォルトの名無しさん
16/02/19 17:22:28.25 tCyy2v6H.net
そろそろ第三刷

134:デフォルトの名無しさん
16/02/19 17:25:50.06 SsZWzvjo.net
>>133
いろいろ直ってる?

135:デフォルトの名無しさん
16/02/20 11:42:28.63 OYmUxYa1.net
Pythonのyieldに相当するものってないの?

136:デフォルトの名無しさん
16/02/26 21:22:23.14 xarpBwH6.net
書泉ブックタワーで一刷が山積みになってたから
各種の誤りが訂正された二刷が出るのは当分先になるのかな?

137:デフォルトの名無しさん
16/02/28 16:19:00.69 t8GtJYBh.net
買った。第一刷。ハードカバーとは知らなんだ。

138:デフォルトの名無しさん
16/02/29 22:28:35.19 8jlAnHOJ.net
技術書なんて誤訳だらけだろ。校正してるのは文系なんだから。
ほとんどがマイナー、専門すぎてサイトに修正一覧出て初版で終わりだよ。
買いそびれたら最後、ボッタクリ価格でアマゾンで買うことになる。
手に入らないと途端に、誤植もなく、素晴らしい書籍とかデタラメなレビューが書かれて価格が釣り上がる。

139:デフォルトの名無しさん
16/02/29 22:45:23.04 LB9A9kH0.net
なんかあったの

140:デフォルトの名無しさん
16/02/29 22:52:15.59 8jlAnHOJ.net
過去に散々酷い目にあったよ。一番酷いのはPrograming C++の糞訳本だったかな。
あと確率統計の本で題名詐欺の本もあったよ。まじみんな気をつけたほうがいいよ。アマゾンのレビューだけは。

141:デフォルトの名無しさん
16/03/01 13:16:03.01 spAIXSZN.net
こんなとこで文句言ってるなら原著で読めって。

142:デフォルトの名無しさん
16/03/01 13:59:13.93 RhqnDJJ8.net
>>141
今日もあっちこっちで馬鹿レスしてるなおまえってw

143:デフォルトの名無しさん
16/03/08 03:16:56.45 z1RS+GDI.net
>>140
最近のアマゾンのレビューはほんと嘘だらけ。

144:デフォルトの名無しさん
16/04/15 16:50:29.31 7jD9y2lk.net
R-Sourceが404な気がする

145:デフォルトの名無しさん
16/04/19 23:37:39.26 rVIFp0ZR.net
もしかしてR-Tipsなくなってる?

146:デフォルトの名無しさん
16/06/15 18:56:31.95 P/ukFF1V.net
R言語徹底解説
八重洲ブックセンターで第三刷があった。
平積みの方は第一刷だったけどw

147:デフォルトの名無しさん
16/07/23 19:10:41.11 YmsFIHnc.net
Rでは2次元座標に円を描く事はできないんですか?

148:デフォルトの名無しさん
16/07/23 19:46:19.77 b4mEcWyo.net
できるよ
でも今なら Julia がおすすめでっせ

149:デフォルトの名無しさん
16/07/24 11:38:41.23 iiJWc7Dl.net
どうやってできるんですか?

150:デフォルトの名無しさん
16/12/01 20:05:10.85 m2zH+gmd.net
過疎しているときに申し訳なくお聞きしたいのですが、
N(10,0.5^2)の,7.5以上の上側確率をRで一発で求めるコマンドはないでしょうか?

151:デフォルトの名無しさん
16/12/01 20:14:41.90 m2zH+gmd.net
すいません自己解決しました
pnorm(-(7.5-10.0)/0.5)でした
スレ汚しすいませんでした

152:デフォルトの名無しさん
16/12/01 20:26:09.26 vHqhSsiW.net
おめ

153:デフォルトの名無しさん
17/05/05 07:53:03.19 tmTYNlNg.net
Rを使っている人ならわかる人もいると思うので
GNU科学技術計算ライブラリ リファレンス・マニュアル
URLリンク(ja.wikipedia.org)
のどの関数を使って、どの関数を数値積分すればよいのか、
教えてほしい。
γ関数 URLリンク(ja.wikipedia.org) を
使って ControlChartConstant2Double = gsl_sf_gamma(InSizeDouble / 2) * Sqr(2 / (InSizeDouble - 1)) * gsl_sf_gammainv((InSizeDouble - 1) / 2)
とすると、管理図用定数 c4 が得られる。
d2, d3 を求めるための
URLリンク(excelshogikan.com)
φなんたらが、GSLのどの関数なのか、数値積分のどの関数を使うのか、
がわからない。
積分は、わからなければ台形公式でエィヤーとやってしまうけど。
n20位までは数値表があるのだが、nをちょっと大きくして、24時間ことのn24とかやろうとすると、のっていない。
1回計算してしまえば、数値表を使って参照するだけなのでRで処理で切ると思う。

154:デフォルトの名無しさん
17/05/05 10:57:47.64 qmO3ZpYG.net
日本語を勉強する

155:デフォルトの名無しさん
17/05/05 11:12:35.50 E/UcmmKD.net
それな

156:デフォルトの名無しさん
17/07/20 19:18:28.80.net
Sはどこへ行ったか

157:デフォルトの名無しさん
17/08/15 19:07:36.81 7E+e5Eok.net
羽鳥の本は英語ならたいていpdfで無料で読めるから、文句いう人は英語で読めばよいと思うの

158:デフォルトの名無しさん
17/09/05 00:29:28.39 XRIbbVG3.net
使い始めて1ヶ月
未だにエクセルより便利な場面に出会いませぬ
回帰分析程度じゃ意味ないかな

159:デフォルトの名無しさん
17/09/05 04:24:09.07 RP+TKgYe.net
したい事と選んだ手段がズレてるのでは?

160:デフォルトの名無しさん
17/09/05 10:33:35.89 7nZf6TFR.net
まずは、セルでチェックできる程度の規模のデータか、あるいはもっと大きいのかによるんじゃないかな。
そして作業として簡単なものなら、多少表計算ソフトに歩があると思う。
でもこっちに慣れるとぜんぶこっちでやっちゃうけどねw
欠点としてはライブラリの秩序のなさかなw

161:デフォルトの名無しさん
17/09/05 12:46:08.24 pAPclJg5.net
RMarkdownを使い始めると分析とレポート作成が同時にできるので便利さを感じると思うけどな

162:デフォルトの名無しさん
17/09/06 12:00:48.68 DOMpq9nC.net
Pandas

163:デフォルトの名無しさん
17/09/06 17:41:06.32 1PfKZvMD.net
>>161
うむ。あれはいいものだ。

164:デフォルトの名無しさん
17/09/07 08:59:11.93 Omz9mDs1.net
jupyter

165:デフォルトの名無しさん
17/09/09 10:59:21.18 9IxpzJRD.net
なるほどと思ったブログがあったから貼っとくよ
yhat | R for Excel Users
URLリンク(shotwell.ca)
ある特定の環境での成功体験が新たな環境への適応の障害となるのは
エクセルからRに限ったことではないと思う

166:デフォルトの名無しさん
18/02/09 21:23:26.98 8uzFrfmd.net
Rが盛り上がらなくて悲しい

167:デフォルトの名無しさん
18/02/10 22:42:50.82 fkUAhOd/.net
大盛り上がりと言ってもいいんじゃない?
URLリンク(insights.stackoverflow.com)

168:デフォルトの名無しさん
18/02/11 00:58:01.63 WMQeXuiD.net
上限100%の上部90%以上カットしたらそうなるわ

169:デフォルトの名無しさん
18/02/11 11:54:36.80 jK1XmpcF.net
>>166
それは仕方ないと思うよ
統計解析手法開発用には向いているソフトだけど
統計解析を利用した処理アプリで使うのに向いている
ソフトウエアというわけじゃなく
無償なんで大学でも採用して広まっているという話だから。

170:デフォルトの名無しさん
18/02/11 12:28:34.22 aLeqVhz7.net
放送大学の講座は親切
URLリンク(vod.ouj.ac.jp)

171:デフォルトの名無しさん
18/02/11 13:02:45.83 aKIhhURz.net
>>156
Rになった
S-plusやってたTIBCOもRの別実装始めたくらい

172:デフォルトの名無しさん
18/02/11 13:37:06.23 jK1XmpcF.net
そりゃ当然の流れやな。

173:デフォルトの名無しさん
18/02/11 17:47:44.11 Pwi4tm3/.net
>>167
右肩上がりなのはとても良いこと
純粋なプログラミング言語じゃないから増えてるだけで御の字なのかねえ

174:デフォルトの名無しさん
18/02/14 19:42:52.67 SwEfqZxS.net
データをこねくり回してグラフ書くにはexcelより融通が利いてしかも早い
ような気がする

175:デフォルトの名無しさん
18/02/14 22:01:38.62 NrdtujHN.net
>>174
そりゃそうでしょうね
Excelはこねくり回さないで使うためのツールだから

176:デフォルトの名無しさん
18/02/14 23:37:10.00 2fmZYg83.net
グラフはggplot2が強力だよね
facetとかはExcelだと大変
デフォルトのテーマが少し古くさいけど

177:デフォルトの名無しさん
18/02/14 23:51:00.08 ePIYSj2R.net
R使い出してから色々と試すのが簡単なんで面白いわ

178:デフォルトの名無しさん
18/02/15 01:24:08.19 Udxebxf+.net
機械学習とかビッグデータとかPythonと何かの組み合わせに圧倒されててRとかどマイナーになってしもうた

179:デフォルトの名無しさん
18/02/15 06:34:31.40 /0tLiEBT.net
適材適所でしょうね。
元々設計自体がデカいメモリーがあったあらと言う前提で
設計者にとっては作りが楽だけど、大容量で使う利用者が
対処しないといけないという安易なつくりなんですよね。
その代り少量データを対象とした統計手法研究などには
楽なんで。

180:デフォルトの名無しさん
18/02/15 12:27:10.58 wFR1obku.net
Rにはなんといってもtidyverseがあるからなあ
dplyrとかpurrrとか簡単で強力だから解析やるならR
まあ適材適所で、ベイズならstanだし、機械学習や文字ならPythonが優勢、事務処理ならExcelVBAってとこ

181:デフォルトの名無しさん
18/02/19 19:54:51.25 OYvsmEoK.net
>>170
統計って回帰分析から急に難解になる
それにじっと耐える生徒さんは偉い
R初心者の私にはとっても役立つ講義だ

182:デフォルトの名無しさん
18/02/22 18:00:01.85 +IAzRovj.net
何かいいエディタないかな
Rに最初からついてるエディタ使ってるけど不便

183:デフォルトの名無しさん
18/02/22 19:41:30.41 wBIv7NWL.net
RStudioのエディタじゃだめかい?

184:デフォルトの名無しさん
18/02/23 17:28:14.29 0tA6Y4q1.net
>>181
紫布さんかわいい

185:デフォルトの名無しさん
18/02/23 20:13:41.57 1VhTlckH.net
>>183
RStudioは2,3回インストールしてみたけど良く分からないし重いしですぐ消してしまってたんだよね
慣れると便利なの?

186:デフォルトの名無しさん
18/02/23 21:18:49.28 L8hk+ob/.net
RStudioのエディタは入力補完機能が凄い便利。パッケージの関数だけでなく自分で作った変数や関数も補完してくれる。
関数のヘルプもキー一つで表示できるし、ノートブック機能を使えばエディタ内で実行結果を表示してくれる。
その他、パッケージ管理とかプロジェクト管理とか便利だと思う。

187:デフォルトの名無しさん
18/02/25 16:50:33.30 3M2goUSG.net
具体的な話を聞くと便利そうな気がしてくる
やっぱりRStudioがベストなのかもね
しばらく使ってみようかな、ありがとう

188:デフォルトの名無しさん
18/02/26 12:53:30.71 XW8rTQGI.net
補完機能なしでプログラミングするのって、武器を持たずに福岡の街を歩くようなものだよ。

189:デフォルトの名無しさん
18/02/26 18:57:28.32 SIjqaO4S.net
こえぇぇぇ

190:デフォルトの名無しさん
18/03/03 09:23:09.96 lZ+hoanu.net
初心者には
Rコマンダーは便利だが
基本が理解するのが課題

191:デフォルトの名無しさん
18/03/14 02:41:29.02 4vL4k9pB.net
R version 3.4.3 でR consoleを起動した直後に乱数を発生させると
set.seedで指定していないのに前回起動時と同じ乱数が出てしまいます。たとえば
runif(5)だと
[1] 0.3108217 0.4556531 0.2194121 0.6496887 0.2677915
が毎回出てきます。
そういのものなのでしょうか?

192:デフォルトの名無しさん
18/03/14 02:55:44.49 2RQsDUO9.net
>>191
R x64 3.4.1(windows10)ではそれを再現できなかった
そういうものではないと思う

193:デフォルトの名無しさん
18/03/14 13:07:49.78 4vL4k9pB.net
>>192 ありがとうございます。そうなんですか。自分の環境はwin7sp1 64bit で
Rは5年前にインストールしその後何度か上書きインストールしたまに使っててたんですが
何らかの理由でRの中の設定が変更されたか破壊されてるんですかね
原因がわかったらまた書きます。

194:デフォルトの名無しさん
18/03/14 14:55:10.28 wgcmBZf4.net
>>191
R3.4.3@Win10だけどそういう状態にはならないねえ。RStudioとかVSCodeとかでも何度かやってみたけど全て違う値。
事前にhtmlwidgetとか使ってない?

195:デフォルトの名無しさん
18/03/14 16:28:52.83 4vL4k9pB.net
>>191です
試しに別のフォルダに新規インストールして何度か起動を繰り返して確認してみたら
正常に毎回違う乱数がでました。
なのでもう新規インストールで実行することにしました。
でも、どこに問題があるのか特定しないとまた起きそうなので少しづつパッケージを削除しつつ確認中・・・
>>194
ありがとうございます。
htmlwidgetsって何?って感じなんですが入ってました。
いつ何のために入れたのかもわからないのですが(笑)

196:デフォルトの名無しさん
18/03/14 17:15:01.96 4vL4k9pB.net
>>191です。
パッケージの問題ではなくて、パッケージの作者の方々疑ってごめんなさい
どうも>>194さんの指摘どおり事前になにかが読み込まれてること気づきました
起動直後にカーソルの↑を押すとなぜか
昔コンソールで打ち込んだコマンドが未だに出てきちゃうんです
たとえば、
> source('~/R/test.r') 

197:デフォルトの名無しさん
18/03/14 17:57:53.40 wgcmBZf4.net
.Rhistoryがおかしくなっちゃったのかな?まあ、原因が分かってなにより?

198:デフォルトの名無しさん
18/03/14 18:20:45.09 4vL4k9pB.net
>>191です。
原因がわかりました。
[Previously saved workspace restored]と出てることに今気づきまして
以前マイドキュメントに保存していたワークスペースが自動で読み込まれるためでした。
でもなぜか、"test.RData"の名前で保存したものは自動で読み込まれず
".RData"のように拡張子のみのファイル名が存在するとそれが読み込まれるようです。
新規インストールのRではがあっても読み込まれないのですが、
試しにC:\Program Files\R\R-3.4.3\bin\x64のフォルダ内にコピペしたら起きるようなので
変な名前やいけない場所には保存しては駄目ってことですね
ありがとうございました。

199:デフォルトの名無しさん
18/03/14 18:21:46.77 2RQsDUO9.net
.Rhistoryでset.seed()使ってるってことなのか

200:デフォルトの名無しさん
18/03/14 18:55:36.14 4vL4k9pB.net
>>199
うちのマシーンの環境がめちゃくちゃの可能性もありますが、
新規インストール直後のコンソールで保存したワークスペースをそれで読み込んでも
同じ乱数が再現されるので
保存した時のその後の乱数生成パターンも復元されると解釈しちゃいました。

201:デフォルトの名無しさん
18/03/14 18:58:12.34 QlFm0BKE.net
はぇ~
そういや最近出たブルーバックスのRの本が売れてるみたいだね

202:デフォルトの名無しさん
18/03/14 19:38:47.73 wgcmBZf4.net
>>200
環境の自動復旧は無効にしておいた方がいいよ。ググれば無効にする方法が見かるハズ…
>>201
あの本、ブログか何かで宣伝してたよ。センセーショナルな見出しだったな。

203:デフォルトの名無しさん
18/03/14 19:42:24.61 wgcmBZf4.net
この記事だ
URLリンク(lab-on.jp)

204:デフォルトの名無しさん
18/03/20 10:02:37.61 5CLL2roU.net
その本を買ってPCで真似してます
Rコマンダーのお陰で敷居は下がりました
Rの壁は
出力データの読み方、意味するところの理解
質のよいデータはあるので頑張る

205:デフォルトの名無しさん
18/03/20 11:50:41.25 rZb/Vl03.net
敷居が高いと思ってる人のためのセミナーが明日、白金台の明学で開催されるよ
URLリンク(www.socialpsychology.jp)

206:デフォルトの名無しさん
18/03/20 12:11:32.56 QFcU3Atb.net
共立出版のRで学ぶデータサイエンスシリーズの15巻とか16巻は
ずっと欠けてるけどいつ出るのですか?

207:デフォルトの名無しさん
18/03/21 13:46:02.45 lT80+4ah.net
>>203
jupyter notebook と pandas 最強だな

208:デフォルトの名無しさん
18/03/27 23:23:26.50 88y58jW2.net
エクセルソルバーのGRGみたいな非線形最適化制約有りをやりたいんだけど、Rでもできる?

209:デフォルトの名無しさん
18/03/29 21:47:07.36 QFtrDbDX.net
>>204です
読み終えた、とても勉強になりました
困難さはRではなく統計学でしたが
これは実践するしかないですね
気になったとこは頭に入れておきます
P112の3次元散布図ですが
Microsoft R Open version3.4(64bit)では
作図が表示されませんでした

210:デフォルトの名無しさん
18/03/30 15:16:43.56 zQBQo8b3.net
おめ

211:デフォルトの名無しさん
18/05/17 10:20:38.86 X8D7/hwr.net
Rをかじっても
やはり、考え方がわかってないとだめだね
ということで、
「入門はじめての分散分析と多重比較」を読んでる

212:デフォルトの名無しさん
18/05/17 17:50:52.94 4WSqYyn0.net
Rだけとりあえず使えても、統計学がわかるわけじゃないからねw
しかし慣れるとデータ扱うだけでも便利だなぁ。
でもちょっと不安なのが、変数が隠せないから自分で書いた変数とパッケージ内の関数が
偶然だぶったりしないもんなのかな・・・ってところ。
どうなん?

213:デフォルトの名無しさん
18/05/17 18:14:17.63 0I05aDJU.net
そのあたりは「名前空間」で調べて見るといいよ

214:デフォルトの名無しさん
18/05/17 21:17:22.96 4WSqYyn0.net
ふむ。
ありがとう。

215:デフォルトの名無しさん
18/05/19 07:34:08.00 KMcR+K4m.net
ダブっても問題無いんじゃない?
パッケージの変数を上書きしてしまう理由として考えられるのは
1. 知らずに上書きしてしまう 2. 知っててあえて上書きする
だけど、どちらの場合も元の変数を使わないだけの気がする
安心するには実際にパッケージを壊してみるのも手かも
理由は異なるけど変数スコープの問題でwithを使ってる
my = list (`%>%` = purrr::`%>%`, json = jsonlite::toJSON, id = function (x, ...) x);
my = with (my, {
id (1 : 10) %>% json %>% print; # my環境の変数を使う
rocal = 123; rocal %>% print; # rocalは外から見えない
my $ environment = function (...) 'hello world'; # 勧められないけど無問題
my $ try = tryCatch; # あえて上書き
my;
});
with (my, {
try (typeof (rocal), error = function (ex) 'rocal is local') %>% print;
environment (try) %>% print; # hello world
base::environment (try) %>% print; # my$tryの環境はbase
base::environment (try) = base::environment (); # my$tryの環境をmyに変更
tryCatch (try (stop ('try'), error = function (ex) 'catch') %>% print
, error = id) %>% print; # my$tryが壊れた my$environmentが悪さ
base::try (stop ('try')) %>% print; # base::tryは無傷
base::environment (try) = parent.env (base::environment ()); # my$tryの修理
try (stop ('try'), error = function (ex) 'catch') %>% print; # my$tryの復活
});
てな感じ
多くのサンプルでwithにデータフレームを代入してるけどリストでもオケー
小さな計算をいくつもする時にお手軽だと思う

216:デフォルトの名無しさん
18/05/19 09:59:21.70 tLdbKYkS.net
今から学ぶならJuliaにせい
Rよりずっと速い、書きやすい

217:デフォルトの名無しさん
18/05/19 11:12:53.58 ijkQlh0o.net
うむ

218:デフォルトの名無しさん
18/05/19 13:40:20.91 0pyI5MQK.net
まあ、rocalとか書いちゃうのが

219:デフォルトの名無しさん
18/05/23 19:12:36.38 Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
6O1Q6

220:デフォルトの名無しさん
18/05/24 10:36:25.46 cPlRxlDn.net
6O1Q6

221:デフォルトの名無しさん
18/06/03 23:20:33.44 fG0CD0s1.net
>>135 あるよ
``` {python}
def joking (a, b):
while True: a, b = b, a + b; yield b;
```
``` {r}
with (new.env (), {
obj = reticulate::py $ joking (0, 1);
sapply (1 : 10, function (...) reticulate::iter_next (obj));
});
```
もっとマシというより楽しい解答はこれかな 読んでないけど
* [Python-like generators in R ・ GitHub](URLリンク(gist.github.com))
で、最終的な答えは「ない」だと思う
技術的な問題というより文化的なところに理由がある気がする
pythonにパイプ演算子がないのと同じ理由
実用的なyieldを実装しようとすると文法の修正が必要になると思う
言語仕様の複雑化という投資が必要になるので
それなりの需要が見込めないと導入には踏み切れないかもね
フィボナッチ数列ではyieldの有り難みは見えないけど
自動微分とは比較にならないほど汎用性の高い有り難い機能だと思う
だけど自動微分と似ているところがあって
どんな複雑なニューラルネットも泣けば自前で微分できるし
どんな複雑な関数のyieldも泣けば自前でイテレーターを作れる

222:デフォルトの名無しさん
18/07/04 22:35:50.56 gFgZc5FG.net
Y4M

223:デフォルトの名無しさん
18/07/05 12:07:37.96 IcGtf/nv.net
fib = lambda n: int(((1+sqrt(5))/2)**n/sqrt(5) + .5)

224:デフォルトの名無しさん
18/07/05 13:10:49.78 dgq1boj0.net
>>216
初めてききました。
調べたら6年前につくられてるようですが
書籍はほとんどないようですね。
なんで普及してないのでしょうか。

225:デフォルトの名無しさん
18/07/05 13:11:04.45 dgq1boj0.net
>>216
初めてききました。
調べたら6年前につくられてるようですが
書籍はほとんどないようですね。
なんで普及してないのでしょうか。

226:デフォルトの名無しさん
18/07/05 19:49:27.60 rQMQmwLl.net
Juliaのこと?
本屋では単行本は1冊しか見かけないな。
あと、「データサイエンティスト養成読本 R活用編」というムック本の中に若干の記事があるくらいかな。
他にある?
たぶん書籍が少ないのと、蓄積されたノウハウとか他人の作った関数とか少ないから
まだみんな食いつかないんじゃないかな。
自分もなんか良さげではあると思いつつRで済ましてるしw

227:デフォルトの名無しさん
18/08/19 22:19:39.16 XMFPI6Qk.net
>>217
URLリンク(blogimg.goo.ne.jp)

228:デフォルトの名無しさん
18/08/20 13:18:00.41 h5lNG6L+.net
JuliaはFORTRANっぽくて嫌い

229:デフォルトの名無しさん
18/10/13 00:57:54.92 nYuf7UeR.net
盛り上がっていたので貼っとく
読んでないけど
Faster R with FastR | Hacker News
URLリンク(news.ycombinator.com)
FastRを使う人は少ないかもしれないけど
中のおしゃべりは楽しめるかも

230:デフォルトの名無しさん
18/10/21 20:53:08.73 Krx7NB8L.net
個人的にはRotaさんの名前がここで出てきたことに驚き
こういうところがHNの面白さかも
Deriving the Normal Distribution | Hacker News
URLリンク(news.ycombinator.com)
正規分布からの連想で
コメントにあるインタラクティブなデモに感心
A tutorial on Principal Component Analysis | Hacker News
URLリンク(news.ycombinator.com)
ブログの最後に書いてあるけど
現状はインタラクティブを実現するには
鬼プログラミングが必要なのかもしれない
インタラクティブからの連想で
Distill ― Latest articles about machine learning
URLリンク(distill.pub)

231:デフォルトの名無しさん
18/10/21 21:25:09.40 Kw4h2adz.net
ggmap使えなくなってた
Googleにクレカ登録が必須なのか

232:デフォルトの名無しさん
18/10/21 21:51:09.06 Krx7NB8L.net
ggmapってなんだか知らないけどこの辺の話かな?
Change in Google Geocoding API billing Issue #227 dkahle/ggmap GitHub
URLリンク(github.com)
お買い上げありがとう御座います

233:デフォルトの名無しさん
18/11/17 16:28:05.14 2G9ByxL2.net
>>39
20年後になりそう

234:デフォルトの名無しさん
18/11/18 12:04:28.90 uaqKqGAI.net
もう5年経ったか
機械学習データマイニングω流行ってるのに1/4スレも消費していない
次の3/4スレは15年じゃまだ余るだろう

235:デフォルトの名無しさん
18/11/23 11:50:10.19 9Kaby9nf.net
数学板のRスレのほうが賑わってるのがRらしい

236:デフォルトの名無しさん
18/11/23 12:00:16.91 e4GZHgy/.net
過疎ってるな

237:デフォルトの名無しさん
18/11/23 12:05:27.19 Pgxq5bWC.net
数学板って基地外が多いので嫌いw

238:デフォルトの名無しさん
18/11/23 12:29:41.52 e4GZHgy/.net
基地外かどうかは知らんがほぼ全員コミュ障

239:デフォルトの名無しさん
18/11/23 12:44:03.46 Pgxq5bWC.net
そしてリアルの理学部数学科の雰囲気に非常によく似ている。

240:デフォルトの名無しさん
18/11/23 19:08:15.85 HdYQqxXc.net
Rのマニアルを見たら関数のパラメータがやから多くてびびった

241:デフォルトの名無しさん
18/12/02 00:14:30.40 F+Dh0l9r.net
Rは難しいね
=と<-が違うとか、forループ使うなとか

242:デフォルトの名無しさん
18/12/02 00:17:55.74 h7LAbm0n.net
Rは簡単やろ?forは禁止されてなく使っても構わない。
けどベクトル演算に持ち込んだほうが圧倒的に速い処理があるってだけの話。

243:デフォルトの名無しさん
18/12/02 00:57:29.97 F+Dh0l9r.net
プログラミングの基礎がないから、データフレームをnestしてmutateからのmap_dblという教科書的な処理すら少したつと忘れてしまうわ

244:デフォルトの名無しさん
18/12/02 02:04:11.19 FcEDVbnE.net
それは難しいやつや

245:デフォルトの名無しさん
18/12/03 00:40:44.81 v0ZTRD/a.net
コンパイラー以外では余り語られないかもしれないパーサーの話
The new pqR parser, and R’s “else” problem
URLリンク(www.r-bloggers.com)
elseはC言語もしくはもっと古い言語の理論的バグと言ってもいいかも
Dangling else - Wikipedia
URLリンク(en.wikipedia.org)
yacc/bisonの問題にエラーメッセージが理解不能なことがある
Yacc is dead
URLリンク(arxiv.org)
yaccそのものというよりbisonとの間で情報の欠落が起きるらしい
Yacc is Not Dead (2010) | Hacker News
URLリンク(news.ycombinator.com)
パーサーを自動生成するのは人間がプログラミングするには複雑過ぎるからだけど
複雑 in 理解不能 out
あれ?何処かで見たような
おまけ:現在のニューラルネットの興隆は彼との対話が起点らしい
Geoff Hinton Facts
URLリンク(yann.lecun.com)

246:デフォルトの名無しさん
18/12/14 21:02:39.08 mqIEWKkx.net
>231 斜め読みできる分量ではないけどオーサムらしい
Free online book: Geocomputation with R, a book on geographic data analysis, visualization and modeling : rstats
URLリンク(www.reddit.com)
Geocomputation with R - the afterword | R-bloggers
URLリンク(www.r-bloggers.com)
各トピック毎に使えるソフトウェアの紹介があるので乗り換えの参考になるかも
中に書いてあるようにギットハブにもリソースがある
GitHub - Robinlovelace/geocompr: Open source book: Geocomputation with R
URLリンク(github.com)
Geocomputation with R
URLリンク(geocompr.github.io)

247:デフォルトの名無しさん
18/12/15 11:21:36.85 Bi+PDTnJ.net
>>246
ありがとう
こんな良さげな資料が公開されてたとは
でもggmapのように地図(日本語)に図形やテキストをプロットした画像を出力する手法は載ってないみたいで残念

248:デフォルトの名無しさん
18/12/16 00:23:14.49 Uu+EjExy.net
こういう話ではないと思うけど
``` {r}
leaflet::leaflet () %>% leaflet::addTiles () %>% leaflet::addMarkers (
lng = 174.768, lat = -36.852, popup = 'The birthplace of R'
) %>% leaflet::addLabelOnlyMarkers (
lng = 174.768 + 0.01, lat = -36.852, label = '此処は何処ですか?'
, labelOptions = leaflet::labelOptions (
noHide = T, textOnly = T, opacity = 1, style = list (
'font-size' = '2ex', 'color' = 'red'
)
)
) %>% leaflet::addRectangles (
lng1 = 174.768 - 0.02, lat1 = -36.852 - 0.02
, lng2 = 174.768 + 0.02, lat2 = -36.852 + 0.02
)
```

249:デフォルトの名無しさん
18/12/16 18:28:48.34 ye4z5ExT.net
leafletではさすがに希望には合わないかな
仕事で自分のクレカ使うのも嫌だし、こういう有料化は困る

250:デフォルトの名無しさん
19/02/02 18:39:54.09 QulgKzxC.net
タイトル勝ち - envのハッシュテーブルとしての使い方
Hash Me If You Can | R-bloggers
URLリンク(www.r-bloggers.com)
分散の占有率は考えたことがなかった
Principal Component Analysis (PCA) 101, using R : rstats
URLリンク(www.reddit.com)
PCAネタでOjaの学習則 - ご本人による解説
Oja learning rule - Scholarpedia
URLリンク(www.scholarpedia.org)
スティーフェル多様体上の勾配
The Geometry of Algorithms with Orthogonality Constraints
URLリンク(arxiv.org)
動機と出発点は異なるが同一の微分方程式を導き出してる
対称行列の大きい方の固有ベクトルを求める問題は次のようにも書ける
given M: (n,n)対称行列, to be found X: (n,k)行列
argmax <X, M X> subject to <X, X> = 1, where <A, B> := tr (A^T, B)
subject to ...の部分がスティーフェル多様体の定義になっている
特に、k=1の場合は(n-1)次元単位球面になる
身近にある多様体の例になっていると思う

251:デフォルトの名無しさん
19/02/02 19:02:21.25 QulgKzxC.net
間違え subject to X^T X = (k,k)単位行列

252:デフォルトの名無しさん
19/02/22 22:52:15.13 +pFzFvdM.net
``` {Rcpp}
#include <Rcpp.h> // 「rcpp 参照渡し」で検索すると出てくる話題
// [[Rcpp::plugins(cpp14)]]
// [[Rcpp::export]]
SEXP unsafe_negate (SEXP out) { // コピーなしを確実にするために面倒だがSEXP
switch (TYPEOF (out)) { // 思いつく残りのキーワード: Rtools on Windows,
case REALSXP: { // knitr::all_rcpp_labels, RCPP_MODULE, Rcpp/dispatch.h.
Rcpp::NumericVector a (out); // RCPP_MODULE = boost::python
std::transform (a.begin (), a.end (), a.begin (), std::negate <double> ());
return out; // URLリンク(wiki.python.org)
} break; default: { // R 3.5以上で動くかわからない
throw std::runtime_error ("unsupported type");
} break; // URLリンク(purrple.cat)
} // デビアン系だけかもしれないけど、Rstudioの環境下ではC++が超お手軽
}
// [[Rcpp::export]]
Rcpp::NumericVector safe_negate (Rcpp::NumericVector inn) {
Rcpp::NumericVector out = Rcpp::no_init (inn.size ());
std::transform (inn.begin (), inn.end (), out.begin (), std::negate <double> ());
return out;
}
```

253:デフォルトの名無しさん
19/02/22 22:55:11.29 +pFzFvdM.net
残りを貼り忘れた
``` {r}
a = 1.0;
b = safe_negate (a);
cat (a, '->', b); # 1 -> - 1
a = 1.0;
b = unsafe_negate (a);
cat (a, '->', b); # - 1 -> - 1
```

254:デフォルトの名無しさん
19/02/24 02:20:59.21 46dkn3Pk.net
統計使ってオプションの自動売買したいんですけど
これ使えばできるようになりますかね?

255:デフォルトの名無しさん
19/02/24 13:00:49.75 EIdikGBL.net
もう30年近く前からいっぱい使われてるよ。
それより統計知識と業務知識が先にないとあかんよ。

256:デフォルトの名無しさん
19/03/16 22:01:31.43 NxubCN5z.net
最近ハマったRの文法
``` {r}
tryCatch ({
f = function (x) {
x + 1;
} + 1;
cat (f (1));
}, error = function (ex) {
cat (ex);
});
```
落とし穴というより他のプログラミング言語からの固定観念に縛られていた
jsと対比してみる
<pre id = 'dump'></pre>
``` {js}
$ (window).on ('load', function () {
try {
const f = function (x) {
x + 1;
} + 1;
$ ('#dump').html (f (1));
} catch (ex) {
$ ('#dump').html (ex);
}
});
```

257:デフォルトの名無しさん
19/03/21 11:09:31.67 FMbOnfHj.net
仕事で急遽Rを勉強している者です。
rvestを用いたスクレイピングについて解る方
いらっしゃいましたらご教授願います。
①下記ページを参考に rvest html_sessionで「次へ」のリンクを辿ってURLを抜き出し
URLリンク(estrellita.hatenablog.com)
②そのURLをリストに追加して
③read_html をかけようとしてるんですが
④no applicable method for 'xml_find_all' applied to an object of class "list"  とエラーが出てしまいます。
無知で申し訳ないのですが、原因と解決法わかりますでしょうか?

258:デフォルトの名無しさん
19/03/21 23:21:26.63 2X9Nl1zM.net
わかる人が来るまでのつなぎ - 30年以内に来ればラッキーだと思うけど
* ['rvest::html' is deprecated, but rvest::read_html doesn't exist. Issue #191 tidyverse/rvest GitHub](URLリンク(github.com))
* [rvest package | R Documentation](URLリンク(www.rdocumentation.org))
``` {r}
with (list (`%>%` = purrr::`%>%`, size = length, null = NULL), {
home = 'URLリンク(stackoverflow.com)';
depth = 0;
done = list ();
todo = list ('/questions/28863775/scraping-linked-html-webpages-by-looping-the-rvestfollow-link-function');
while (0 < size (todo) & depth < 2) {
depth = depth + 1;
done = c (done, todo);
todo = purrr::reduce (.init = null, .x = todo, .f = function (out, path) {
url = paste0 (home, path);
text = xml2::read_html (url);
nodes = rvest::html_nodes (text, css = '.related a.question-hyperlink');
purrr::reduce (.init = out, .x = nodes, function (out, node) {
path = rvest::html_attr (node, 'href');
if (path %in% done) {
cat ('what a small world:', path, '\n');
out;
} else {
cat ('i am going to stalk:', rvest::html_text (node), '\n');
c (out, path);
}
});
});
}
});
```

259:デフォルトの名無しさん
19/03/21 23:54:04.09 ZeSQsBE1.net
no applicable method for 'xml_find_all' applied to an object of class "list"
あちこちの変数をデバッグすれば?
まず、エラーの場所を特定するべき!
スクレイピングには、Ruby, Nokogiri, Selenium WebDriver が良い

260:デフォルトの名無しさん
19/03/22 12:52:49.39 s6oj+Xdm.net
なんで、こういうツールってDOMでのスクレイピングじゃないの?
覚えるの面倒なんだ。

261:デフォルトの名無しさん
19/03/22 22:45:06.06 +8Wqz6u2.net
バグ修正
if (path %in% done | path %in% out) {
cat ('what a small world:', path, '\n');
out;
} else {
cat ('i am going to stalk:', rvest::html_text (node), '\n');
c (out, path);
}

262:デフォルトの名無しさん
19/03/24 22:07:13.75 EjBOavUP.net
楽しいライブラリ
* [Lego Mosaics Using R | Hacker News](URLリンク(news.ycombinator.com))
ライブラリの階層としては
[rgl](URLリンク(github.com))/
[rayshader](URLリンク(github.com))/
[brickr](URLリンク(github.com))/
という感じかな?
Rのライブラリというと変化球勝負というイメージを持っているのだけど
rglは豪速球な気がする

263:デフォルトの名無しさん
19/03/26 19:24:08.41 NbUyZWCM.net
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 81137
URLリンク(you-can-program.hatenablog.jp)

264:デフォルトの名無しさん
19/04/13 23:21:10.50 VsnrGDId.net
* [TF-IDF in a nutshell](URLリンク(www.reddit.com))
[TF-IDF](URLリンク(en.wikipedia.org))
が覚えられないので
[PMI](URLリンク(en.wikipedia.org))
と関連付けてみる
\newcommand{\nwd}[2]{\sharp\left\{{#1}\to{#2}\right\}}
$X$を単語の有限集合、$Y$を文書の有限集合とする
データを単語から文書への
[二部グラフ](URLリンク(en.wikipedia.org))として見て
辺の統計を考える
| 記号 | 日本語の記号 |
|:--|:----------------------------------|
| $\nwd{x}{y}$ | 単語$x$の文書$y$での出現頻度 |
| $\nwd{x}{*} := \sum_{y\in Y}\nwd{x}{y}$ | 単語$x$の全文書での出現頻度 |
| $\nwd{*}{y} := \sum_{x\in X}\nwd{x}{y}$ | 文書$y$の長さ |
| $\nwd{*}{*} := \sum_{x\in X,\; y\in Y}\nwd{x}{y}$ | 全文書の長さ |
$$
\frac{P(x,y)}{P(x,*)P(*,y)}
:= \frac{\cfrac{\nwd{x}{y}}{\nwd{*}{*}}}
{\cfrac{\nwd{x}{*}}{\nwd{*}{*}}\cfrac{\nwd{*}{y}}{\nwd{*}{*}}}
= \underbrace{\frac{\nwd{x}{y}}{\nwd{*}{y}}}_{\approx\mathtt{TF}}
\underbrace{\frac{\nwd{*}{*}}{\nwd{x}{*}}}_{\approx\mathtt{IDF}}.
$$

265:デフォルトの名無しさん
19/04/28 22:29:54.86 Ce5AO+sY.net
* [March: "Top 40" New CRAN Packages](URLリンク(www.r-bloggers.com))
[lenses](URLリンク(cran.r-project.org))
というライブラリが入っている
ゲット/セットのペアからスタートする
[nlab](URLリンク(ncatlab.org))
ではプットと書かれているがセットと同じ
[イントロ](URLリンク(cfhammill.github.io))
も簡潔な説明だと思う
「てか、`iris $ Sepal.Length [3]`という書き方で何も困っていないし」
と思うかもしれないけどそれは正常な感覚だと思う
[この例](URLリンク(ncatlab.org))
はもっとビミョーな気分になるかもしれない
「ここで小麦粉を$1/3$カップ入れます」の$1/3$という書き方は
[随伴](URLリンク(ncatlab.org))を表している
正の自然数からスタートした場合、Haskell風の書き方をして
直積に同値関係`Bunsu (a, b) == Bunsu (c, d) = a * d == b * c`を定義すると
単位射が`return a = Bunsu (a, 1)`で
積射が`join (Bunsu (Bunsu (a, b), Bunsu (c, d))) = Bunsu (a * d, b * c)`の
モナドになる
[この例](URLリンク(en.wikipedia.org))
はRの`list (list (0 : 0), list (0 : 1), ..., list (0 : n))`という
リストがつくる圏からスタートする
UMAPの土台に使われているらしい
* [UMAP](URLリンク(cran.r-project.org))
* [How UMAP Works](URLリンク(umap-learn.readthedocs.io))

266:デフォルトの名無しさん
19/05/12 09:01:18.88 pEn1S/Mu.net
Rで正規表現を使って文字列から数値だけ抽出するにはどう書きますか?

267:デフォルトの名無しさん
19/05/12 12:36:17.67 dSbddX8d.net
Ruby では、\d で数字を、+ で1文字以上、to_i で整数型に変換する
p ary = "1a23bc04".scan( /\d+/ ).map( &:to_i )
#=> [1, 23, 4]
ただし、これでは、負数を処理できない。
負数を処理するには、- を、? で、0か1文字
p ary = "-1a23bc-04".scan( /-?\d+/ ).map( &:to_i )
#=> [-1, 23, -4]
小数点や、e 表記は、もっと難しい。
これらは正規表現じゃなく、ライブラリを探すべき!

268:デフォルトの名無しさん
19/05/12 19:02:18.45 x6u2BI6V.net
どんな文字列か分からんけど単に数字を取り出すなら
stringr::str_extract_allで[[:digits:]+]を指定すりゃいいのでは?
パターンによってはreadr::parse_numberでいけるけど

269:デフォルトの名無しさん
19/05/13 08:08:42.07 6s+KaqGz.net
>>268
ありがとうございます。無事目的を果たすことが出来ました。

270:デフォルトの名無しさん
19/05/13 11:34:06.46 exJVGP+w.net
>>269
[[:digit:]+]だったね。いつも間違える。
最終的にどうやったか書いてくれると同じように困ってる人が助かるよ

271:デフォルトの名無しさん
19/05/13 11:40:45.50 hGBx9p/3.net
>>270
そうですね、では貼っておきます。
str <- "10.5万人"
res <- as.numeric(stringr::str_extract_all(str,pattern = "[0-9.]+"))

272:デフォルトの名無しさん
19/05/25 22:50:11.34 vpuLnRuv.net
[The first web site](URLリンク(news.ycombinator.com))
まで行くと古すぎだけど
[Static Web - Back to the Roots](URLリンク(news.ycombinator.com))
knitrでHTMLを作るときMathJaxをSVGに変換したくなることもある
nodejsが動くようだと[MathJax-node](URLリンク(github.com))が簡単
Webネタで
[Helping One Million Developers Exit Vim (2017)](URLリンク(news.ycombinator.com))
Rを境に上位はWebのフロントエンドで下位は汎用プログラミング言語
つまり`R = (JQuery + Ruby) / 2`
ウソだけどどんなウソにも真実がある気もする

273:デフォルトの名無しさん
19/05/25 23:01:34.12 WHAQulv7.net
>>268
ま、Rubyで統計解析しなくてもいいんじゃね?
今のところ、信頼性保証できないでしょ

274:デフォルトの名無しさん
19/05/26 04:23:56.29 /W043sO9.net
PerlからRuby覚えてかなり気に入っていたけど、最近の機械学習ブームで
完全にPythonに負けた感があるな
今から始める人にRubyやれとは言えなくなった
Python一択の時代

275:デフォルトの名無しさん
19/05/26 15:12:58.29 KAaQkTQw.net
わかればよろしい

276:デフォルトの名無しさん
19/05/27 02:00:14.95 WRD+8uFx.net
大学最後の2ヶ月で、元彼、好きだった人、女友達、男友達の合計500人の特性を全てデータ化して、関係の継続年数と好き度合いをアウトプットにして、Rでモデル組んだの。
それに結婚候補者の10人のデータいれて、1番結果良かったのが今の旦那で、付き合って結婚したの。本当に統計学は最強の学問。

277:デフォルトの名無しさん
19/06/09 01:58:16.45 wNZZZJ2C.net
[so]{#so}: [Showing existence of a diffeomorphism preserving volume forms](URLリンク(math.stackexchange.com))
一次元だと積分表が使えるので絵を描いてみる [so-1]{#so-1}
``` {r}
big_data = list (`%>%` = purrr::`%>%`, add = rlist::list.append
, size = length, null = NULL, true = T, false = F, na = NA);
big_data = with (c (big_data, xa = 0, sa = 0.1, db = 1, sbm = 0.3
, sbp = 0.2), { pa = function (x) { dnorm (x, mean = xa, sd = sa); };
pb = function (x) { 0.5 * (dnorm (x, mean = - db, sd = sbm) + dnorm (x
, mean = db, sd = sbp)); }; Pa = function (x) { pnorm (x, mean = xa
, sd = sa); }; Pb = function (x) { 0.5 * (pnorm (x, mean = - db, sd = sbm)
+ pnorm (x, mean = db, sd = sbp)); }; ra = function (n) { rnorm (n
, mean = xa, sd = sa); }; rb = function (n) { sample (c (rnorm (n
, mean = - db, sd = sbm) , rnorm (n, mean = db, sd = sbp)), n); };
x = 3 * seq (- 1, 1, len = 1e+3); ya = pa (x); yb = pb (x); plot (range (x)
, range (ya, yb), type = 'n'); lines (x, ya, col = 'blue'); lines (x, yb
, col = 'red'); add (big_data, pa = pa, pb = pb, ra = ra, rb = rb, Pa = Pa
, Pb = Pb); }); no_plot = function (text = 'space') { plot (c (0, 1), c (0
, 1), ann = F, bty = 'n', type = 'n', xaxt = 'n', yaxt = 'n'); text (
x = 0.5, y = 0.5, text);};
```

278:デフォルトの名無しさん
19/06/09 01:59:10.30 wNZZZJ2C.net
青の分布を赤の分布に連続的に変形させる [so-2]{#so-2}
``` {r}
big_data = with (c (big_data, nx = 2e+3, nt = 1e+3, alim = 2, blim = 4), {
vec = function (x, t) { (Pa (x) - Pb (x)) / ((1 - t) * pa (x) + t * pb (x));
}; t = seq (0, 1, len = nt); dt = diff (t) %>% mean; x = ra (nx); x = x0 =
x [which (abs (x) <= alim)]; x = purrr::map (t, function (t) { x <<- x +
dt * vec (x, t); }) %>% do.call (what = rbind); draw = function (t, x,
nbin = 20 , vector = null) { xlim = range (x, na.rm = true); plot ( xlim,
range (t), type = 'n', main = 'trajectories', xlab = 'x', ylab = 't');
purrr::map ( sample (1 : ncol (x), 50), function (j) { x = x [, j]; if (
all ( is.finite (x))) { lines (x, t); } else { points (x, t); }; }); if (
is.function (vector)) { no_plot (); }; doit = function (ind) { t = t [ind];
x = x [ind, ]; if (is.null (nbin)) { nbin = 'scott'; }; msg = sprintf (
'at the time %.1e', t); msg = c (msg, sprintf ('%d / %d', sum ( xlim [1] <=
abs (x) & abs (x) <= xlim [2], na.rm = true), size (x))); hist (x, breaks =
nbin, freq = false, xlim = xlim, main = msg); x = seq ( xlim [1], xlim [2],
len = 1e+3);
# lines (x, pa (x), col = 'blue');
lines (x, pb (x), col = 'red'); if (is.function (vector)) { x = seq (min (
xlim), max (xlim), len = 1e+5); plot (x, vector (t, x) %>% abs (), type =
'l', log = 'y', main = msg); }; }; for (i in c (1, size (t) / 2, size (
t))) { doit (i); } }; x = rbind (x0, x [- nrow (x), ]); x [which (blim <
abs (x))] = na; fix_bin = function (x, lim) { max (sum (abs (x [nrow (x)
, ]) <= lim , na.rm = true) / 50, 10) %>% as.integer (); }; draw (t, x
, nbin = fix_bin (x, blim), vector = vec); add (big_data, x0 = x0, t = t
, dt = dt , nt = nt, nx = nx, vec = vec, draw = draw, fix_bin = fix_bin
, alim = alim, blim = blim);});
```

279:デフォルトの名無しさん
19/06/09 02:00:21.38 wNZZZJ2C.net
逆方向に変形させてみる [so-3]{#so-3}
``` {r}
with (c (big_data), {
wec = function (x, t) {
- vec (x, 1 - t);
};
x = rb (nx);
x = x0 = x [which (abs (x) <= blim)];
x = purrr::map (t, function (t) {
x <<- x + dt * wec (x, t);
}) %>% do.call (what = rbind);
x = rbind (x0, x [- nrow (x), ]);
x [which (blim < abs (x))] = na;
draw (t, x, nbin = fix_bin (x, blim), vector = wec);
});
```
おしまい

280:デフォルトの名無しさん
19/06/16 06:52:42.48 PJMZgBiU.net
[so-2](#so-2)のバグ:誤: `vector (t, x)` 正: `vector (x, t)`
でも誤の方が素直 - 数式上は`vector :: Time -> (Position -> Vector)`
$$\newcommand{\calM}{\mathcal{M}}\DeclareMathOperator*{\arginf}{arg\,inf}$$
$\calM$を多様体とし、その上の
[経験分布](URLリンク(en.wikipedia.org))
$p:\calM\to(0,1)$が与えられた時、モデル$q:\Theta\to(\calM\to(0,1))$を
[KL距離](URLリンク(en.wikipedia.org))
$D$を使って、$\theta_*:=\arginf_{\theta\in\Theta}D(p,q_\theta)$と
フィッティングするというのが典型的なパターンだと思う。[so](#so)では、
初期分布$\alpha:=q_0$と推定した分布$\beta:=q_{\theta_*}$を繋ぐ座標変換の
集合$\phi_t:\calM\to\calM$を具体的に作っている。写像$\phi_t$で$\alpha$が
$q_t$になったとすると、<em>粒子数が保存すべし</em>という要請は次のように
書かれる。$$\int_{x\in\phi_t(D)} q_t(x) = \int_{x\in D} \alpha(x)
\quad\text{for all}\quad D\subseteq\clM.$$$\phi_t(x)$が$x$について微分できる
ことを仮定すれば、この式は$\phi_t^*q_t=\alpha$という形にまとめられ、
<em>$q_t$を$\phi_t$で
[プルバック](URLリンク(en.wikipedia.org)(differential_geometry))
すると$\alpha$になる</em>と読む。$\phi_t(x)$が$t$について微分できることと、
$x$について可逆なことを仮定すると、次の式が得られる。$$(\partial_t
+d\iota_{X_t})q_t = 0\quad\text{with}\quad\phi_t^*q_t = \alpha\eqtag{adv}$$
導出の経緯から、この式は頻出問題になっていて、
[移流](URLリンク(en.wikipedia.org))という名前がついているが、
あまりに頻出過ぎて、多くの分野で名無しになっていると思う。問題は、
<em>$q_1=\beta$となる$\eqref{eq:adv}$の解があるか?</em>ということになる。
[so](#so)では、Moserのトリックを使って、そのような解があることを示している。
もう少し続ける。

281:デフォルトの名無しさん
19/06/16 06:54:12.80 PJMZgBiU.net
Moserのトリックの副産物として、$\eqref{adv}$は
[ガウスの法則](URLリンク(en.wikipedia.org))になる。
$\calM$が一次元の場合、電場$\iota_{X_t}q_t$が
[CDF](URLリンク(en.wikipedia.org))に、
クーロンポテンシャルがCDFの積分に対応する。CDFのような単調増加関数を
[シグモイド関数](URLリンク(en.wikipedia.org))で近似する
ことは自然なことだろう。同じことだが、
[LogSumExp](URLリンク(en.wikipedia.org))でCDFの積分を近似する
ことも自然なことだろう。さらに、コードのように、初期分布と推定した分布が
局在化している場合は、局在箇所にシグモイドを対応させることで、効率的に
良い近似が得られる。
コードでバグったのはベクトル場$X_t$をプロットしているところだが、$X_t$の
プロットは、動作確認にはなるが、変化が激し過ぎて挙動の理解には向いていない。
$X_t$の計算では、性質上、ゼロ割に近い状況が発生することが避けらない。コード
では、そのケアに追われている。一方、Moserのトリックのおかげで、電場は時刻に
依存しない。シミュレーションを通して成り立つ大雑把な挙動の把握には電場の方が
向いている。
神経にできることは森にもお隣さんにもベイズにも安藤モアにもできる、多分。
逆も真なり。これに<em>ガウスにもできる</em>が加わっただけかもしれないが、
今まで気が付かなかった。
[ありがとう](URLリンク(www.youtube.com))、
[いきものがかり](URLリンク(arxiv.org))
おしまい

282:デフォルトの名無しさん
19/06/29 21:01:18.10 Y06Oqd44.net
[ggwaterfall](URLリンク(www.reddit.com))
を[DFT行列](URLリンク(en.wikipedia.org))をネタに使ってみる
[参考](URLリンク(en.wikipedia.org))
``` {r}
with (c (big_data, n = 17, N = 1e+3), {
out = outer (1 : n, 1 : n, function (i, j) {
ij = (i * j) %% n;
k = pracma::gcd (ij, n);
angle = 2 * pi * (ij %/% k) / (n %/% k);
complex (real = cos (angle), imaginary = sin (angle));
});
print (eigen (Conj (out) %*% out, only = true) $ value / n);
out = purrr::map ((n - 2) : 2, function (k) {
purrr::map (1 : N, function (.) {
out = out [sample.int (n, k), sample.int (n, k)] %>% eigen (only = true);
# prod (out $ values);
prod (out $ values) / sqrt (k);
}) %>% unlist ();
});
`%.%` = function (f, g) function (x) f (g (x));
purrr::map (out, log %.% Mod) %>% ggwaterfall::waterfall_ft ();
# purrr::map (out, log %.% Mod) %>% ggwaterfall::waterfall_density ();
});
```

283:デフォルトの名無しさん
19/06/30 21:38:18.30 6iFXy6Q7.net
DFT行列のチェックのバグ修正+testthat+lenses
``` {r}
with (c (big_data, n = 17, N = 1e+3, get = lenses::view, set = lenses::set), {
`%.%` = function (f, g) function (x) f (g (x));
values_l = lenses::index ('values');
square = function (a) (t %.% Conj) (a) %*% a;
out = outer (1 : n, 1 : n, function (i, j) {
ij = (i * j) %% n;
k = pracma::gcd (ij, n);
angle = 2 * pi * (ij %/% k) / (n %/% k);
complex (re = cos (angle), im = sin (angle));
});
testthat::test_that ('dft', {
# testthat::expect_equal (square (out), n * pracma::eye (n));
testthat::expect_equal ((Re %.% square) (out), n * pracma::eye (n));
testthat::expect_equal ((Im %.% square) (out), pracma::zeros (n));
});
k = (n - 2) : 2;
out = purrr::map (k, function (k) {
purrr::map (1 : N, function (.) {
out = out [sample.int (n, k), sample.int (n, k)];
out = eigen (out, only = true) %>% get (values_l);
(sum %.% log) (out) - 1 / 2 * log (k);
}) %>% get (lenses::unlist_l);
}) %>% set (lenses::names_l, k);
testthat::test_that ('det', purrr::map (out, function (out) {
testthat::expect_true ((all %.% is.finite) (out));
}));
purrr::map (out, Re) %>% ggwaterfall::waterfall_ft (show.labels = true);
});
```

284:デフォルトの名無しさん
19/07/06 00:11:27.48 EHwJE8LY.net
バグ修正
誤:(sum %.% log) (out) - 1 / 2 * log (k);
正:(sum %.% log) (out) - k / 2 * log (k);
正規化の方法を修正する必要があるが
DFT行列を[直交行列](URLリンク(en.wikipedia.org))
に変えても似た挙動をする
関係ははっきりしないが
[この話](URLリンク(www.r-bloggers.com))
を思い出した
新たにバグを生み出した可能性が高いがレンズの話
可逆な行列$M$でパラメトライズされたゲットを$\mathtt{get}_M(x):=Mx$とすると
レンズ則を満たすセットが$\mathtt{set}_M(x,y)=M^{-1}y$と一意に定まる
[レンズの可逆性](URLリンク(www.twanvl.nl))
の例になっていると思う
レンズ則をチェックしてみる [setup]{#setup}

285:デフォルトの名無しさん
19/07/06 00:12:22.12 EHwJE8LY.net
``` {r}
big_data = list ( `%>%` = purrr::`%>%` , add = rlist::list.append , size = length , null = NULL , true = T , false = F , na = NA);
big_data = with (c (big_data, get = lenses::view, set = lenses::set, why = T), {
plain = function (M) {
if (why) { # avoid lazy evaluation
if (is.matrix (M) != true | nrow (M) != ncol (M)) {
stop ('parameter must be an invertible matrix.');
}
}
lenses::lens (
view = function (state) {
as.vector (M %*% state);
}, set = function (state, value) {
as.vector (solve (M, value));
}
);
};
value_l = lenses::index ('value');
make_state = function (value) {
list (hello = 'world') %>% set (value_l, value);
};
make_lens = function (M) {
lenses::`%.%` (value_l, plain (M));
};
add (big_data, make_state = make_state, make_lens = make_lens, get = get, set = set);
});
```

286:デフォルトの名無しさん
19/07/06 00:13:08.47 EHwJE8LY.net
``` {r, cache = F}
with (c (big_data, nx = 3, nt = 1e+3), {
normalize = function (x) x / sqrt (sum (x * x));
testthat::test_that ('lens', purrr::map (1 : nt, function (.) {
a = pracma::randortho (nx) %>% make_lens ();
s = rnorm (nx) %>% normalize () %>% make_state ();
x = rnorm (nx) %>% normalize ();
y = rnorm (nx) %>% normalize ();
testthat::expect_equal (s %>% set (a, s %>% get (a)), s);
testthat::expect_equal (s %>% set (a, x) %>% get (a), x);
testthat::expect_equal (s %>% set (a, x) %>% set (a, y), s %>% set (a, y));
}));
});
```
[setup](#setup)で`why`を`F`にするとテストが通らない
どこにバグがあるかわからないが
遅延評価のチェインで露呈したバグになっている
おしまい

287:デフォルトの名無しさん
19/07/06 22:48:27.03 EHwJE8LY.net
上のバグの再現
バージョンによるかもしれないし仕様なのかもしれない
``` {r}
library (purrr);
f_plain <- function (x) {
function (y) {
x + y;
};
};
f_guard <- function (x) {
x <- x;
function (y) {
x + y;
};
};
tryCatch ({
x <- 1 %>% f_plain ();
cat (x (2), 'success piped-plain\n');
}, error = function (msg) {
cat ('failed piped-plain:\n');
print (msg);
});
tryCatch ({
x <- 1 %>% f_guard ();
cat (x (2), 'success piped-guard\n');
}, error = function (msg) {
cat ('failed piped-guard:\n');
print (msg);
});
```

288:デフォルトの名無しさん
19/07/22 01:06:05.12 mXxEN3aK.net
[イーガン予想](URLリンク(golem.ph.utexas.edu))
[嘘だけど](URLリンク(en.wikipedia.org))
小説の上手い数学の研究者もいれば
哲学の上手いPandocの開発者もいる
いろいろな人がいる

289:デフォルトの名無しさん
19/07/22 17:11:16.93 vH3abWHg.net
me too

290:デフォルトの名無しさん
19/09/01 16:49:02.42 MMeyHdZr.net
RstudioからSSHでポートフォアードさせてDBに繋ぎたいのですがどのように記述すれば良いのでしょうか

291:デフォルトの名無しさん
19/09/01 17:44:01.65 kCJZVLuH.net
ググればすぐ出る

292:デフォルトの名無しさん
19/09/01 18:54:34.52 MMeyHdZr.net
分からないならレスしないでくれる?

293:デフォルトの名無しさん
19/09/01 18:56:27.67 kCJZVLuH.net
情報の小出し禁止

294:デフォルトの名無しさん
19/09/02 20:31:45.73 j4A8QeU6.net
わからないけどレスしてみました

295:デフォルトの名無しさん
19/09/03 09:50:55.31 gWEsYspA.net
君が本気で情報を得たいのであれば
今やるべきことは煽ることではない
足りない情報を出すことだ

296:デフォルトの名無しさん
19/09/03 19:32:29.06 8f2iOqT4.net
わかりました

297:デフォルトの名無しさん
19/09/13 20:17:09.23 wTJZs2gr.net
## Configuration over Configuration
$$
\require{TeX/extpfeil}\require{TeX/AMScd}
\newcommand{\eqtag}[1]{\tag{#1}\label{#1}}
\newcommand{\isa}[1]{\mathinner{\left[\!\left[{#1}\right]\!\right]}}
\DeclareMathOperator{\bbR}{\mathbb{R}}
\DeclareMathOperator{\ecdf}{\mathtt{ecdf}}
\DeclareMathOperator{\ebdf}{\mathtt{ebdf}}
\DeclareMathOperator{\relu}{\mathtt{relu}}
\DeclareMathOperator{\lure}{\mathtt{lure}}
$$
``` {r}
big_data = list ( size = length , add = rlist::list.append , test = testthat::test_that
, lty_none = 0 , lty_line = 1 , lty_dash = 2 , lty_dot = 3);
prelu = function (...) pmax (..., 0);
plure = function (...) pmin (..., 0);
```
続く

298:デフォルトの名無しさん
19/09/13 20:17:51.16 wTJZs2gr.net
## Convex on Rails
多分、[村人の定理](URLリンク(en.wikipedia.org))
同値な関数達
``` {r}
ebdf_0 = function (xi) {
n = length (xi); qi = cumsum (sort (xi));
function (x) { purrr::reduce (.init = 0, .x = 1 : n, .f = function (out, j) {
pmax (out, j * x - qi [j]); }) / n; }; }; ebdf_1 = function (xi) {
n = length (xi); function (x) {
purrr::reduce (.init = 0, .x = xi, .f = function (out, xi) {
out + prelu (x - xi); }) / n; }; }; ebdf_huge = function (xi) {
n = length (xi); function (x) {
purrr::reduce (.init = 0, .x = 1 : n, .f = function (out, j) {
purrr::reduce (.init = out, .x = combn (1 : n, j, simplify = F), function (out, js) { pmax (out, j * x - sum (xi [js])); }); }) / n; }; };
ebdf_2 = function (xi) { n = length (xi); xi = sort (xi); qi = cumsum (xi);
function (x) { purrr::reduce (.init = n * x - qi [n], .x = n : 1, .f = function (out, j) {
out - plure ((out + qi [j]) / j - xi [j]); }) / n; }; };
dog_data = with (big_data, {
equal = testthat::expect_equal; xi = c (- 1, 0, 2, 3); test ('ebdf', {
doit = function (xi) { bdf_0 = ebdf_0 (xi); bdf_1 = ebdf_1 (xi);
bdf_2 = ebdf_2 (xi); bdf_huge = ebdf_huge (xi);
x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3);
equal (bdf_0 (x), bdf_1 (x)); equal (bdf_0 (x), bdf_2 (x));
if (size (xi) < 5) { equal (bdf_0 (x), bdf_huge (x)); } }; doit (xi);
n = 10; doit (c (rnorm (n, - 1, 1), rnorm (n, 1, 2))); });
add (big_data, xi = xi, equal = equal); });
```
続く

299:デフォルトの名無しさん
19/09/13 20:18:38.86 wTJZs2gr.net
Rの関数`ecdf`は次のように定義されている。 $$ \begin{split}
\ecdf(x) &:= \ecdf_\xi(x) := \frac{1}{n} \sum_{j=1}^n \isa{x \ge \xi_j}, \\
\isa{\operatorname{expr}} &:= \begin{cases}
1, & \text{ iff } \operatorname{expr} = \mathtt{true}, \\
0, & \text{ otherwise}. \end{cases} \end{split} \eqtag{eq:ecdf}
$$ ここで、$\xi_1<\cdots<\xi_n\in\bbR$を観測された値とする。
これを次のように積分したものを$\ebdf$と書くことにする。
$$ \ebdf(x) := \ebdf_\xi(x) := \int_{y=-\infty}^x \ecdf(x)
= \frac{1}{n} \sum_{j=1}^n \relu(x - \xi_j). \eqtag{eq:ebdf} $$
`ebdf_1`はこの式を、`ebdf_0, ebdf_huge, ebdf_2`は式変形したものを実装している。
``` {r}
with (dog_data, {
plot (ecdf (xi)); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3);
bdf = ebdf_2 (xi); plot (x, bdf (x), type = 'l', main = 'ebdf');
points (xi, bdf (xi)); lines (x, prelu (x - mean (xi)), lty = lty_dash); });
```
コードを見ると、`ebdf_2`は、
[ReLU](URLリンク(en.wikipedia.org)(neural_networks))を
[活性化関数](URLリンク(en.wikipedia.org))とする
[ResNet](URLリンク(en.wikipedia.org))に
なっていることがわかる。さらに、`ebdf_2`を微分すると、ReLUとシグモイドが
混在したResNetになる。
``` {r}
ecdf_2 = function (xi) { n = length (xi); xi = sort (xi);
qi = cumsum (xi); function (x) {
purrr::reduce (.init = cbind (n * x - qi [n], n), .x = n : 1, .f = function (out, j) { f = out [, 1]; d_f = out [, 2]; g = (f + qi [j]) / j - xi [j];
cbind (f - plure (g), d_f - (g < 0)); }) / n; }; };
```
続く

300:デフォルトの名無しさん
19/09/13 20:19:21.78 wTJZs2gr.net
``` {r}
with (dog_data, { test ('resnet-cdf', { doit = function (xi) {
cdf = ecdf (xi); cdf_2 = ecdf_2 (xi); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3);
equal (cdf (x), cdf_2 (x) [, 2]); };
doit (xi); n = 10; doit (c (rnorm (n, - 1, 1), rnorm (n, 1, 2))); }); });
```
何が嬉しいのかはさておき、$\eqref{eq:ecdf}$がResNetで書けたことになる。
おしまい

301:デフォルトの名無しさん
19/09/21 00:43:04.47 MLPk5U2Q.net
## Zigzag on Rails
[ブログ](URLリンク(blog.mirkoklukas.com))の内容を
実装してみる。
``` {r}
zigzag_on_rails = function (xi, yi) {
js = order (xi); xi = xi [js]; yi = yi [js]; y0 = yi [1];
ai = diff (c (0, diff (yi) / diff (xi), 0));
f = function (x) {
purrr::reduce (.init = y0, .x = seq_along (xi), .f = function (out, j) {
out + ai [j] * prelu (x - xi [j]);
});
};
big_data $ add (big_data, xi = xi, yi = yi, y0 = y0, ai = ai, zigzag = f);
};
dog_data = with (dog_data, {
yi = c (2, 0, - 1, 1); rails = zigzag_on_rails (xi, yi);
x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3);
plot (x, rails $ zigzag (x), type = 'l');
points (xi, yi); add (dog_data, yi = yi);
});
```
観測値からの外延の仕方がブログとは異なると思うが、こんな感じじゃないかと
思う。[区分線形関数](URLリンク(en.wikipedia.org))
を式にすると、自然とReLUの和が現れる。折れ線の変化`ai`を正と負の成分に
分けると、それぞれが凸 on Railsに乗る。
続く

302:デフォルトの名無しさん
19/09/21 00:44:03.23 MLPk5U2Q.net
``` {r}
convex_on_rails = function (xi, ai) {
js = order (xi); xi = xi [js]; ai = ai [js]; bi = cumsum (ai);
ci = cumsum (ai * xi); f = function (j, x) bi [j] * x - ci [j];
d_f = function (j, x) ai [j] * (x - xi [j]);
i_f = function (j, x) (x + ci [j]) / bi [j];
convex = function (x) { js = seq_along (xi);
purrr::reduce (.init = 0, .x = js, .f = function (out, j) {
pmax (out, f (j, x)); }); };
resnet = function (x) { js = rev (seq_along (xi));
purrr::reduce (.init = f (js [1], x), .x = js, .f = function (out, j) {
out - plure (d_f (j, i_f (j, out))); }); };
list (convex = convex, resnet = resnet);
};
resnet_on_rails = function (xi, yi) {
out = zigzag_on_rails (xi, yi); with (out, {
xi = out $ xi; ai = out $ ai; js = which (ai > 0);
fp = convex_on_rails (xi [js], ai [js]); js = which (ai < 0);
fm = convex_on_rails (xi [js], - ai [js]);
convex = function (x) y0 + fp $ convex (x) - fm $ convex (x);
resnet = function (x) y0 + fp $ resnet (x) - fm $ resnet (x);
add (out, convex = convex, resnet = resnet);
});
};
```
続く

303:デフォルトの名無しさん
19/09/21 00:44:40.99 MLPk5U2Q.net
``` {r}
with (dog_data, {
rails = resnet_on_rails (xi, yi);
x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3);
plot (x, rails $ resnet (x), type = 'l');
points (xi, yi);
doit = function (xi, yi) {
rails = resnet_on_rails (xi, yi);
x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3);
equal (rails $ zigzag (xi), rails $ convex (xi));
equal (rails $ zigzag (xi), rails $ resnet (xi));
};
doit (xi, yi);
n = 10;
doit (c (rnorm (n, 0, 1), rnorm (n, 2, 3)), c (rnorm (n, 0, 2), rnorm (n, 0, 1)));
});
```
区分線形関数は二本のResNet with ReLUの
[アフィン写像](URLリンク(en.wikipedia.org))で
書けたことになる。
おしまい

304:デフォルトの名無しさん
19/09/21 00:50:33.16 MLPk5U2Q.net
と思ったけどバグを見つけた
誤:
equal (rails $ zigzag (xi), rails $ convex (xi));
equal (rails $ zigzag (xi), rails $ resnet (xi));
正:
equal (rails $ zigzag (x), rails $ convex (x));
equal (rails $ zigzag (x), rails $ resnet (x));

305:デフォルトの名無しさん
19/09/29 13:30:24.02 ufFnckbW.net
スクリプトの質問してもいいですか?

306:デフォルトの名無しさん
19/10/05 00:13:35.53 Ypn3FGTV.net
いいと思う
だけどここは過疎を通り越して廃墟なので返事は期待できないと思うよ

307:デフォルトの名無しさん
19/10/05 00:54:38.98 79plKGk/.net
r-eakalangへ行くのがよろしいかと


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