統計解析R たぶんpart3くらい
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所 数学板にあったけど、あっちはサーバーが飛んじゃったから、こっちに立ててもいいんじゃないかな。 Rはゴミカス向けだと断言する
俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う 数学版から誘導されてきたけど、
Rjpwikiと裏Rjpwikiのヲチはここでよいの? これのクラスとかのオブジェクト指向言語的な機能って
なんか目指すところが普通の言語と違ってる感じだよな programmerというよりはstatisticianが使いやすいことを念頭にしているから? >>13
R言語って、統計解析ソフトのマクロ言語みたいなものだから、
一般のプログラミング言語と比較する方が間違っていると思う。
Rの基本関数はCやfortranで書かれたものを呼び出しているに過ぎない。 俺はゴミカスだがエリートゴミカスでR
お前らのような下級ゴミカスとは格が違うのでR >>16
10個くらいのパラメータあるときに、
pairsで、総当りの相関見るのは便利
ありがとうございます。
maximaも荒らしが凄いのねプログラム板に移動したいですね。 データを分割してスペクトルを測定しようとして次のようなプログラムを書いてみたんですが、
「以下にエラー 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))
}
} >>28
カッコ追加してみた。
spectrum(ts(x[(i*l+1) : ((i+1)*l)],deltat=.0025)) >>31
>Incanter
知らなかったので調べてみたら、
本当にExcel統計に負けるほどの基本関数しかなさそう。
経済、医学、生態とか分野別になってもいないし、
ベイズ推定とかデジタル地図の空間演算とか何もなさそう。
> RなんかよりもIncanterを使うべき
お薦めの点はどういうところ? lispで書ける。それだけだが、それこそが何ものにもかえがたい。 groovyからR呼べないの?Javaって機械学習周りのOSSツール沢山あるのに
最近、Apache族がGroovyをデファクトで採用しそうな感あるよね >>31
と言っている本人も使っていないくせに。まだpytnonでnumpyとscikits statsmodels & pandasを使う方がまだ実用性がある。 Pythonにはthink.statsて物もあるからね。
普及はしてナイっぽいが。 タイトルに次からはR言語って入れろや
次スレは5年は後だろうけど >>39
RのことをR言語というは2重の意味で反対って、
御大が仰っていたが。 >>41
いるけど、何故か質問は数学版の方にしか来ない >>48
Emacs Speaks Statistics
世界の主なR開発者とユーザが使っているEmacs用のインターフェイス
昔はRStudioとかなくて、pmgとかRKWardとかはあったけど、
あまり使い物にならなかったので、事実上、ESSしか選択肢がなかった。
だから、Rの古参ヘビーユーザはほとんどESSユーザ。
# Emacsを団塊世代の化石と揶揄するのはなしの方向で >>53
行列演算をサポートするスクリプト言語。
おもに統計の手法開発向けに考えられたS言語というのがあって
それの兄弟言語。
無償なんで結構つかっている人は多い。 今、本を読んで、
多くの常識はずれなことに当惑している
ここはプログラム板だから、
プログラムの観点から言わせてもらうと、
まず行ではなく、列方向に、
データがまとめられていることに、
ショックを受けた
次に、C言語の配列がなく、
リストを配列と呼んでいるらしい
もう、ついていけん!これは文系脳? Lisp脳からすると配列とか言われると頭がモヤモヤする。 >>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 あっ、逆か。
Cのリスト構造がRの配列に相当すると主張しているのか?
でも、そうすると余計に意味不明。
データフレームが変数ごとにまとめられているのは、
データベース的観点から言えばあたりまえ。 もともと、Sの世界でデータフレームというものはなかった。
あくまで手法開発ツールなので、それでよしということだったが
データ処理という観点で必要性が高いため追加された。
ただし、データ管理という点では今だ無いに等しいので、ビジネスで
使うには他ソフトとのコラボレーションがどうしても必要。 データベース的には行指向のほうが普通じゃない?
最近は列指向DBもあるけど
構造体とかオブジェクトとかとは逆だけどそれはそういうもんだと思うしかないのでは >データベース的には行指向のほうが普通じゃない?
実世界のデータ自体がそういう形だからね。
数理系の目的以外で使用するのはちと厳しい。 >>58
行列データの物理的な格納方式のことを言っているのだったら、
C言語は行列の格納は行指向(row-major)だけど、
Fortranだと列指向(column-major)なので、Rが列指向なのはむしろ自然。 RDBに慣れた人がKVSに文句言ってるくらい可笑しい話 >次に、C言語の配列がなく、
>リストを配列と呼んでいるらしい
漏れの勘違い
Rのベクトルは、C言語の静的配列で、
同じデータ型の要素が並ぶもの
Rのリストは、C言語の構造体で、
異なるデータ型の要素が並ぶもの
Rのデータフレームは、Rのリストの集積
「アート・オブ・R・プログラミング」を読んでいるが、
オライリーの本は外人なので、
わかりにくいし、疲れる。時間のムダ
アンクの絵本みたいに、
図で表示すればすぐわかるのに >>58
数値計算専用のFortranは列指向なわけだが 68みたいに何の素養もないボケがRを使うような機会ってあるの? ひょっとして手当たりしだいに履歴書だせば、Rでデータ解析するような仕事に付けるの? 3相因子分析をRでできると聞いたのですが専用のパッケージがあるのでしょうか?
よろしくお願いいたします。 やはりそのようなパッケージはないということでしょうか? >>76
Tucker法とかなら、ThreeWayパッケージ ご返答ありがとうございます
three Wayパッケージについて調べてみたいと思います。 ・グラフを重ねて描画
・グラフを並べて描画
この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
> ・グラフを重ねて描画
> ・グラフを並べて描画
> この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()も真にやむを得ない場合以外は避ける(回数が決まっているループに使うのはもってのほか)。 画像ファイル形式に、表(行列)を出力する方法ってありますか?
無ければデータフレームをwriteでcsvに書き出して、スクショとってペイント切り貼りなので、
できれば避けたいです・・・ gridExtraパッケージのgrid.table()でいける >>82
質問者じゃないけど、参考になった。
複雑な図にたくさんの数字ラベルをつけて、
横に数字とラベル名の対照表を簡単につけられないかと長年考えていたが、
これなら簡単そうだな。
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 突っ込まれる前に追記。
もちろん、下記のようにすれば、ある程度実現することは分かっているけど、
ちゃんとレイアウトされた表にすることが難しい
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") >>82
ありがとうございます。
無事表示できました
贅沢を言えば、
>>83の方が言うように
既存のplotと共存させてなくなってきました。
ライブラリを読みましたが、既存のplotとの共存はできないのでしょうか
@A
@プロットしたグラフ
Aその値の表 >>85
古典グラフィックと混載するのではなく、
全てを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])) RのクラスってC言語上でクラスを作るみたいなもんだな pygmentsを使ってみたが、
$ pygmentize -N tmp.R
splus
$ pygmentize -N tmp.r
rebol
拡張子が小文字だとREBOLと認識される模様。 代入にほとんど<-が使われていますが、
=を<-と同じとして使ってよいのでしょうか? >>90
だめ。意味が違うし、結果が異なる場合もある。
ベテランでも<-にすべきところで=を使っている人もいるので、
混乱すると思うけど、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
ありがとうございました
最近勉強始めたのですが、教えていただけなければ全部=で覚えるところでした
また機会ありましたらよろしくおねがいします ちょっとお聞きしたいのですが、
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
> 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を強制的に整数型にしているけど、適宜、自分の思うとおりにアレンジしてくれ。 >>94-96
ありがとうございました
特に具体的なやり方まで教えていただき、感謝です
試させていただこうと思います マスゴミ・売国奴・医療業界が隠そうとする真実---------------------安楽死---------------------奴隷に勝手に死なれては困る
安楽死旅行企画が大人気|竹田恒泰チャンネル
https://www.youtube.com/watch?v=XmP1TRsAe88
武田邦彦:安楽死と大麻、そして売春・・・オランダに学ぶ
https://www.youtube.com/watch?v=nWV8YOY39tw
安楽死党
https://www.youtube.com/watch?v=8nU2UaSlGx0
自殺は後遺症が怖い!だから-----------------------------------安楽死制度-------------------------------------安心して生きるために bash スクリプト内でRのスクリプトを起動して統計処理させてその結果を
1か0かで戻り値($?)として返すにはどうすれば良いでしょうか?