= 統計解析フリーソフト R 【第2章】 =at MATH
= 統計解析フリーソフト R 【第2章】 = - 暇つぶし2ch476:132人目の素数さん
07/11/06 13:04:30
>>475
ほんとに純粋な疑問なので気分を悪くしないで欲しい。
AtamaTsukaeTako <- function(mat,r1,r2){
rbind(mat[r1,]+mat[r2,],mat[c(-r1,-r2),])
}
とせずにわざわざzを経由するのはなぜ?

>>474
> a <- matrix(c(1:4,2:5,3:6,6:9),nrow=4,byrow=TRUE)
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 3 4 5
[3,] 3 4 5 6
[4,] 6 7 8 9
> rbind(a[1,],a[2,]+a[4,],a[3,])
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 8 10 12 14
[3,] 3 4 5 6


477:132人目の素数さん
07/11/06 23:18:08
山形浩生が頼みごとをしている。
URLリンク(cruel.org)

> 求む求むウェーブレットのグラフ (eps形式)! メキシカンハットと
> Meyer. ファンシーなものは不要で、リンク先にあるのと同じ単純なものを
> eps 形式でいただければ幸甚。形式そろえたいのでセットでくださいな、と
> いうより両者を左右ならべて(メキシカンハットが左)横長のeps一本にし
> てくださいな。matlabかなんか持ってる人は一瞬で出るでしょ。

本に名前を載せる、または R の名を売るチャンスか?

478:132人目の素数さん
07/11/06 23:21:53
>>476
出力を明確にする。
デバッグが容易。
個人的趣味。

そんだけ

479:132人目の素数さん
07/11/10 15:05:04
ちょっと、技術的な話になりますが、
詳しい方教えて下さい。
残差にAR(1)過程を仮定したFGLSってこのソフトでどのようにやるのかご存知の方はいらっしゃいますか?

480:132人目の素数さん
07/11/11 06:53:12
関数名を()なしで実行するとそのソースが見られますが、
その中にで出てこない変な名前の関数があります。
これってどこをみれば実装がみられますか?


481:132人目の素数さん
07/11/11 08:33:34
>>480
Rのソース

パッケージならパッケージのソース

そのソースがありませんとか言うなよw

482:132人目の素数さん
07/11/11 12:47:15
.Primitiveとかどうしてくれんねん!w

483:132人目の素数さん
07/11/11 13:57:02
指数表示(4e+8)を整数表示にするにはどうすればいいのでしょうか?
少数は含んでいないのでoptions(digits=10)では対応できないみたいです。


484:132人目の素数さん
07/11/11 14:54:35
そんなのが必要な状況の方が異常な気がするが。
何やりたいの?

485:132人目の素数さん
07/11/11 15:15:35
特に何がやりたいわけではないのですが、
400,000,000 を整数表示するのは異常ですか?

指数表記だと落ち着かないんですよね。

486:132人目の素数さん
07/11/12 05:02:15
>>481
ありがとう。
bootライブラリのソースをダウンロードしてくるとその中にありました。
linuxのrpmでinstallした場合って、ライブラリについてはバイナリしか
installされないみたい。
なんかバグっぽいのがあるので(単なる勘違いの可能性も十分あり)ソースを
見てみます。ありがとうございました。


487:132人目の素数さん
07/11/12 14:22:39
>>486
一般的に、バイナリのrpmをインストールしてもソースは含まれませんよ。
ソースが必要ならsrc.rpmの方をダウンロードしないと。


488:132人目の素数さん
07/11/12 16:37:20
すみませんが、質問です。

Windows版のRですが、OS付属のCMDから R(Enter)で起動すると、問題なく動き
ます。しかし、Cygwin の bash から起動すると、

~ $ R
Fatal error: you must specify '--save', '--no-save' or '--vanilla'

というエラーが出ます。

これらのオプションをつけて起動すると、エラーは出なくなりますが、どうも
正常に動いていないようです。例えば

plot(1:10, 1:10)

でグラフが表示されません(CMDならウィンドウが現れてグラフが表示されます)。

これは一体なぜでしょう?そしてどう対処したらよいのでしょうか?
OSはWindowsXPです。


489:132人目の素数さん
07/11/12 16:59:30
>>488
Windowsのことは全く知らないで当てずっぽうだが、Rのオプションしては、
初期ファイルへのパスが通っていないと予想。プロットされてないのは、X
window systemがインストールされていないまたはきちんと設定されてな
いないと予想。

490:488
07/11/12 20:25:47
>>489
ありがとうございます。

初期ファイルへのパスですが、Cygwin環境のパスは、Windows標準のコマンド
プロンプトのパスにいろいろ付け加えたものなので、パスが通っていないとい
うことは考えにくいのです。

X Window についてですが、Windows版の R は、Cygwin環境から起動すると、そ
れを自分で判断して Xクライアントになるということでしょうか?かなり驚き
です。
確かに私は CygwinのX環境は、使うつもりがないのでインストールしていませ
ん。R にはCygwin環境からでも、通常のWindowsソフトとして起動してもらい
たいものです。何か起動オプションがあるかと思いましたが、見つかりません
でした。
どうしたものかなあ。X環境はかさばるので、できたら導入したくないのですが。


491:132人目の素数さん
07/11/12 21:58:14
>>490
Windowsのコマンドライン用にも関わらず、
Cygwinでコマンドを呼びだすとLinuxふうの環境変数が渡されちゃうからそのエラーが出るのでは?
当然Xクライアントにもならないとオモ

やるとしたらCygwinのbashでWindowsのアプリケーションを明示的に呼び出す方法があれば使うくらいじゃね?


492:132人目の素数さん
07/11/12 23:11:49
あれ、>>485って答えるに値しないぐらい基本的な質問ですか?(汗

493:132人目の素数さん
07/11/12 23:21:48
>>490
自分のところで試したら普通に動いたけど…。
Rのバージョンはいくつ?こちらは少し古くて2.2.1だけど
CygwinのbashからRと打つだけで動いてplotもできたよ。
Xウインドウ環境は入れてないよ。
パスはWindowsの方の環境で設定されてるよ。

494:488
07/11/12 23:22:16
>>491
ありがとうございます。分かりませんが、おそらくそれで正解のような気がし
ます。問題は、もう私の今の技術力では解決不能ということです。うう...。

とりあえずは諦めて、Windows標準のCMDから立ち上げます。ありがとうござい
ました。


495:488
07/11/12 23:28:24
うわ、入れ違いでした。

>>493
~ $ R --version
R version 2.4.1 (2006-12-18)
こんな感じです。

そちらでは
> plot(1:10, 1:10)
は表示されますか?

実はこちらでは、上の式はダメですが、R-tipsの28ページに載っているrglの図
2.24 のグラフは、不完全ながら表示されました。plotがすべてダメというわ
けではないようです。

単純に、バージョンを上げたら解決するのかも知れません。

すみませんが、今日はこれでPCを離れます。失礼します。


496:488
07/11/13 11:21:45
追伸。バージョンを上げてもダメですた。

~ $ R --version
R version 2.6.0 (2007-10-03)
Copyright (C) 2007 The R Foundation for Statistical Computing
ISBN 3-900051-07-0


497:132人目の素数さん
07/11/13 20:10:41
試したのはまさにplot(1:10, 1:10)です。
Cygwinの方に問題があるのでしょうかねえ。
こちらのものはだいぶ前に入れたので古いです。
たとえばbashのバージョンは2.05b-16でした。
(今は3.2.25-17なので相当古いですね…。
古い方がうまく動くとかでしょうか?)


498:488
07/11/13 22:20:43
>>497
ありがとうございます。

ちょっと分かりませんが、やはりCygwinから起動するとXクライアントになっ
てしまうのかもしれませんね。
まあ、それっぽい情報はぜんぜん見つからないのですが。

他に最新のCygwinとRをお使いの方はいらっしゃいませんか?
もしかしたら、ESSを使えば問題ないのかな、と思ったりしますが。


499:132人目の素数さん
07/11/13 22:49:03
R project's GNU R for Maemo - Theory of Measurements Wiki
URLリンク(kavaro.com)
動くのかしら?

500:132人目の素数さん
07/11/14 09:53:31
>>498
ESSも多分ダメだろw
ありゃshellだから。

ESSならMeadowでやるとすんなり使えるけど。

501:132人目の素数さん
07/11/14 09:59:47
自由度=i、P=0.05 のカイ二乗境界値を求める
コマンドって無い?
(所謂、統計本の巻末に載っているようなカイ二乗値の
 表で任意の自由度、危険率の境界値が得たい)
これって自分で式を組まなければいけないのでしょうか。

502:488
07/11/14 14:41:47
いろいろ参考リンクを見つけてきました。

cygwinでRはできる? なんでも掲示板アーカイブ(1)
URLリンク(www.okada.jp.org)

Cygwin とR のインストール
URLリンク(web.archive.org)
URLリンク(web.archive.org)

Cygwin00/Section10 - Windowsで始めるBioinformatics
URLリンク(tetralog.mydns.jp:8080)
tetraの外部記憶箱 - R on Cygwin
URLリンク(tetralog.mydns.jp:8080)
> ポイントは、以下の通り。
> Rのインストール先をCygwinと同一にする事。
> Rの設定ファイル(Rconsole)をホームディレクトリに置いておく。
> Rterm.exeを使う場合には、文字コードをShift-jisにする事。ターミナルに
> rxvtを使っているのであれば、「$ rxvt -km sjis」とするか、“.Xdefaults”
> 辺りに「Rxvt.multichar_encoding: sjis」と書き込んでおく。

---------------
ということで、再度挑戦してみました。

・Rの古いバージョン R 2.2.1 (December, 2005)を利用
 URLリンク(cran.md.tsukuba.ac.jp)
・Cygwinは最新
・c:\cygwinにRをインストールする

503:488
07/11/14 14:47:21

結果は、やはりダメですた...。

~ $ R
Fatal error: you must specify '--save', '--no-save' or '--vanilla'

上の記事では 2006-03-24 に成功しているのですから、それより昔のバージョ
ンを使ってみたのですが、うまく行きませんでした。Rのバージョンのせいでは
なかったようです。

また、CygwinからだとXクライアントになってしまう、という線も薄くなってき
ました。

-----

それゆけBioinformatics: Cygwin でR & Bioconductorを使う2
URLリンク(bioinfo-goto.seesaa.net)

この記事では、>>502の記事とは違い、R を c:\cygwin にはインストールして
いませんが、問題なくRterm が動いているようです。ちょっと古い
(2004-09-08) 記事ですが。


ますます分からなくなってきました。


504:132人目の素数さん
07/11/14 19:38:14
計算結果を小数点以下までずらずらと表示させたいのですが
どこの設定で変えれるのでしょうか
R 2.2.0を使っています

505:132人目の素数さん
07/11/14 19:59:16
>>504
options(digits=好きな数字)


506:132人目の素数さん
07/11/14 23:15:25
>>505

>>485はどうでしょう?

507:132人目の素数さん
07/11/14 23:38:22
>>506
自分は詳しくないんでアレだけど、
もしかしたら >>393->>396 の多倍長整数ライブラリしかないかも。

もしそうなら結構不便ですね。
この辺はPythonでNumpyとかを使ってた方が楽だった。


508:132人目の素数さん
07/11/15 00:21:07
>>507
ありがとうございました。
ちょっと不便ですね。

509:132人目の素数さん
07/11/15 00:58:34
>>503
まだ解決しないんですね…。
CygwinからRguiと打つとWindowsのRは起動するのでしょうか?
それともそれもだめなのでしょうか?
また、起動オプションで--no-saveだけで動くなら起動時に
画面に無保証であるとかの文言は日本語で出るのでしょうか?


510:132人目の素数さん
07/11/15 01:06:51
CYGWIN側でパスを通してないんじゃないでしょうか


511:488
07/11/15 01:22:06
みなさん、ありがとうございます。

>>500
Meadowは重くて、あまり好きではないのです。

>>509
> CygwinからRguiと打つとWindowsのRは起動するのでしょうか?
これはちゃんと起動します。plot(1:10, 1:10)も問題なく実行できます。

> また、起動オプションで--no-saveだけで動くなら起動時に
> 画面に無保証であるとかの文言は日本語で出るのでしょうか?
はい、日本語でちゃんと出ます。

>>510
パスが通っていなければ、そもそもエラーどころか起動しないのでは?
Rguiは問題なく起動できますし。


512:132人目の素数さん
07/11/15 01:29:26
そだね
でもなんでRGUIをcygwin経由で呼び出すのかがわかりませんですね

513:132人目の素数さん
07/11/15 01:30:00
LIBが通ってないのでは?

514:132人目の素数さん
07/11/15 02:39:05
>>512
パスがちゃんと通っているかの確認だけ。

さて、Cygwinをバージョンアップしてみたが、Rは問題なく動いた。
(Rは2.2.1のまま)

>>513
setで見る限りLIBの設定などないのだが、ちゃんと動いてる。

さらで入れるのとバージョンアップでは何か違うのか?それとも他の原因か?

515:132人目の素数さん
07/11/15 03:07:43
cygwinでexportしてないんじゃないのLIB関係のディレクトリ
setってwindowsのほうの話でしょ

516:132人目の素数さん
07/11/15 03:15:39
ひょっとして
bashのスクリプトファイル作らずに単純にCygwinからコマンド入力してるだけ?

517:132人目の素数さん
07/11/15 09:21:46
>>501

qchisq(0.05,i)


518:132人目の素数さん
07/11/15 09:28:35
>>511

とりあえず、bashから
$ export
で出る環境変数一覧、晒してみては?
ただし、個人情報が入る可能性もあると思うので書き込む際は慎重に。


519:132人目の素数さん
07/11/15 09:42:27
>>515
exportでもほとんど同じ。LDに関するものはなし。
さて何が問題なのやら。

520:501
07/11/15 09:46:46
>>517
初心者の質問なのにありがとー。
おかげで助かりました。

521:505
07/11/15 09:52:48
>>506
見落としてた。すまん。
> a <- 400000000
> a
[1] 4e+08
> formatC(a,format="fg")
[1] "400000000"
> formatC(a,format="fg",big.mark=",")
[1] "400,000,000"

確かに4e+08はScientific notationかもしれないが、分野によっては
400000000や400,000,000の方が歓迎されることには同意。

522:488
07/11/15 14:12:18
遅くなりました。

こちらは現在、Cygwinが最新、R が 2.2.1。>>514氏と変わらない環境のはず
です。しかし、こちらは動かない。Cygwin と R のバージョンに問題があるの
ではなく、私の環境に問題がある可能性が大きくなってきました。

ちなみにこちらは、Cygterm と PuTTY を使っています。


>>518
$ export で出てくるものは、どう見ても R と関係ないものばかりでした。
>>519氏の環境では、その状態でちゃんと動いているそうですが。

全部で80行以上ありますが、さらしますか?


>>516
たしかに、bash から Rterm を直接呼び出しているだけです。
スクリプトファイルを作る必要があるのですか?
どのようなものでしょうか?

URLリンク(web.archive.org)
> また、Cygwin の画面から Rterm.exe と入力し、ターミナルモードで起動する
> ことも出来ます。

とあるので、シェルスクリプトなど必要ないと思っていました。


523:132人目の素数さん
07/11/15 14:40:12
いくつかの数値からなるベクトルがあるのですが、前後の数字の比率を
計算したいと思っています。今は以下のようにやっているのですが、
なにかもっとよい方法はないでしょうか。
a <- c(1,2,3,4,5,6,7)
b <- c(100, a) # 100は適当な数字。
bb <- c(a, 100)
bb / b


524:132人目の素数さん
07/11/15 14:47:10
>>523
やりたいことがよくわかんない。
> a <- c(1,2,3,4,5,6,7)
> a[2:7]/a[1:6]
[1] 2.000000 1.500000 1.333333 1.250000 1.200000 1.166667
↑これを計算しているだけに見えるんだけど。


525:524
07/11/15 14:50:19
汎用化するなら
> hoge <- function(x) {
+ x[2:length(x)]/x[1:length(x)-1]
+ }
> hoge(a)
[1] 2.000000 1.500000 1.333333 1.250000 1.200000 1.166667


526:132人目の素数さん
07/11/15 15:04:37
>>524,525
ありがとうございます!
なるほど、、、ついついforループ等で回して、
などという処理を考えてしまったのですが、
a[2:7]/a[1:6]
というのは全然分かりませんでした。


527:132人目の素数さん
07/11/15 15:33:24
Cygwinにwindowsのpathは自動的には渡されないので
コマンド入力による起動はただの偶然でしょうね
bachでしっかりpathを設定してexportするだけで問題は解決するんじゃないでしょうか


528:132人目の素数さん
07/11/15 15:56:22
試しにRとRGUIをPATH設定しEXPORTした上で起動しましたが問題なく開きます
R2.5.0 Cygwinは最新版ですね
plot(1:10,1:10)も問題なく開きます
ただしENTERキーのテンキー側は使えなくなるようです
これはプログラム上の問題でしょうかね


529:132人目の素数さん
07/11/15 16:12:10
最後に考えられるのは権限の問題ですね
RやCygwinにアクセスする権限を持っているでしょうか

530:528
07/11/15 16:17:16
おそらく、それらにアクセスするための明確な権限はもっていないと思われますが、
それがこの問題を引き起こす根本的な原因なのかははっきりと断言できません。

531:488
07/11/15 16:26:00
ありがとうございます。ちょっと時間がないので手短に。

>>527
パスは通っているのです。R のインストール先を c:\cygwin 自体にしている
ので、Rterm.exe 等は c:\cygwin\bin に置かれます。Cygwin環境では /bin
となる場所ですね。

ところで不思議なのは、

~ $ which Rterm の結果が
/usr/bin/Rterm となることです。
/bin/Rterm となるかと思ったのですが。

もしかしたら、これがトラブルの原因と関係あるかもしれません。

ただ、~ $ which Rgui も /usr/bin/Rgui なのに、問題なく立ち上がるので、
関係ないのかもしれませんが。


532:132人目の素数さん
07/11/15 16:30:36
Cygwinの仕様でRootが/usrになります
mountで調べると良いでしょう
cygwin内にインストールしていなくても/cygdrive/以降に通常のディレクトリを入れて
PATHを通せばCygwinからアクセスできます


533:488
07/11/15 16:38:14
>>532
すみません、確かに関係ないようですね。失礼しました。
URLリンク(www.sixnine.net)

~ $ mount
C:\cygwin\bin on /usr/bin type system (binmode)
...

~ $ /bin/Rterm.exe
Fatal error: you must specify '--save', '--no-save' or '--vanilla'


534:132人目の素数さん
07/11/15 21:02:47
通りすがりです。
R も cygwin も使ったことないのですが、ちょっと興味を持って
R の調べものをしてたら目にとまったので。

>>488
> ~ $ /bin/Rterm.exe
> Fatal error: you must specify '--save', '--no-save' or '--vanilla'

エラーメッセージ中で指示されてる --save だの何だのという
オプションはスクリプトを実行する時に使うオプションのようですが、
このメッセージが出たということは R は tty を勘違いしてる。

スクリプトを実行するときは

$ R --save < a.r

のような感じでリダイレクトしますよね?そういう状態だと R は勘違いをしてるわけです。
例えば --save オプションを付けて plot 命令を実行したとき、
そのフォルダに何か保存されてませんか?

原因は R にあるのではなく、恐らく cygwin のほうにあって、
多分 cygwin の isatty がアヤシイと思いますよ。

回避策は知りません。どうしても解決をしたいのなら cygwin に詳しい人のところに行って
質問するほうが良いかも知れませんね。

535:132人目の素数さん
07/11/15 21:05:28
オプションつけずにそのエラーが出てるんだからちがうべ

536:132人目の素数さん
07/11/15 21:10:36
>>535
だからさ。

・オプションを付けずに実行するとエラーが出る。
・オプションを付けて実行すると動くことは動くがグラフは表示されてない。

というんでしょ。 tty の勘違いの典型例。

537:488
07/11/15 22:27:33
>>234->>236
ありがとうございます。

確かに、Rterm --save で plot(0:10, 0:10)を実行したところ、
カレントディレクトリに Rplots.ps というファイルが出来ていて、
GostScriptで開いたところ、まさにそのグラフのPostScriptファイルでした。

isatty はよく知らないので、ちょっと勉強して考えてみます。


538:132人目の素数さん
07/11/15 22:44:19
>>537
あ、いや、isatty というのはプログラムの中から呼び出す C のライブラリ関数なわけで。
知らないなら知らないでもいいかと。

問題点は

「R がリダイレクト (<のこと) ではないのに、リダイレクトと勘違いをしてる」

というところにあるかもしれない、ということだけ理解していただければ。

ちょっと調べてみたら cygwin を使う人は emacs を動かすとき

$ CYGWIN=tty emacs

とするらしい。これでうまく動くかどうかは望み薄かもだけど、
そういうふうに環境変数の設定でなんとかできるかも知れません。
上の方で cygwin + R が上手く動いているというかたがおられるようなので、
お願いしてみて、環境変数を付き合わせてみるというのも一つの手カモ。

539:132人目の素数さん
07/11/15 22:51:46
postgreSQL用に使ってたからCygserverとか動くようになってるけど関係あるかな

540:132人目の素数さん
07/11/15 22:55:48
今 ググったら cygserver のクライアント側では

export CYGWIN=servere

の設定をするとあるね。2004 年ごろの日記だったけど。

541:132人目の素数さん
07/11/15 23:02:53
>521

URLリンク(phi.med.gunma-u.ac.jp)
> 2chへの書き込みはしたくないので,ここにメモするが,整数扱いさせればいい。
> as.integer(400000000)を付値した変数は, printさせても4e+08とはならず,
> 400000000となる。この場合,例えば,as.integer(3)を掛けても整数型のまま計
> 算できるが,as.integer(400000000)*as.integer(400000000)は桁溢れを起こして
> NAとなってしまうので注意が必要。整数型を超える大きさの数になってしまう場
> 合は,以前メモした多倍長演算ライブラリgmpを使うしかないだろう。

だそうですよ。

542:132人目の素数さん
07/11/15 23:39:09
>>522
Cygwinの起動方法が違うのかも。
こちらはPuTTYではありません。
よく知らないのですが、バッチファイルで
bash --login -i
というように起動しています。

543:132人目の素数さん
07/11/15 23:43:27
大元の発言,400000000をそのまま表記したいと言うこと?
as.integer(400000000)
でもいいだろうし,最近のバージョンだと
400000000L
でいいじゃない?
発言の糸川からぬ。
> x <- 400000000L
> x
[1] 400000000
> as.integer(400000000)
[1] 400000000
> 400000000L
[1] 400000000


544:132人目の素数さん
07/11/15 23:51:29
今時 R-2.2.0 とは,時代遅れもはなはだしい

545:132人目の素数さん
07/11/16 14:32:36
Rjpwikiに「整数表記できる最大の数値」を書き込んだ人はここを見ているな。

546:132人目の素数さん
07/11/16 20:09:05
>>544
まあ確かに時代遅れだな。でもメインに解析に使うマシンではないので
基本的なことができればいいからな。
Rはインストールする度にパスの変更が必要になるので手軽に
バージョンアップしにくいんだよね。
(それでも必要なマシンはバージョンアップするけど)

547:132人目の素数さん
07/11/17 22:20:22
点を、(x1 x2)∈[-5,5]×[-5,5]の範囲に1000個、図示したいんですが、Rだとどうやってできますか?

x1=seq(-5,5,len=1000)
x2=seq(-5,5,len=1000)
plot(x1,x2)

みたいにしたんですが、1次関数みたいになってしまった、欲しいのと違います。

・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・

こんな感じにしたいのです

548:132人目の素数さん
07/11/17 23:48:20
>>547
理論的には

x1=seq(-5,5,len=1000)
x2=seq(-5,5,len=1000)
plot(x1,x2,type="n")
for (i in 1:1000) for (j in 1:1000) points(x1[i],x2[j])

とすればできるが、PCがうんともすんとも言わなくなるかもね。
100x100でもそれなりに時間かかるからそれから増やしてみたら。
また、1000x1000ならほとんどまっくろになると思う。

549:132人目の素数さん
07/11/18 00:01:50
>>548
実は、2変数のnewton法で、初期値に対する収束値の関係を2次元で図示(どの値に収束するかを色等で明示せよ)するっていうレポをやってるんです。

問題では、(x1 x2)∈[-5,5]×[-5,5]の範囲に10000個初期値をとってやるんですが、その10000個に対する収束値はプログラムで求まってます。


これってどんな風に図示したらいいんですか?収束値によって初期点を色でわけるっていうのを考えたんですが、いまいちうまくかけません。

プログラムの結果は

初期点  収束値
-5 -5 x1 x2





5 5 x1 x2

みたいにテキストに保存されてます。

ちなみに収束値は解いてるのが2次なんで、2種類しかないです

550:132人目の素数さん
07/11/18 01:44:42
収束値で色分けするので何が問題なの?
プロットの問題ではなく色分けの仕方が分からないの?

551:132人目の素数さん
07/11/18 12:02:22
>>550
そうです!

552:132人目の素数さん
07/11/19 00:02:50
Rで2変数関数のプロットをするにはどうするんですか?
たとえば
x1^2+x^2=6

とかの円をかきたいんですが

553:132人目の素数さん
07/11/19 20:11:05
>>551
色分けって
plot(iris[,1],iris[,2],col=ifelse(iris[,5]=="setosa","red",ifelse(iris[,5]=="versicolor","blue","green")))
のこと?

554:132人目の素数さん
07/11/19 21:34:54
>>552

> x <- (-20:20)/8
> y <- sqrt(6-x^2)
Warning message:
計算結果が NaN になりました in: sqrt(6 - x^2)
> plot(c(x,x),c(y,-y),type="l")
> symbols(0,0,circles=sqrt(6),add=TRUE,inches=FALSE)

なかなか興味深い。

555:132人目の素数さん
07/11/20 00:38:17
>>554
きれいにつなげようと思ったら
x <- (-20:20)/20*sqrt(6)
y <- sqrt(6-x^2)
plot(c(x,-x),c(y,-y),type="l")
だな。

556:132人目の素数さん
07/11/21 18:11:16
>>488
bash@cygwinにて
cd /usr/local/bin
ln -s /cygdrive/c/Program\ Files/R/R-2.6.0/bin/R.exe
としてうごかんか?

リンクが張られるからこれでRは動かしてるよ。

セーブがされないのはcygwinとwindowsのパスの取り扱いの違い
が悪さをしてる臭いよ。cygwinは"/"だけどwindowsは"c:\"だか
らね。cygwinとwindowsを混在させて使うときに頭が痛い問題な
のよ。

557:かげちよ
07/11/24 00:42:28
(;'ー`)cygwin portsにRのコンパイル済みパッケージがあるぞ

558:132人目の素数さん
07/11/24 16:58:17
>>556
あるのは知ってるけど、意図的に使ってない。

559:132人目の素数さん
07/11/24 18:19:46
あっそ、意図的にねえ
そりゃよかったね

560:132人目の素数さん
07/11/25 00:03:38
意図的ってなんで?
多分Cygwin用に何か足されてると思うけど


561:132人目の素数さん
07/11/25 14:28:43
aparchFitがfSeriesの中に入ってないのですが
どうやったら使えるのですか?

562:132人目の素数さん
07/11/25 16:24:05
cygwinはなるべく使いたくないということだけだよ。
vmware+ubuntuの方でも使ってるけど。cygwinって、

コンパイル速度を見てても遅いんだよね。windows(without cygwin)
版とcygwin版との比較はしてないけど。あとは、vistaでx11が使えな
いという問題もあるが。

563:132人目の素数さん
07/11/25 16:27:03
windows版インストーラーはversion 2.6.0なんだよね。

564:132人目の素数さん
07/11/25 16:40:58
(;'ー`)つーか、Rだのscilabだのlinux由来のアプリ突っ込むときは
C直下にbinだのディレクトリ作ってそこにインストールするけどねえ
ディレクトリ名でけっこう問題出るし
そういうアプリを使うときはcygwinのshellから叩くと一緒に扱えて便利だなあ

565:132人目の素数さん
07/11/25 16:48:24
>>564
うん。cygwinとwindowsってその辺がイライラする問題だよな。
だから、基本はvmware+ubuntu+emacs(ess)でやってる。ディス
クアクセス以外はほとんど速さが変わらないから。unix系はunix
上の方が安心して使えるわ。
入れ方は簡単で、vmware playerとubuntuの日本サイトからvmware
用の仮想ファイルを取ってくればそれでおしまいです。そこから、
sympaticを使ってインストールすれば2.5になるし、ソースからコン
パイルするもよしです。

566:132人目の素数さん
07/11/25 21:15:52
colinuxからntfsマウントして自由に出来ればな
あれ、まだハンパだから

567:132人目の素数さん
07/11/26 10:37:30
colinuxはまだ成熟してないと思ってたから導入は見合わせていたけど、
vmware player + ubuntuの組み合わせでさらに便利にするのはvmware tools
を導入することかな。ちょっと敷居が高いけど、ここまでできれば、
windows/ubuntuでドラッグ&ドロップ、カット&ペーストができるようにな
る。マウスカーソルの移動も全く問題なくなるし。windowsのアプリの一つと
してubuntuが使えるね。大体320M~512Mあればかなり余裕なんで、windows
vista+2Gの環境ならば余裕がある。vmware tools の導入方法は調べたら紹介
してるところが多いから見てみればいいです。

568:132人目の素数さん
07/11/26 10:42:41
320~512MというのRAMの設定ね。わかりにくい書き方だった。
ちなみに、メモリ1Gの環境+windowsならば320Mで十分だよ。
設定ファイルを少し書き変えなきゃいけないと思うけど。

569:132人目の素数さん
07/11/26 16:56:03
質問失礼します。

統計学なんでもスレッド7
スレリンク(math板:70-72番)

と重複になってしまうのですが、こちらで聞いた方が良いと判断し、
書き込みしました。

■Rで学ぶデータマイニングII
URLリンク(www.amazon.co.jp)
を買おうかどうしようか迷っているのですが、
使った方はいらっしゃいますでしょうか。
卒論の時系列解析の参考にしようかと思っています。

SとRは1年間大学で学び、また web の R-tips も活用しています。
上記のIは買っていません。

570:132人目の素数さん
07/11/26 21:24:55
>>569
Iは良い本だよ。
IIも買う予定。

571:132人目の素数さん
07/11/27 02:47:51
>>570
レスありがとうございます。
レビューはネットに1つも見つからなかったので、他の方の意見が聞けてありがたいです。
明日もう少し立ち読みして、購入するかどうするか決めようと思います。

572:132人目の素数さん
07/11/27 11:53:30
>>569

正直「九天社が出版している」ってだけで止めた。
ここは「出したい」って言えば内容の吟味なんか無しで何でも出版する模様。
この出版社の本はろくすっぽ編集が入らない。
従って巻末の索引なんかも出鱈目な場合が多い。
別の出版社から本が出るまで待つ。

何冊も「九天社」の本を買ったことがある経験からの一言。

573:569
07/11/27 12:14:05
>>572
貴重な意見ありがとう。
とりあえず、本屋で1時間ほど株式の時系列解析の項を読んで、
購入を決めた。
また報告に来る

574:132人目の素数さん
07/11/27 12:29:08
>>573
おおよそどんな感じの内容か俺も知りたい。

R関係の本って「Rによる○○統計学」みたいな立派な題名が
ついてても、実際には Introduction to R や R-Tips の焼き直し
みたいな内容のものが多いからなあ。

575:572
07/11/27 12:41:36
結局南極俺様の意見は役に立たなかったわけだな
でも そんなの関係ねぇ

576:132人目の素数さん
07/11/27 12:41:57
>R関係の本って「Rによる○○統計学」みたいな立派な題名が
ついてても、実際には Introduction to R や R-Tips の焼き直し
みたいな内容のものが多いからなあ。

同意。
正直、「R云々」と書いた本買うより、「S PLUS」って書いてある本の方が役に立つ。
R関係の本の出版数が増えたのは喜ばしい事だが、内容的にはまだまだ、だと思う。
「自主制作本」とか「ブログを纏めただけの出版」のレベルは越えていない。

577:574
07/11/27 12:45:22
>>576
そうか、お前もだんだんわかるようになって来たんだな。とうさん嬉しいぞ。
その調子でガンバ!

578:132人目の素数さん
07/11/27 15:56:30
Rでファジー使ったことある人居る?

579:132人目の素数さん
07/11/27 16:05:22
いるアルヨ

580:132人目の素数さん
07/11/27 18:30:02
ファジーのパッケージのドキュメントが今一分かりにくくて使いこなせないんだけど
どこかお勧めの例題あつかってるとことか教えてもらえませんか

581:132人目の素数さん
07/11/28 14:16:25
Rで学ぶデータマイニング読んでいます。
plot3Dを使って、Graph-Rのようなカラー表示できる
方法があったら教えてください。

Grap-Rだと、130万のテータをプロットしたとき
重いし、他のプログラムが落ちることがあり、
移行を考えました。
ただ、今Rで、
> plot3d(y[,1:3], size=5, pch=30)
すると、真っ黒状態で、わかりづらいのです。


582:132人目の素数さん
07/12/02 03:30:53
>R関係の本って「Rによる○○統計学」みたいな立派な題名が
>ついてても、実際には Introduction to R や R-Tips の焼き直し
>みたいな内容のものが多いからなあ。

基本手順がおなじならしょうがなくね?
つーか、Rさえほとんど使ってない奴とかあるよな

583:132人目の素数さん
07/12/02 16:48:48
ブラウン運動をplotしようとして以下の様にやったのですが、
series_plus()関数が、入力される数列が大きくなると遅いです。
forは遅いから使うな、とかapply系を使えとか言われたのですが、
(このプログラムに対してではないですが)
以下のプログラムを改良する方法を教えてください。

> series_plus
function(x) {
len <- length(x)
y <- numeric(len)
for (i in 0:(len-1)) {
y <- c(numeric(i),x[1:(len-i)]) + y
}
y
}
> x <- rnorm(10000)
> plot(series_plus(x))



584:132人目の素数さん
07/12/03 04:45:12
あと、plot()関数で、y軸のrangeを固定するにはどうすればよいでしょうか

585:132人目の素数さん
07/12/03 07:56:23
>>584
例えば, ylim = c(0,100) でOKかと。

586:132人目の素数さん
07/12/03 08:58:01
>>585
ありがとうございます!
これでブラウン運動を観察しやすくなりました。こんな感じです

for (i in 1:10000) {
plot(series_plus(rnorm(1000)),type="l",ylim=c(-100,100))
}

series_plus()はちょっと前のカキコの関数です。

587:132人目の素数さん
07/12/04 11:14:15
>>586
demo(graphics)
を実行してみた?


588:132人目の素数さん
07/12/06 03:00:41
質問です

URLリンク(www1.doshisha.ac.jp)
のほぼ中央の部分

② 判別関数を求める
~中略~
この判別係数を用いた第1判別関数を次に示す。
=
-0.592x1 -1.842x2 + 1.653x3 + 3.564x4 -c
x1,x2,x3,x4はそれぞれirisデータの変数~を示す。

とありますが、この場合のx1はSepal.Lengthにある5.992、5.024、6.504のどれになるんでしょうか

589:132人目の素数さん
07/12/06 07:25:40
>>588
なぜそれらの数値を使おうと思うのか?
x1とは生データのことだろ。

590:132人目の素数さん
07/12/06 21:18:07
>>587
ありがとうございます。
みてみました。さすがにキレイだ。
cumsum()というのを使えばよかったんですね。
僕は、ベクトルを1つずつずらしながらたし算してしまったけど、、、

591:132人目の素数さん
07/12/06 21:30:55
すいません、また質問です。
linuxのRからplot()の結果を印刷するにはどうすればよいですか?

592:132人目の素数さん
07/12/06 23:10:34
>>591
postscript(file="|lpr")

593:132人目の素数さん
07/12/06 23:35:50
ありがとうございます。
でも、いかのようにしたのですが、プリントされません(泣)
> postscript(file="|lpr")
> matplot(x, type="l")
なにかまちがってますか?



594:132人目の素数さん
07/12/07 07:40:51
>>593
dev.off()
っていうか、入門書を一度読んだ方がよいのでは。

595:132人目の素数さん
07/12/09 06:20:09
統計解析フリーソフト Rの成分解析結果 :

統計解析フリーソフト Rの45%はかわいさで出来ています。
統計解析フリーソフト Rの25%は回路で出来ています。
統計解析フリーソフト Rの18%は陰謀で出来ています。
統計解析フリーソフト Rの7%は魔法で出来ています。
統計解析フリーソフト Rの2%は根性で出来ています。
統計解析フリーソフト Rの2%はスライムで出来ています。
統計解析フリーソフト Rの1%は微妙さで出来ています。

596:132人目の素数さん
07/12/10 12:43:41
>>594
ありがとうございました。
はい、読んでみます。でも、もうちょっとだけ。
Rのコマンドをファイルに書いておいて、それをRで読み込んで実行させるには
どうすればよいですか?
load(filename)とか、やってもだめでした。


597:132人目の素数さん
07/12/10 15:21:17
>>596
load()はデータセットを読み込むコマンドです。Rスクリプトを読み込むには、source()を使います。
本当にマジで、オンライン文書でよいので入門書を読んだ方がよいと思う。または、30分程度誰
かにレクチャーしてもらった方がよいと思う。

ちなみに、普通のRユーザはsource()を使わずに、エディタからRを実行します。



598:132人目の素数さん
07/12/10 19:19:29
>>597
ありがとうございます!
R-tipsとかは読んだんですけどね、、、(読んだつもり?)
本は読むようにします。

> ちなみに、普通のRユーザはsource()を使わずに、エディタからRを実行します。
まわりのRユーザは全員windows版を使ってるのですが、確かにエディタから実行
してました。でも僕はノートパソコンから速めのマシンにsshして、ターミナル内で
Linux版のRを実行しているので、それができませんでした。
なので、教えていただいたsource()コマンドは便利に使えそうです。

ありがとうございました。


599:132人目の素数さん
07/12/10 19:41:28
Mac OS XでRをビルドして行列計算をしたら、オプションには細心の注意を払ったつもりだけど、
バイナリパッケージ(フルパッケージ)の2,3倍遅かった。
不思議な事に、どちらのRを起動しようと(もちろんコマンドラインで./R)、
速さは最後にインストールしたバージョンが何かで決まる。

つまり、本来違うバージョンが共存できることになっているのに、そうなっていない。
どこかの共有部分が毎回上書きされているのか?分かる人いますか?

ちなみに、BLASシェアドラブラリを有効にしてるけど、
ライブラリは個々のバージョンのディレクトリにビルドされていたので、これではないと思う。

600:599
07/12/10 19:58:51
原因らしきものが分かった。
バイナリインストール後の状態を見ると、
/usr/lib/libatlas.dylib
/usr/lib/libblas.dylib
/usr/lib/libcblas.dylib
の全てが、"Current"バージョンの libBLAS.dylib のシンボリックリンクだった。

自前のビルドが遅かったのは、atlas, lapackを自分でビルドしていなかったから、当然だと思うが・・・ここまで遅いとは。
Appleの/lib/libcblas.aなどを使っていたのか、それともR内部の別の汎用ルーチンを使っていたのか?

601:597
07/12/10 20:07:30
>>598
Linuxユーザならなおさらemacs -nw +essを使いましょう。


602:132人目の素数さん
07/12/11 09:31:36
>>598

R-tipsはマニュアルと言うかオナニー本だからwww
編集がロクに入らないと出版物は「寄稿者の自己満」で終わってしまう、と言ういい見本

603:132人目の素数さん
07/12/13 12:39:09
Rでは円や楕円を方程式から直接グラフに表すことはできないのでしょうか
また、円の方程式と楕円の方程式から交点を直接求めることはできないのでしょうか

604:132人目の素数さん
07/12/13 17:50:00
>>603
先日、船○さんが紹介していたRyacasは、もしかすると役に立つのかも知れません。
私は使ったことがないので分かりませんが。

605:604
07/12/13 17:52:50
s/船/舟/
すみません > ○尾さん



606:132人目の素数さん
07/12/15 22:30:05
AR(1)モデルに乗っ取った時系列を発生させるにはどうすればよいですか?


607:132人目の素数さん
07/12/16 01:26:02
単純に x(t) = a*x(t-1) + e(t) ではだめなのか。

608:132人目の素数さん
07/12/16 03:25:41
>>607
あ、そうか。つまり、
cumsum(rnorm(1000))+x0
ということですか?


609:132人目の素数さん
07/12/16 04:04:11
dX(t)=-Φ(X(t-1)-μ)dt+σ dZt
(dZtは正規分布のN(0,dt))
がAR(1)と説明してあったので、以下のように書いてみました。
x0は0としています。

ar1 <- function(mu,sig,dt,T,fai) {
x <- numeric(T)
for(i in 1:(T-1)) {
x[i+1] <- -1*fai*(x[i]-mu)*dt + rnorm(1,sd=sqrt(dt))
}
return(x)
}

Rらしくないとおもうのですが、これってもっとRらしくかけませんか?
(Cで書いたみたい)


610:132人目の素数さん
07/12/17 03:17:41
>>608
それはAR(1)のMA表現に近い感じだけど違うよ。
係数が考慮されてないし、n→∞でも初期値の影響が残っちゃう。

Rっぽいというか、かなりひねくれてるけど

ar1=function(a,n=100,x0=0,sigma=1)
{
    X <- diag(n)
    e <- c(x0,rnorm(n-1,0,sigma))
    ind <- row(X)-col(X)
    X[lower.tri(X)] <- a^ind[lower.tri(ind)]
    drop(X%*%e)
}

a: AR(1)の係数
n: 生成するサンプル数
x0: 初期値
sigma: イノベーションの標準偏差

とかでも。

結局計算時間はfor文回すのとかわんないだろうから
定義通りの>>609みたいのが分かりやすいくていいんじゃないかな。
他に良い方法あるならオレも知りたいが。

611:610
07/12/18 04:32:23
申し訳ない。

ar1 <- function(a, n=100, sigma=1, init=0)
{
    X <- diag(n)
    e <- c(init,rnorm(n-1,0,sigma))
    X <- a^(row(X)-col(X))
    X[upper.tri(X)] <- 0
    drop(X%*%e)
}

はメモリ食いの上に計算が遅く、しかもひねた書き方なのでボツにします。
以下のように素直に書くのが計算も速いし、意味が分かりやすいので一番でした。

ar1 <- function(a, n=100, sigma=1, init=0)
{
    x <- c(init, rep(0, n-1))
    for(i in seq(2,n))
        x[i] <- a*x[i-1] + rnorm(1,0,sigma)
    x
}

要素毎アクセスしてるのはやはり気にくわないけど。

612:132人目の素数さん
07/12/18 04:43:10
連投すまん。
もしnbsp見えてたらそれはミスなので無視してくれ。

ar1 <- function(a, n=100, sigma=1, init=0)
{
x <- c(init, rep(0, n-1))
for(i in seq(2,n))
x[i] <- a*x[i-1] + rnorm(1,0,sigma)
x
}

613:132人目の素数さん
07/12/18 11:09:04
>>610-612
ありがとうございます。
> a <- ar1(0,n=100000)
> ar(a)

Call:
ar(x = a)


Order selected 0 sigma^2 estimated as 0.9985

やっぱりAR(1)ですね。つかわせてもらいます。ありがとうございました。


614:610
07/12/18 16:21:53
>>613
ほんとに何度もすまんが、最もRらしい書き方が分かったよ。

arSeries <- function(a, n=100, sigma=1, init=0)
{
x <- c(init, rnorm(n-1,0,sigma))
filter(x, a, "recursive")
}

おそらくこれがR的にベストでしょう。
係数aはベクトルで与えても可(つまり何次のモデルでもOK)。

> ar(arSeries(c(0.2,0.5,0.3),1e5,sigma=8),order=3,method="burg")

Call:
ar(x = arSeries(c(0.2, 0.5, 0.3), 1e+05, sigma = 8), order.max = 3, method = "burg")

Coefficients:
1 2 3
0.1969 0.5016 0.3016

Order selected 3 sigma^2 estimated as 63.67

615:132人目の素数さん
07/12/18 16:54:36


616:132人目の素数さん
07/12/19 21:51:28
fはx=(x1,x2,…,xn)の関数で、x1,x2,…,xnはそれぞれ0か1の値を取るとします。
その時、取りうる全ての要素を代入したfの和
∑_{x∈{0,1}^n} f(x)
を計算したいんですが、どのようにプログラムを組めばいいのかぜひどなたか教えてください。
お願いします。

617:132人目の素数さん
07/12/20 00:57:02
>>616
fの具体的な説明がないよ。( f:{0,1}^n→ ?)
もしかすると∑_{x∈{0,1}^n} xのことを言ってるのかな?

まず"1+1=2"なのか"1+1=0"なのかはっきりしたほうがいい。

618:132人目の素数さん
07/12/20 01:22:37
あ、fは任意の関数だったりするかな。
引数で関数fを渡すとか…たぶん考えすぎだろうが。

619:616
07/12/20 05:34:24
>>617
すいません、fは

620:616
07/12/20 05:38:53
>>617
すいません、fは{0,1}^nから実数にうつす写像です。
もっと詳しく言うと、f=∑w_{ij} xi xj (w_{ij}はある実数) です。

621:132人目の素数さん
07/12/20 08:09:14
>>620
了解。勘ぐりすぎてたか。

つまり、W=(w_ij)を適当に与えたときのx^TWxを
{0,1}^nにおける2^n個すべての要素のf(x)に関して和をとればよいってことかな?
Wが対称行列などの指定はとくになし?

愚直に書けば2^n回ループまわすことになるけど、
頭使えばほとんど計算機の出番なさそう。

例えばxi xj=1となるものを{0,1}^nのすべてについて調べたとき
その個数がc_ijならΣc_ij w_ij = ∑_{x∈{0,1}^n} f(x)になる。
つまりC=(cij)さえ分かればあとはsum(C*W)が答え…とかどうですか。
まだ考えてないが、cijはnの関数になりそう。

思いつきで書いてるから間違いがあったり、説明が分かりづらいかも。
しかしこういう計算をRでするのって、何に使うのか興味あり。

622:616
07/12/20 21:08:28
>>621
ありがとうございます。
ボルツマンマシンというものの計算をRでやっているところです。

ところで
>愚直に書けば2^n回ループまわすことになるけど、
とありますが、これはどの様にプログラミングを行えばよいのでしょうか?

f=exp(∑w_{ij} xi xj+∑θ_{i} xi)
というものも計算しなくちゃいけないのですが、この場合だと上の方法だとできないので、
ぜひご教授お願いします。

623:132人目の素数さん
07/12/21 02:24:59
>>622
Rで愚直に書くのは案外難しかった。
Rはこういう計算向かないのかなあ…。

sumf <- function(n, FUN, set=c(0,1))
{
X <- expand.grid(replicate(n,set,FALSE))
sum(apply(X, 1, FUN))
}

ただしこれが使えるのはせいぜいnが10程度。
使い方は、最初の関数f(x)=x^TWXなら

> f <- function(x, W) t(x)%*%W%*%x
> W <- matrix(1,4,4)
> sumf(4, function(x) f(x,W))
[1] 80

とか。

624:132人目の素数さん
07/12/21 02:33:47
続き・・・

上のやりかたみたいに一気に(0,1)^nの元を全部生成すると
n×2^nの行列ができるので、nがちょっと大きくなれば
すぐメモリから溢れちゃいます。

となるとfor文の中でひとつひとつxを生成しながら
計算するほうが望ましいけど、Rで毎回それを作るのは面倒だね。

n<=32なら無理矢理

sumf2 <- function(n, FUN, set=c(0,1))
{
res <- 0
for( i in seq(2^n)){
x <- as.numeric(intToBits(as.integer(i))[seq(n)])
res = res + FUN(x)
}
res
}

なんかもありか。ふざけたスクリプトになってきたが。

やはり愚直に書いた指数時間アルゴリズムは
まったく実用的でないことがよくわかります。

625:132人目の素数さん
07/12/21 03:01:55
あ、下のset=c(0,1)は削り忘れ。

626:132人目の素数さん
07/12/21 04:49:34
ネットでボルツマンマシンの解説をナナメ読みしてみました。
なるほどx_i x_j = 1のとき同時発火ね。Σf(x)は分布を求める部分かな。

どうやら正攻法では指数時間は不可避のようです。
最初にいってた単純な二次形式の和だけならまだやれそうだったが。

ともかく一度定義通りに計算してみたいだけなのかな。

627:616
07/12/21 13:02:23
ありがとうございます。
そのプログラムを利用してボルツマンマシンを作ってみたいと思います。

628:132人目の素数さん
07/12/21 17:09:11
ニューラルネットのライブラリあったんじゃなかったっけ

629:132人目の素数さん
07/12/22 04:47:26
> data
x a1 a2
1 2.419707e-01 1 1
2 5.399097e-02 1 1
3 4.431848e-03 1 2
4 1.338302e-04 1 2
5 1.486720e-06 2 1
6 6.075883e-09 2 1
7 9.134720e-12 2 2
8 5.052271e-15 2 2

こういう形のデータがあったとして(a1,a2 は因子です),
各要因の組み合わせごとの x の平均を出す簡単な方法ってありますか?

630:132人目の素数さん
07/12/22 18:47:02
>>629
おもしろそうなので考えてみた。でも for文を使うのしか思いつかなかったorz

> data <- data.frame(x=round(runif(8),2),a1=as.factor(c(rep(1,4),rep(2,4))),
+ a2=as.factor(c(1,1,2,2,1,1,2,2)))
> data
x a1 a2
1 0.73 1 1
2 0.31 1 1
3 0.53 1 2
4 0.69 1 2
5 0.80 2 1
6 0.88 2 1
7 0.94 2 2
8 0.39 2 2
> for ( i in levels(data$a1)){
+ for (j in levels(data$a2)){
+ y <- mean(data[(data$a1==i) & (data$a2 ==j),1])
+ print(c(x.mean=y,a1=i,a2=j))
+ }
+ }
x.mean a1 a2
"0.52" "1" "1"
x.mean a1 a2
"0.61" "1" "2"
x.mean a1 a2
"0.84" "2" "1"
x.mean a1 a2
"0.665" "2" "2"


631:630
07/12/22 18:55:38
ちょっと短くできた
> a3 <- paste(data$a1,data$a2)
> for (i in unique(a3)){
+ print(paste(i,"mean = ",mean(data[a3==i,1])))
+ }
[1] "1 1 mean = 0.52"
[1] "1 2 mean = 0.61"
[1] "2 1 mean = 0.84"
[1] "2 2 mean = 0.665"


632:132人目の素数さん
07/12/22 19:13:46
>>629
組み合わせって言うけど、1-2と2-1は異なるグループと考えていいの?

> label <- factor(paste(data$a1,data$a2,sep="-"))
> label
[1] 1-1 1-1 1-2 1-2 2-1 2-1 2-2 2-2
Levels: 1-1 1-2 2-1 2-2
> tapply(data$x,label,mean)
1-1 1-2 2-1 2-2
1.479808e-01 2.282839e-03 7.463979e-07 4.569886e-12

異なるグループとするならこんなんでいいと思う。

633:132人目の素数さん
07/12/22 19:27:16
factanal()の結果のloadingsをうまくエクセルの表に貼り付けたいのですが、
良い方法ありませんでしょうか?
画面上の結果をコピーして、ちまちまエディタでタブを入れることしか
思いついてないのですが・・・もっと簡便な方法ありましたら教えてください。


634:132人目の素数さん
07/12/22 19:47:45
>>633
> a$loadings

Loadings:
Factor1 Factor2 Factor3
v1 0.944 0.182 0.267
v2 0.905 0.235 0.159
v3 0.236 0.210 0.946
v4 0.180 0.242 0.828
v5 0.242 0.881 0.286
v6 0.193 0.959 0.196

Factor1 Factor2 Factor3
SS loadings 1.893 1.886 1.797
Proportion Var 0.316 0.314 0.300
Cumulative Var 0.316 0.630 0.929
> library(Hmisc)
> html(a)

これで作成されたa.htmlをexcelで開くとどうなりますか?

>> 632
tapplyに気がついたので書き込もうと思ったら、すでに書かれていた。
書き込む前にリロードしてよかったよ。恥の上塗りをするところだった。
sepを"-"にしたところまで一緒だったorz

635:132人目の素数さん
07/12/22 20:26:59
>> 634
ありがとうございました。
html(a)ではエラーがでましたが,
html(a$loadings)はとおりました。
できたファイルを,開いてから,全選択コピー,ペーストでうまくいきました。


636:132人目の素数さん
07/12/23 12:53:57
633の自己レスです。

その後も調べまわりましたら、以下のurlにあった方法でも可能でした。
エクセルのテキストファイルウィザードを使えば、「スペース」&「連続した区切り文字は一文字として扱う」
をチェックしてOKです。
URLリンク(homepage2.nifty.com)

637:132人目の素数さん
07/12/23 23:23:55
入力データと計算時間の関係のデータがあるとき、任意のデータ数についての計算時間を推測するにはどうしたらできますか?

n time
10 0.000001
100 0.00001
1000 0.001
10000 0.1

擬似的にこんなデータがあったときにn=100000の計算時間を推定するんです

638:132人目の素数さん
07/12/24 03:35:06
>>637
いろいろ方法はあると思うが、たいていは
目的変数:time、説明変数:nの回帰(lm)でいいんじゃないかな。

ただ、計算時間なら二重ループが入っててn^2のオーダーなんて
よくあるから、モデルの選定は散布図見て適切なモデルを決めるか
プログラムの実装内容を多少知っている必要があるだろうか。

回帰について詳しくないので、フォローがあればどなたかよろしく。

639:132人目の素数さん
07/12/27 19:41:42
Perlのような連想配列がほしい。
URLリンク(www.taniguchitomoya.com)

慣れた人には当たり前なんだろうけど、自分のような初心者にはとても参考に
なりました。

ただ、これもほんの導入に過ぎない気がするので、今は↓を読んでいます。
URLリンク(cran.r-project.org)
なんだ、属性が付けられるのはリストに限らないじゃないか。


640:132人目の素数さん
07/12/28 01:55:15
みんなすごいな、クール!。勉強させて頂きます。

641:132人目の素数さん
07/12/28 13:09:05
連想配列って、名前付きベクトルじゃだめなの?
> m <- month.name
> names(m) <- LETTERS[1:12]
> m
          A           B           C           D           E
  "January"  "February"     "March"     "April"       "May"
          F           G           H           I           J
     "June"      "July"    "August" "September"   "October"
          K           L
 "November"  "December"
> m["I"]
          I
"September"



642:639
07/12/28 17:05:53
>>641
> 連想配列って、名前付きベクトルじゃだめなの?

ありがとうございます。それでいいと思います。すごくシンプルになりました
ね。

ところで、数値型のベクトルにうっかり文字列を追加してしまうと、型変換が
起こって、全体が文字列形のベクトルになってしまいます。
> d <- c()
> d["hoge"] = 1
> d["fuga"] = 2
> d["piyo"] = 'a'
> d
hoge fuga piyo
"1" "2" "a"

元に戻そうとして、as.integer() を実行すると名前が消えてしまいます。
> d <- d[1:2]
> d
hoge fuga
"1" "2"
> d <- as.integer(d)
> d
[1] 1 2

これはちょっと不便ですね。名前をバックアップしておくしかないのかな。
うーん。

643:132人目の素数さん
07/12/30 09:18:56
他のスレから紹介されてきました。
どうか、お願いします。
バリマックス回転したいんですが、エクセルしかなく、
Rをインストールしたんですがさっぱりわかりません。
数学のすの字も知らない仏文学科生ですので、プログラミング言語など
触ったことがありません。相応の入門サイトを見て手探りでやっている状態です。
あるRのサイトで
URLリンク(aoki2.si.gunma-u.ac.jp)
が紹介されていて、この関数を入れるとバリマックス回転ができるそうなんですが
ここの関数を使おうとしてもなぜか正常に表示されず、使用することができません。
どうか、何か、妙案を出していただけませんか?
お願いします。

644:132人目の素数さん
07/12/30 11:16:45
>>643
RSiteSearch('Varimax Rotation')

645:132人目の素数さん
08/01/03 13:41:08
.Fortran("dqrls", qr = x, n = n, p = p, y = y, ny = ny,
tol = as.double(tol), coefficients = mat.or.vec(p, ny),
residuals = y, effects = y, rank = integer(1), pivot = 1:p,
qraux = double(p), work = double(2 * p), PACKAGE = "base")

で呼び出される処理の実体は何処に格納されているのでしょうか?
また、そのソースファイルは参照する事はできますか?

646:132人目の素数さん
08/01/04 06:40:34
プログラミング童貞です。質問させてください

サイコロを降って三の倍数が出たら100円もらえる
連続で三の倍数が出た場合はもらえる金額が100円ずつ加算されていく
これを50回繰り返した場合の全ての結果とその確率を表示する

こういった作業をする場合Rではどういった式を入力すればよいのでしょうか
個々の式(?)はわかるのですがそれをどう組み合わせたらいいのかがさっぱりわかりません(特に繰り返し文)
もしくはよりシンプルな操作でこういった作業が出来るフリーソフトがあったら教えてください

647:132人目の素数さん
08/01/04 08:34:51
>>646
「全ての結果とその確率を表示する」の理解が正しいか分からないが
例えば以下の関数game()を定義して

game <- function(N=50)
{
dice <- sample(6,N,replace=TRUE) # サイコロをN回振る
nwin <- sum(dice%%3==0) # 3の倍数の目の個数
list(dice=dice, prob=nwin/N, money=nwin*100)
}

実行

> game()
$dice
[1] 1 2 4 6 4 2 6 1 6 3 6 5 4 1 6 4 3 3 5 3 4 2 2 3 6 6 6 3 6 3 5 6 6 4 6 2 4 1 4 1
[41] 2 6 3 1 3 6 6 4 2 5

$prob
[1] 0.48

$money
[1] 2400

繰り返し文などいらない。

648:132人目の素数さん
08/01/04 09:11:16
>>645
コンパイル済みのオブジェクトだから
例えばWindows版なら関数の実体はR.dllに入ってる。

ソースはRのソースを展開したときのsrc/appl/dqrls.fに入ってる。

649:132人目の素数さん
08/01/04 15:24:29
>>647
ありがとうございます。それだとサイコロをランダムに降ってから三の倍数を取り出してるんですよね

そうでなくて例えば二回目終了時だと
1/9(確率) 300円(結果)
4/9 100円
4/9 0円
こういう形で出力したいんです

650:132人目の素数さん
08/01/04 16:17:23
>>649
あ、ごめん肝心な「連続で~」のところ見落としてた。
しかも全然違うことやってたな。

ハズレはまた100円にリセットでいいんだよね。
で、50回終了時の獲得金額とその確率をすべて表示ね。
難しそうだけど、もし思いついたらやってみます。

651:132人目の素数さん
08/01/04 16:58:50
>>650
よろしくお願いします

先にあげた例以外でもいいので
・前の結果に影響される繰り返し
>>649のような形式の結果表示
を考えるヒントがあればぜひご教授を

652:132人目の素数さん
08/01/04 17:49:15
>>651
あんまり頭よくないみたいで、うまい策が思いつきません。

既約分数を使いたいなら表示は有理数型使うのが楽じゃないかな。
Rだとgmpパッケージがいいかも。

> library(gmp)
> as.bigq(2^50,3^50)
[1] "4194304/2674378408833789"

「繰り返し」ってサイの目6^50通り
もしくは勝ち負け2^50通りの総当たりするってこと?

653:132人目の素数さん
08/01/04 18:02:50
あ、(2/3)^50の結果間違ってるね。
約分できないのはずなのに約分されてるし。
3^50で桁あふれたか。

こっちが正しい累乗の使い方かなたぶん。

> prod(rep(as.bigq(2,3),50))
[1] "1125899906842624/717897987691852588770249"

654:132人目の素数さん
08/01/08 14:00:55
すみません、非常に下らない質問なのですが、

1. 行列の行を一行ずつコンソール出力する。
2. 行列の要素を一つずつコンソール出力する。

には、それぞれどうしたら良いでしょうか?
ネタではなく、本当にわからなくて困っています。

小さい行列なら、print(a)で出力されますが、30x30とかだと、省略されてし
まいます。

655:132人目の素数さん
08/01/08 16:03:43
>>654
いまいち、何に困っているのかが理解できませんが、30x30の行列を一行ずつ表示するには、
> a <- 1:900; dim(a) <- c(30,30)
> for (r in 1:30) {print(a[r,]}
これでOKです。1要素ずつなら、これを入れ子する。
でも、こんなことして何か意味があるの?

656:655
08/01/08 16:04:54
ごめん、)が抜けてた。

657:654
08/01/08 18:35:52
遅くなりました。

>>655
すみません、説明が足りなかったようです。それだと 30というサイズが決め
打ちですので、もっと汎用的な書き方を知りたかったのです。

> d <- matrix(1:900, 30, 30)
> for (r in 1:dim(d)[1]) {print(d[r,])}

これでいいのかしら。なにかもっと、インデックスを使うのではない、
他言語のfor-each文のような書き方があるのかと思っていたのですが。


658:132人目の素数さん
08/01/08 20:22:03
インデックスを使わずに行アクセスしたいってどういうことだろね。
用途を言うとアドバイスしやすいんじゃないかな。

用途がありそうといえばデバック作業かな。

659:654
08/01/08 21:34:20
行アクセスの用途自体は単に、データが正しくセットされたか目視で確認した
いだけです。

インデックスを使いたくない理由は、
# 通常のfor文
for (i = 0; i < list.length; i++) {
  a = list[i]
  ...

とやるより、
# for-each文
for (a in list) {
  ...

とやった方がバグが入り込みにくいからです。

R には for-each文しかないわけですが、>>657では、それを回避して無理やり
にfor文を作っているので、あんまり綺麗なコードじゃないなあと。


660:132人目の素数さん
08/01/08 22:20:24
>>659
for(i in seq(ncol(d))) のiで列、行アクセスってRだと普通じゃないかな。
apply(d, 1, print)みたいな操作がしたいわけでもないだろうし。

今思いついたのは、例えば

for(i in data.frame(d)) print(i)

とかね。冗談みたいなコードだけど。
printだけが目的なら添え字アクセスのがよっぽど素直じゃないかなあ。

661:132人目の素数さん
08/01/08 22:21:44
あ、上のは列アクセスになってたね。

for(i in data.frame(t(d))) print(i)

662:132人目の素数さん
08/01/08 22:53:40
> 行アクセスの用途自体は単に、データが正しくセットされたか目視で確認した
> いだけです。
だったら、単純に
> d
とするか
> page(d,"print")
でいいんじゃない?うちの環境では、page()でemacsが起動する


663:654
08/01/09 14:25:32
遅くなりました。

>>660->>661
ありがとうございます。確かに微妙ですが、とりあえずそのデータフレームで
行こうと思います。

>>662
>d だけだと、大きな行列が省略されてしまいます。
また、実は対話環境ではなく、rJavaを介してJavaからRをバッチ的に利用して
いて、page() は使うことができません。


664:sage
08/01/11 17:41:43
R縺ァone way repeated measures ANOVA 繧偵d繧区婿豕輔▲縺ヲ縺ゅj縺セ縺吶°
蜊頑律謗「縺励※謌先棡縺ェ縺励€€繧ゅ≧縺、縺九l縺セ縺励◆

665:132人目の素数さん
08/01/13 12:59:13
インストールの必要がない(レジストリを使わない)Rってありますか?



666:132人目の素数さん
08/01/13 16:18:09
knoppix

667:132人目の素数さん
08/01/13 18:13:50
繰り返しのない2元配置ANOVAを、Rで多重比較したいのですが、できなくて困ってます。

pairwise.t.testだと対応のないt検定を繰り返すから間違いですよね。

ボンフェローニ法でやろうとおもうのですが、対応のあるt検定を
普通に群間で繰り返して補正すればいいのか、それとも対応のある
t検定を行うときに全体の分散?をつかってくりかえすのか、分か
りません。田舎の本屋と図書館では限界があって助けてもらえませんか。



668:132人目の素数さん
08/01/14 00:16:13
>>667
ボンフェローニを使うならどちらでも構わない。
等分散性が仮定できるなら全体の分散で
いいんじゃない?


669:132人目の素数さん
08/01/14 16:24:35
>>668
ありがとうございます!ちょっと滅入ってたのでレスがとてもうれしいです。
2元配置でも3元配置でもpairwiseを使ってる人もいますね。おっしゃるとおり
ボンフェローニでやってました。
問題がひとつ解決してうれしいです♪

670:132人目の素数さん
08/01/16 13:18:07
MASSライブラリのldaを使っているんですけど質問
訳あって判別関数の直線式を求めたいのですが

URLリンク(www1.doshisha.ac.jp)
を参考にscallingと apply(Z$means%*%Z$scaling,2,mean) から式を変形して傾きと切片を求めて
判別直線の式を求めたのですが
その直線の式がどうも実際に群分けをしている直線と切片が違うように思われます(傾きはおそらくあっていそうです)
理由がわかるかたお教えください

671:668
08/01/16 13:21:01
>>669
よかったな。お前が嬉しければ俺も嬉しいよ。
けどな、これで極めたと思わないでくれよな。
この道はまだまだ長く険しい。お前はまだいりぐちにたっただけなのだから。
さあ、俺たちと、道の先にあるものを掴みにいこうZee


672:132人目の素数さん
08/01/16 17:44:03
日本語を含むグラフを作成したんですが、R上ではちゃんと表示されてるのに、psファイルで保存したら日本語部分が
文字化けしてしまいます。
これはRのフォント設定に原因があるのでしょうか?

673:132人目の素数さん
08/01/18 19:44:25
>>672
> ps.options()$family
の値を見て、考える。
> ?postscriptFonts
はすでに読んだ?

674:132人目の素数さん
08/01/25 19:21:11
TukeyHSD() って、群の標本数が違う場合には、Tukey-Kramer で計算しているのですか?
ヘルプを見ても良く分からなかったので、よろしくお願いします。

675:132人目の素数さん
08/01/25 19:33:08
>>674
ソースを見ろ
> TukeyHSD
function (x, which, ordered = FALSE, conf.level = 0.95, ...)
UseMethod("TukeyHSD")
<environment: namespace:stats>
> methods(TukeyHSD)
[1] TukeyHSD.aov
> TukeyHSD.aov
function (x, which = seq_along(tabs), ordered = FALSE, conf.level = 0.95,
...)
{
mm <- model.tables(x, "means")
if (is.null(mm$n))
stop("no factors in the fitted model")
以下略

676:132人目の素数さん
08/01/25 20:38:01
>>675
methods()ってのがあるんですね。ありがとうございます。

677:132人目の素数さん
08/01/28 23:56:35
ソースみてもわからないんですが・・・
で、Tukey-Kramer なんですか???

678:132人目の素数さん
08/01/29 19:22:57
時系列パッケージtimsacについて質問です。
これに入っている関数mulspe()でクロススペクトルが描画できたのですが
図からピークを値として出力するにはどうしたらいいのでしょうか
helpを読んでみてもいまいちよく解らず、identify()も使えなかったので
もしかしてデータから自分で計算するより無いのでしょうか

679:132人目の素数さん
08/01/30 15:38:31
医学統計の質問です
2群の経時データの有意差検定をすることになってしまいました・・・
具体的には毎日薬を飲んで,その効果を測定してあるデータです.
多変量分散分析モデルを考えていたのですが,上司からAUCでやるべしとの指示?
AUCってどんなものなのでしょうか?
どこかに,Rのプログラムなどがあれば教えていただけたら幸いです.

680:132人目の素数さん
08/01/30 16:50:43
>>679
>上司からAUCでやるべしとの指示? AUCってどんなものなのでしょうか?
なぜ直接上司に聞かないの? 統計手法とは別の意味のAUCかも知れないよw。


681:132人目の素数さん
08/01/30 23:48:45
>>680
同意。
そもそもAUCって統計的方法の名前そのものじゃないし。

682:132人目の素数さん
08/01/31 01:10:52
正規分布の歪度、尖度の検定について教えてください。
R ver2.2.0を用いています。
上記の検定法の関数 dagoTest(x)  は library(fBASIC) にあるとwebで見たのですが
パッケージを見てもfBASICがありませんでした。パッケージの更新を行なったのですが
fbasicはありませんでした。現在dagotestを使おうと思うと、どのパッケージを使えばよいのでしょうか
よろしくお願いします

683:132人目の素数さん
08/01/31 01:29:50
>>682
fBASICはココ
URLリンク(cran.r-project.org)
ただR-2.4.0以上じゃないと正常に動かないかも

URLリンク(www.r-project.org)
で"dagotest"を検索しただけだが。

684:132人目の素数さん
08/01/31 09:11:40
679です
>>680,681
レスありがとうございます

上司も良く分からない様子だったので,ここで聞いた次第です・・
まずは普通にやってみます

685:132人目の素数さん
08/01/31 12:30:33
678です。mulspe()のソースのoutputを書き換えることで自己解決しました。
横からですが、>>675さんのレスがヒントになりました。ありがとうございます。

686:132人目の素数さん
08/01/31 17:09:36
自分に良くわからない指示を丸投げする上司というのもすごいな
オレ涙がでてきたよ。

687:132人目の素数さん
08/01/31 18:36:55
>>684じゃないけど、上司って基本そういうものじゃないの?
要求が馬鹿高い割に知識は乏しくて、でも有事の責任を取るためにそこにいるって言う

あれ、もしかして俺が働いている場所ってブラックですか?

688:132人目の素数さん
08/01/31 20:34:37
部下の能力を把握して適切に指示出せないとダメでしょう。
でなきゃココは誰に聞いてねと権限の委譲wをしないとな。

689:675
08/02/01 00:05:13
>>685
役に立って何より。
>>679
ヒントをあげるね。Rはインストール済みだよね?
> RSiteSearch("measures repeated")
医学系だけど、恥ずかしながらAUC(血中濃度曲線下面積)を
知らなかった勉強になったよ。

690:132人目の素数さん
08/02/01 00:42:11
>>689
医学系と言っても薬学寄りでないと知らなくても不思議じゃないんじゃない。
そもそも>>679のデータは上司がその程度なら血中濃度のデータかどうかも怪しいけどな。

691:132人目の素数さん
08/02/01 21:47:40
C言語などからRの関数を呼び出すことはできますか?


692:132人目の素数さん
08/02/02 01:34:18
>>691
はい。

693:132人目の素数さん
08/02/02 01:54:43
ExcelなどからRの関数を呼び出すことはできますか?

694:132人目の素数さん
08/02/02 06:19:55
Oui
URLリンク(www.okada.jp.org)

695:132人目の素数さん
08/02/02 19:06:32
>>692
それってR本体を呼び出してコマンドとして使うって意味?
(直接関数を呼べるなら便利なんだが。)

696:132人目の素数さん
08/02/03 00:22:31
上司に恵まれない679です。
いつも優柔不断で指示が二転三転します、適切な指示をしてくれる上司にめぐりあいたいものです。

皆様の期待(?)通り、血中濃度のデータではありません。
>>689さんのヒントをもとに、始めます。

どうも、ありがとうございました。








697:132人目の素数さん
08/02/03 02:52:20
10年前の俺様へ

学校じゃないなら適切な指示しかしない上司なんていないって。
適当にやらせて結果見て指示し直す、なんて普通。

不適切な指示に対して提案できて方法を示せるようになって半人前。
それが必要な場面で上司を使えるようになって一人前だ。

がんばれ。

698:132人目の素数さん
08/02/06 18:34:17
主成分分析に使うfactanal関数がどういう原理で動いているか知りたいのですが、ソースは見れますか?

699:679=696
08/02/06 18:54:37
>>697さん

お言葉が身にします。
ご指摘のとおり、まだまだ半人前の手前という感じです。

もっと目線を上にして、がんばります!
ありがとうございました。

700:132人目の素数さん
08/02/06 19:34:41
help("factanal")では?

701:132人目の素数さん
08/02/06 23:14:51
というか主成分分析には使わないんだが…

702:132人目の素数さん
08/02/06 23:16:49
>>698
factanalは珍しくRだけで書かれている。CやFORTRANで書かれたのを呼び出している
訳ではないのに、なぜ質問になるのか、よく分からない。
> factanal
function (x, factors, data = NULL, covmat = NULL, n.obs = NA,
    subset, na.action, start = NULL, scores = c("none", "regression",
        "Bartlett"), rotation = "varimax", control = NULL, ...)
{
    sortLoadings <- function(Lambda) {
        cn <- colnames(Lambda)
        Phi <- attr(Lambda, "covariance")
        ssq <- apply(Lambda, 2, function(x) -sum(x^2))
        Lambda <- Lambda[, order(ssq), drop = FALSE]
        colnames(Lambda) <- cn
        neg <- colSums(Lambda) < 0
        Lambda[, neg] <- -Lambda[, neg]
 [以下略]



703:702
08/02/06 23:20:42
>>701
おぉ、ほんとだ。
> help.search("PCA")


704:132人目の素数さん
08/02/07 00:41:43
>>702
おおおお。そんな方法でソースが見られるとわ。感激れす。

705:132人目の素数さん
08/02/07 19:24:57
>>704
Rの仕様を理解していれば、ごく当たり前のことだよ。
matrixクラスやdata.frameクラスのRオブジェクトの名前だけを
書いてenterを押下すれば、その内容が表示されるだろ。function
クラスのRオブジェクトも同じ。そのRオブジェクトの内容が出力
される。


706:704
08/02/08 09:51:02
>>705
うっせーばーーーか!

707:132人目の素数さん
08/02/08 20:02:52
プログラミング言語としてRを学びたいのですが、おすすめの本ありますか?
オブジェクトの継承とか、そういった類いの解説があるような…

708:132人目の素数さん
08/02/09 09:28:42
リゲス『Rの基礎とプログラミング技法』
にはそういった話題も載っていたような気がします。

709:132人目の素数さん
08/02/09 18:07:53
幅広さなら「S-PLUS による統計解析」じゃねーか?
MASSパッケージにソース入ってるし。
オブジェクトは入ってたかシラネ

710:132人目の素数さん
08/02/09 18:46:21
>>708, 709
ありがとうございます。「Rの基礎とプログラミング技法」が良さそうですね。
言語仕様を理解できそうです。統計手法とか載っていなくても良いので、
他にありましたらよろしくお願いします。

711:132人目の素数さん
08/02/09 22:31:35
時系列解析で acf や ccf を使用しているのですが,
相関の最大値(縦軸)とそのときのラグ(横軸)を
出力する方法はありませんか?

712:711
08/02/10 15:12:19
自己解決しました.

713:132人目の素数さん
08/02/11 13:28:15
「目的変数は質的変数でなければだめです」
ってどういう意味ですか。

714:132人目の素数さん
08/02/11 18:14:07
as.factor

715:132人目の素数さん
08/02/11 23:08:16
↑解決しました。


それから、多項ロジットモデルを選択すると

エラー: 'x' に無限値か欠測値があります

というメッセージが出るのですが、どういうことですか。

716:132人目の素数さん
08/02/11 23:10:16
書いてある通りだろw
データセットが対応していない。

717:132人目の素数さん
08/02/11 23:21:02
レポートが書けない(泣)
最終講義を先生が休講にしたから、わからない><
> また、先週行う筈だった授業の簡単な要旨を
> URLリンク(bayes.c.u-tokyo.ac.jp)
> に記載しておりますので、参考にしてください。

諦めて普通の線形回帰にしようかな・・・。

718:132人目の素数さん
08/02/12 07:31:24
>>717
東大だろ。頑張れよw

719:132人目の素数さん
08/02/12 08:09:47
>>717
原則はさらっと書いてあるけど、あくまで講義のメモだから、それだけでは分かりにくいのは仕方ない。
グラフ付きの例があると一番いいんだけどな。
つまり、ダミー変数がなければ相関が現れないけど、
ダミー変数を入れて、グループごとにグラフを書いたら、同じような傾きの並行したグラフがグループの数だけ現れる、というような。

ウェブを漁ったけど、分かりやすく説明したものがなかなか見つからなかった。

720:132人目の素数さん
08/02/12 08:21:16
ロジスティックモデルやロジットモデルがわからないので、
ダミー変数を使った線形回帰にします。

721:132人目の素数さん
08/02/12 10:15:11
scatterplot3d 関数で出力した図において、identify 関数のような関数を用いて
点を同定することは出来ないだろうか?

722:132人目の素数さん
08/02/12 11:29:05
>>721
三角ダイヤグラムならまだしも、平面に投影した状態で、空間の点を指定できる原理を思いつける?

723:132人目の素数さん
08/02/12 12:12:05
すみません。わからないです。
そうか…。3次元のプロット点をクリックして番号を出力する方法はないか…

724:132人目の素数さん
08/02/12 13:08:15
>>723
プロット点はいくつある?少なければ、points()でID番号そのものをプロットすれば
判別が着くと思うけど。

725:132人目の素数さん
08/02/12 18:00:30
>>724 プロット点は多いです。丁度100個です。
points 関数は以下の使い道以外にあるということでしょうか?
※赤色の + がプロットされる

plot(-4:4, -4:4, type = "n")
points(rnorm(200), rnorm(200), pch="+", col = "red")

726:132人目の素数さん
08/02/12 19:51:07
>>725
申し訳ない。points()のpchにIDベクトルを与えると、最初の1文字を使って、後は無視されるようだ。
> plot(-4:4, -4:4, type = "n")
> points(rnorm(200), rnorm(200), pch=as.character(1:200), col = "red")
素直に、text()を使った方がよさげ。
> plot(-4:4, -4:4, type = "n") #実行後、グラフィック画面をマウスで拡大する
> text(rnorm(200), rnorm(200), 1:200, col = "red", cex=.4)
pdfに出せば、Zoomしながら、目的のIDが読めると思うけど。
適当にcexの値を調整して下さい。

727:726
08/02/12 20:33:10
で、scatterplot3dだと、ちょっとだけ工夫がいるけど、text()でOKみたい。
> dat <- matrix(rnorm(300), ncol=3)
> library(scatterplot3d)
> dat.3d <- scatterplot3d(dat,pch="")
> dat.2d <- dat.3d$xyz.convert(dat)
> text(dat.2d$x,dat.2d$y,1:100)
cexで重ならないように大きさを調整して、PDFに出せばOKだと思う。
っていうか、?scatterplot3dを読んだら即解決だと思うんだけど。

728:132人目の素数さん
08/02/12 21:12:34
>>726-727 レスありがとうございます!
やってみますので、出来たら報告します

729:132人目の素数さん
08/02/13 11:42:57
>>727 考えていた通りの図を出力出来ました。※ NR38 は100行3列のデータフレーム
ありがとうございました。ヘルプは読んでみましたが、なかなか難しかったです。精進します。

> scatterplot3d(NR38)
URLリンク(www.uploda.net)

> NR38.3d <- scatterplot3d(NR38, pch="")
> NR38.2d <- NR38.3d$xyz.convert(NR38)
> text(NR38.2d$x,NR38.2d$y,1:100)
URLリンク(www.uploda.net)

730:726=727
08/02/13 13:52:49
おう!お前、がんばれよな!


731:132人目の素数さん
08/02/13 14:18:27
>>730
何を頑張るんだい?

732:729
08/02/13 15:02:26
ニコニコ動画のランキングの分析です。表の通り、
マイリスト登録数、再生数、コメント数の3つのデータから動画の傾向を調べています。

733:731
08/02/13 17:27:29
>>730
今気がついた。オレに当てたレスじゃなくて、オレになりすましていたのね。
初めてオレになりすましているやつに遭遇した。なんかメリットあるの?

ところで、3dのプロットだけど、rglにはtext3d()というのも用意されている。
こっちでグラフィックを書くのもありだよ。scatterplot3dよりもいろいろで
きることが多そうだ。

734:132人目の素数さん
08/02/13 18:22:37
↓みたいなやつですね。使ってみます

> open3d()
> text3d(rnorm(10)*100,rnorm(10)*100,rnorm(10)*100,text=1:10,adj = 0.5,
+ color="red")

735:132人目の素数さん
08/02/15 21:46:58
合成関数の微分について、教えて下さい。たとえば、
f <- expression( a * x^2 );
として、この f をつかった合成関数 g(x) を微分したいのですが、
g <- expression( b * x * f );
として、D(g, "x") とやっても、f が定数として計算されてしまいます。
合成関数はどのように記述すれば良いのでしょうか?よろしくお願いします。

736:132人目の素数さん
08/02/15 23:46:45
Rと並んで数少ないCUI方式のフリーウェアLisp-Statは、Rに比べて
機能面では遜色はないのでしょうか?
Lisp-Statによる統計解析入門
URLリンク(cluster.f7.ems.okayama-u.ac.jp)

737:132人目の素数さん
08/02/16 00:08:38
>>736
最新の本が1999年。
察しろ。

738:132人目の素数さん
08/02/16 03:09:35
>>736
数値計算をLispでやる意味って何だろ?


739:132人目の素数さん
08/02/18 01:47:34
下記で示される確立モデルの混合分布
f1(x)=Af2(x)+Bf3(X)
のうちf1(x)、f2(x)、f3(x)は既知とする。

このとき、AとBを計算したいのですが、
良いパッケージを教えてください。f2(x)とf3(x)は正規分布ではなく
任意な確立モデルの関数という条件でお願いします。

740:132人目の素数さん
08/02/18 05:58:55
確立モデル… orz

741:739
08/02/18 06:48:26
>>740
失礼。確率ね。

742:132人目の素数さん
08/02/19 00:15:39
>>739
意味がいまいちわかんないけど、数学知識ゼロの俺が答えてみる。
f1(x), f2(x),f3(x)が既知なら、x=x1, x=x2を代入して、
f1(x1)=Af2(x1)+Bf3(x1)
f1(x2)=Af2(x2)+Bf3(x2)
この2連立方程式を解けばAとBが求まると思うんだけど。


743:739
08/02/19 04:32:28
>>742
実は、f1~3(x)は元データを参考に最尤法で出した関数で、
・点でやった場合に元データに対して最大の精度がでるのかどうか
が個人的に分からない。
勝手に最適化してくれるならその方が良いかなと思ってた。
元関数の検定をしろと言われそうな話だが……。

あと確率モデル関数を重ねた場合の挙動が分からない。
積分で考えて多分A+B=1になりそうだ、とは思うけど。

情報後出しの上に明らかに色々勉強不足だね。吊ってくる。

744:132人目の素数さん
08/02/19 22:44:16
Rで繰り返しのない二元配置の多重比較をpairwise.t.test(ボンフェローニ)で行いました。
ついでに4STEPエクセル統計という本のアドインソフトで、同様にボンフェローニで
行いました。

すると、結果が微妙にちがいます。優位さがある組み合わせは同じですが
Rで<0.01なのにエクセルでは<0.05と出たりするものがあります。

そもそもpairwise.t.testは一元配置につかうもので、2元配置に使ったこと自体
があやまってるのでしょうか。

745:132人目の素数さん
08/02/19 23:18:22
>>744
pairwise.t.testのソース見たら単に一元配置の処理しかしてないことは分かるだろ。
エクセルのソフトは持ってないから知らないけど二元配置でちゃんと解析してるなら
結果が違って当たり前だな。

746:132人目の素数さん
08/02/20 00:02:36
>>745
ありがとうございます!
…ということはこれは間違ってるんですね
URLリンク(cse.niaes.affrc.go.jp)

Rで繰り返しのない二元配置の多重比較をする関数はないんでしょうか。
文献あさっても繰り返しなしの二元配置の多重比較は載ってないし…

747:132人目の素数さん
08/02/20 01:14:01
>>746
間違ってますね。
多重比較の部分は各要因ごとにしか書いてないですからすべて一要因の多重比較ですね。


748:132人目の素数さん
08/02/20 20:59:15
>>747
ありがとうございます。
繰り返しのない2元配置をRでどう多重比較したらよいのでしょう…

統計、Rなど独学で来たんですが、資料もなく
私は家政系なので専門じゃないです
もうこれ以上勉強しても分かりません

749:132人目の素数さん
08/02/20 22:40:37
>>748
まず、RjpWikiで検索して
URLリンク(www.okada.jp.org)

既出でなければ質問すればいいとおもいます。
URLリンク(www.okada.jp.org)

ただしネチケットには気をつけましょう。

750:132人目の素数さん
08/02/20 22:53:22
>>749
ありがとうございます。
一度ここでも検索、質問させていただいたんですけど、分からなかったんです。
変身もいただけなかったので、ネチケットが悪かったのかもしれません(涙)
もう一度聞いてみます…

751:132人目の素数さん
08/02/20 23:12:06
一般のネチケットというより、専門の人が主なのでロジカルに

何を質問しているのか?
処理したいデータは具体的にどういうものか(抜粋で例示など)
どこは自分でわかっていて、どこはわからないか

を明確にして質問した方がイイかも

752:132人目の素数さん
08/02/21 22:30:50
1行行列(1,2,3,4)と1列行列(1,2,3,4)を
かけると30になるはずだが、エラーが出る。
x <- rep(1:4)
> x
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
> x*t(x)
以下にエラー x * t(x) : 適切な配列ではありません

どうやったら正確な結果が出せるか教えてください。

753:752
08/02/21 22:32:23
式は
t(x)*x
の間違いです。どちらもエラーなので大勢に影響は無いけれど。

754:132人目の素数さん
08/02/22 00:18:41
>>752-753
できますよ?

> x<-rep(1:4)
> x
[1] 1 2 3 4
> x*t(x)
[,1] [,2] [,3] [,4]
[1,] 1 4 9 16

既に回転済みのxをまた回してませんか?

755:132人目の素数さん
08/02/22 02:59:41
>>752
やりたいのはこういうことじゃないかな。

> x <- t(1:4)
> x
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
> t(x)
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
> x %*% t(x)
[,1]
[1,] 30

%*% で内積ね。
最初に t() してるのは単に x <- 1:4 だと行も列も設定されないからで、
特に深い意味は無い。


756:132人目の素数さん
08/02/23 14:57:54
Rにはローカル変数はありますか?
名前空間を汚染したくない場合、関数を作るのが普通なのでしょうか?

757:132人目の素数さん
08/02/23 15:11:01
以下にエラー `[<-.data.frame`(`*tmp*`, row, col + 1, value = 0.0288357995999999) :
新しい列は既存の列に穴を開けるかも知れません

というエラーが出るのですが、既存の行列の列を増やすためには
何か作法が必要なのでしょうか?


758:132人目の素数さん
08/02/23 15:28:09
データセット? cbindを使えばいい?
すみません天啓が降りてきたので質問を取り下げます。

759:132人目の素数さん
08/02/23 17:05:31
0,0
0,1
0,2
 :
0,10
1,0
1,1
1,2
 :
1,10
2,0
 :
 :
10,10

こういう総当たり用の行列を作れる関数を教えてください。
お願いします。

760:132人目の素数さん
08/02/23 17:31:55
>>759
URLリンク(www.okada.jp.org)

761:132人目の素数さん
08/02/23 17:41:13
>>760
ありがとうございます。読んでみます

762:132人目の素数さん
08/02/24 11:03:47
同じ行列Xを n 回かけた行列の積

X %*% X %*% X %*% X %*% ....

を簡単に求める事ができる関数ってありますか?

763:132人目の素数さん
08/02/24 13:55:35
>>762
ガンバレw

764:132人目の素数さん
08/02/24 18:19:02
自作自作

765:132人目の素数さん
08/02/25 17:05:59
>>762
eval(parse(text=...)))とpaste()のcollapseオプションを使うと、例えば
下記のようにできるよ。
> n <- 5
> X <- matrix(1:4,ncol=2)
> eval(parse(text=paste(paste(rep("X %*% ",n-1),collapse=''),"X")))
[,1] [,2]
[1,] 1069 2337
[2,] 1558 3406



766:132人目の素数さん
08/02/25 19:47:23
効率のよい求め方なら、対角化するか
(X%*%X)%*%(X%*%X)みたいな分業方式でやるか。

767:132人目の素数さん
08/02/25 23:52:04
Rマスターなんだけど
なにか質問ある?

768:132人目の素数さん
08/02/26 02:19:09
ありません

769:132人目の素数さん
08/02/26 20:23:12
>>754-755
レスサンクス。内積は*じゃだめなのね。
勉強してきます。

770:132人目の素数さん
08/02/27 06:36:51
%*%は内積ていうか行列積だね。*は要素毎の積。
sum(x*x)でも結果は内積とるのと同じだけど。

771:132人目の素数さん
08/02/28 01:54:55
>>750
2元配置の多重比較は分からんな。
繰り返しないならrep.aovでできるぞ。
ぐぐってみるべし。

772:132人目の素数さん
08/02/28 06:04:45
混合分布の元関数を推定するのに良い方法ある?
一般的にはこうやってやるみたい。
URLリンク(omt.med.gunma-u.ac.jp)

mclustってパッケージでできるみたいだけど、
式が行列を沢山含んでcurveで表示できないし、実際に代入してみても
元のデータと全然数値が合わない。

773:132人目の素数さん
08/03/17 16:18:58
カイ二乗の%点を求めたいのですが(n=∞)
Rで、2.5及び97.5%点を求める場合、どのようにすればよいでしょうか。
(関数や無限大の表示入力方法等)

774:132人目の素数さん
08/03/17 20:24:59
>>773
そのnって自由度か?そうなら笑い話ということか。

775:132人目の素数さん
08/03/21 15:20:10
maxima使ってる人っていますか?

776:132人目の素数さん
08/03/26 11:35:41
統計には使っていないな。

777:132人目の素数さん
08/03/29 19:47:36
微分関数Dの威力に驚いています。
微分できない関数などもあるのでしょうか?
全面的に結果を信頼して大丈夫ですか?

778:132人目の素数さん
08/03/30 02:04:23
>>777
初等関数に対する微分の公式を与えておけばどんな関数も分解して微分するだけなので
問題ないのでは?積分はそんなに簡単にはいかないけど。

779:132人目の素数さん
08/03/31 17:31:28
>>501
qchisqでいいんじゃね?

780:132人目の素数さん
08/03/31 18:10:46
以前にRからmaximaを呼ぶ方法がRのMLで話題になっていたそうですが
結局実現できたのでしょうか?

781:132人目の素数さん
08/04/07 02:38:12
CからRの関数を呼んだりできないんですか?
VCでGUI作ってそこで色々処理させてる途中でRの関数を呼びたいんですけど。

782:132人目の素数さん
08/04/07 07:06:19
>>781
あのね、上のテンプレとか確認しましょうよ。
URLリンク(www.okada.jp.org)

783:132人目の素数さん
08/04/07 12:18:22
>>782
おお、できるんですか。
ちょっと使ってみます。
とりあえずできる、できないって一言レスを期待してテンプレも見ずに書き込んじゃいました。。。
丁寧にどうも。

784:132人目の素数さん
08/04/07 13:54:57
>>782
そのページはRからの他言語利用で>>781がほしいのはその逆のようですが…。
Rをコマンドとして呼び出すことはできるのでそうするんでしょうな。

785:132人目の素数さん
08/04/09 13:29:58
すみませんが、質問です。
R の遅延評価は、どのように活用すれば良いのでしょうか?

Haskellをちょっとだけかじったので、ああいう感じに使ってみようとしたので
すが、組み込みの遅延リストなどは無いようで(巨大なベクターを作成すると、
メモリ上に全部領域確保され、初期化されてしまう)、どうも勝手がわかりま
せん。

x = 0
for (i in 1:1000000) x <- x + i
print(x)

こういう計算でも、必要になった時点でデータが作られるわけではないようで、
1:1000000 が全部領域確保されてしまいます。

どういう使い方が想定されているのか、お教えいただけないでしょうか?


786:785
08/04/09 16:44:28
なんか要領を得ない質問ですね。すみません。まとめます。

「R が遅延評価であることの、うまい使い方を教えていただけませんか?」

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



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