COLOR(green){SIZE(20){初心者のための R および RjpWiki に関する質問コーナー}}~

COLOR(blue){注意}:新規記事用の入力欄は以下の目次の直後にあります。各記事への追加コメントの入力欄は、各記事の後にあります。質問が長くなる場合は、まず出だしだけ投稿し、次に編集ボタンでそれを修正、追加するのが便利です。>>[[簡単な投稿法]]

もし新規に質問をされる場合は、効率的にコメントを得るためにも、善意のコメント者の時間を無駄にしないためにも、以下に特にご注意下さい。[[R のメイリングリストへの投稿記事のガイド]] も参考になります。
- 広い意味で R に関係する話題に限定 
- 学校の宿題は自分で考えるべきです
- 具体的な状況がわかる様に背景説明をけちらない。特に使用環境を添えるのは常識です。COLOR(magenta){sessionInfo() とすればそうした情報が簡単にえられます。}
- [[google などの検索エンジン:http://www.google.co.jp]] や [[CRAN の検索エンジン:http://finzi.psych.upenn.edu/search.html]]、 [[マニュアル:http://buran.u-gakugei.ac.jp/~mori/LEARN/R/]] を調べた上での質問かどうかを書き添えれば、空振りコメントが減るでしょう。せっかくのコメントに「実はそれはすでに調べたことなのですが」と後から言われたときの回答者の不快感を想像すべきです。
- 自分には馴染みでも、他の人には馴染みの無い手法・概念もあります。日本語は得てし てわかりにくい(英語名をそえると案外わかるものです)ものです。
- もし問題が解決した(結局解決しない場合を含め)場合はその旨報告していただくとコメント者や他の人に参考になります。また後で関連情報をこのWikiに要約記事としてご投稿いただくと今後の参考になります。
- 後で他の人が参照する際の便宜のため、簡潔で内容が推察できるようなタイトルをつけて下さい~
- 回答者は神通力を持ってはいません。COLOR(magenta){「これこれしたが、うまく動きません」といった質問}には、あなたの試みたことを回答者が再現できるような、データ、コード、エラー出力(そして、R のバージョン、使用 OS、使用非標準パッケージ名)を添えることをお勧めします。あまりに長くなる場合は適宜編集して下さい。~
~
----
COLOR(red){過去の記事のアーカイブ} 。アーカイブ中の記事への追加コメントは自由です。ただしあまり古い記事の場合は、このページに新規に項目を立てられた方が良いかも知れません。~
-[[初級Q&A アーカイブ(8)]] (元記事が 2007-07-02 より 2007-12-31 まで)~
-[[初級Q&A アーカイブ(7)]] (元記事が 2007-02-01 より 2007-06-27 まで)~
-[[初級Q&A アーカイブ(6)]] (元記事が 2006-08-24 より 2007-01-31 まで)~
-[[初級Q&A アーカイブ(5)]] (元記事が 2005-03-13 より 2006-06-26 まで)~
-[[初級Q&A アーカイブ(4)]] (元記事が 2005-11-09 より 2006-01-25 まで)~
-[[初級Q&A アーカイブ(3)]] (元記事が 2005-05-02 より 2005-11-07 まで)~
-[[初級Q&A アーカイブ(2)]] (元記事が 2004-12-13 より 2005-04-26 まで)~
-[[初級Q&A アーカイブ(1)]] (元記事が 2004-08-03 より 2004-11-30 まで)~
----
#contents
----
COLOR(red){注意}:投稿失敗した記事をページ先頭の「新規|編集|差分|添付」の「編集」から消すときは、#article と書いた行まで消さないように注意しましょう。新規の記事投稿ができなくなります。もし、編集方法がわからなければ [[簡単な投稿法]] を見てください。具体的な状況がわかる様に背景説明をけちらない。特に使用環境を添えるのは常識です。COLOR(magenta){sessionInfo() とすればそうした情報が簡単にえられます。}
また命令
 RSiteSearch("キーワード")  例:RSiteSearch("least abs")
を実行すれば、R 関係の文献・MLから関連記事を検索し表示してくれますのでお試しを。

&color(RED){SIZE(14){スパム書き込みに対処するため、書き込み系の処理に対してパスワードを設けました。書き込もうとすると投稿ボタンを押したあとにユーザ名とパスワードを求められます。ユーザ名に Rでの round(qt(0.2,df=8),3) の実行結果をいれてください。パスワードは空のままでOkです。}SIZE(10){Rを起動して、文字がたくさんでているウィンドウの">"のあとに, round(...,3) を貼り付ければ結果が[1] xxxxx とでてきます。このxxxxxの部分がユーザ名です。もし、どうしてもうまくいかなかったら...何度か「キャンセル」ボタンを押してみましょう。}};~
COLOR(red){新規に}COLOR(orange){質問を}COLOR(green){する前に、}COLOR(blue){頁トップの}COLOR(purple){注意を}COLOR(red){先ず}COLOR(orange){よく}COLOR(green){読んで}COLOR(blue){ください。}

#article
**ライブラリの使い方(目標はRのフィンメトリックス並実装) [#sfab99b0]
>[[ポンタ]] (2008-01-25 (金) 15:40:56)~
~
Rをフィンメトリックス並に実装する方法を知りたく思いメールいたしました。なお、現在rcommanderなどは実装しています。~
~
色々なhpを見て東大のライブラリからrを使って全てのパッケージをインストールすることまではやってみたのですがまず単位根検定の出し方が良く分かりません。(東大のライブラリは全部ダウンロードしました)~
~
できれば多変量ARモデルなども動かしてみたいのですがどのように探し、どのようにセットすればよいのでしょうか?~
~
あと、追加質問ですが、そもそも、ダウンロードしたパッケージは何かしないと使えないものでしょうか・・・~
(全くの初心者ですがどなたかご教授いただければ幸いです。)~

//

#comment

**多変量GARCH [#yce29738]
>[[たく]] (2008-01-16 (水) 18:41:23)~
~
例えば現物と先物のボラティリティを推定したい場合、2変量GARCHモデルを用いるのが一般的と思いますが、~
~
Rには多変量GARCHモデルの関数はないのでしょうか?~
~
検索して見つかった、tseriesパッケージやfSeriesパッケージ内のGARCH関連の関数は、みな1変量用だった気がします。~

//
- mgarch (multivariate GARCH model) パッケージ。R site search でキーワード "GARCH multivariate" で検索。 --  &new{2008-01-16 (水) 19:50:27};
- ありがとうございます。こんなパッケージもあったのですね。調べが足りませんでした・・・ -- [[たく]] &new{2008-01-16 (水) 23:15:28};
- mgarchBEKKというパッケージですね。多変量GARCHモデルの一つであるBEKKモデルが推計できます。ただし、CRANには登録されておらず、最近では作者によるメインテナンスもなされていないので、最新バージョンのRには対応していなかったと思います(このあたりのやりとりは、昨年末にR-SIG-FinanceかR-Helpのメーリングリストで交わされていました。有志による修正もなされていたように記憶しています)。BEKK以外のモデル(例えばDCC)を推計するには、何某かのコードをハックするか、プログラムを自作するしかないでしょう。-- [[ジェットラグ]] &new{2008-01-18 (金) 09:20:31};

#comment

**複数枚のグラフを、一つのファイルにまとめて保存するには? [#t377dfc4]
>[[Yoshihara]] (2008-01-16 (水) 03:12:00)~
~
前例がある内容でしたら申し訳ございません。~
~
forループの中で条件を変化させて複数枚のグラフを出力し、それら全てを一つのファイルにまとめて保存しようと思っております。~
~
例えば以下のようなプログラムで5種類のグラフを作成しても、"graph.pdf"に保存されるのはi=5におけるグラフのみです。
 for(i in 1:5){
   name<-paste("No.",i,".pdf",sep="")
   curve(x+i,main=name)
   dev.copy(pdf,file="graph.pdf")                #ファイルの保存
   dev.off()
 }
現在は dev.copy(pdf,file=name)として毎回名前を変え保存しておりますが、~
グラフ数が増えると処理が面倒になるため、一つのファイル名に、ページを変えることでまとめて保存したいと考えています。~
~
自分なりに調べてみたのですが、行き詰ってしまいました。~
~
どなたかご教授をお願い致します。~

//
- 次のようなやり方ではいかがですか。 --  &new{2008-01-16 (水) 08:01:08};
 > pdf(file="myplots.pdf", onefile=TRUE)
 > plot(1:10, rnorm(10))
 > plot(1:10, runif(10))
 > dev.off()
- onefileはデフォルトでTRUEです --  &new{2008-01-16 (水) 09:01:21};
 pdf("output.pdf")
 for(i in 1:5) {
 	name<-paste("No.",i,".pdf",sep="")
 	curve(x+i,main=name)
 }
 dev.off()
- ご教授ありがとうございます。pdf(),dev.off()の構造を、まだまだ理解しきれていなかったようです。 ~
望んでいた出力結果が得られ、大変助かりました。 -- [[Yoshihara]] &new{2008-01-16 (水) 09:14:32};

#comment

**RMySQLパッケージの読み込みエラー [#zcc7e8e7]
>[[だあ]] (2008-01-15 (火) 14:41:37)~
~
RMySQLパッケージをダウンロードした後に読み込もうとすると、~
「Rgui:Rgui.exe - エントリーポイントが見つかりません:プロシージャエントリポイントload_defaultsがダイナミックリンクライブラリLIBMYSQL.dllから見つかりません」~
というエラーが表示され、読み込むことができません。~
MySQL5.0を利用しており、DBIパッケージの読み込みまでは行ったのですが、原因が思い当たる方はいらっしゃいますでしょうか。~

//
- 自己レスですみません。右記URLにて解決しました。http://tolstoy.newcastle.edu.au/R/e2/help/07/10/28442.html -- [[だあ]] &new{2008-01-15 (火) 15:37:15};

#comment

**Rを自動で起動・終了させるには? [#scfe4bf4]
>[[春一番]] (2008-01-14 (月) 18:57:22)~
~
初めまして。Rの初心者なので分らないことばかりですが、宜しくお願いします。他のサイトでExcelのデータをRに移動しデータ解析が出来ることを知りました。ソフトウエアは、Visual Basic 2005,Excel2003,R2.20,RExcel v1.35です。私がしようとしていることは、Visual Basic 2005でプログラムを作成し、画面に視標を呈示します。その視標が見えたか見えないか披検者は答えます。答えた瞬間に、その結果をExcelに保存します。Excelに保存されたらすぐにRを起動し最尤法のプロビット分析を用いて50%閾値を求めます。その結果をExcelに戻し、そこからVisual Basic 2005に戻し次の視標を呈示します。これを30回〜40回自動で繰り返したいのです。こんなことは可能なのでしょうか。また、サンプルコードはあるのでしょうか?お忙しいと思いますが何卒宜しくお願い申しあげます。~

//
- まずExcelを間にかませる意味がわかりません。VBならばRCMD batchでバッチ処理させるか、RDCOMを使ってVBからRを直接起動させたほうがいいように思いますが。(RExcelはRDCOMを利用したものです。RDCOMサーバーをインストールするとVBのsampleがついてます) -- [[okinawa]] &new{2008-01-14 (月) 19:31:10};
- ご教授ありがとうございます。http://cran.r-project.org/contrib/extra/dcom/からIndex for R/Scilab (D)COM Server V2.50 and RExcel V1.75をインストールしました。しかし、エクセルを開こうとするとコンパイルエラーが出てしまいエクセルが開けません。どのように対処したら良いのでしょうか?ご指導宜しくお願い致します。 -- [[春一番]] &new{2008-01-14 (月) 20:50:45};
- まず環境を整備しましょう。Rのバージョンが古いのでR2.5.1にしてみてください。その場合古いRはアンインストールしてください。つぎに、エクセルが開かないとは具体的に何をどのように起動したのかを教えてください。(こちらはそちらの実行環境が分かりませんので、すべて具体的に説明するように心がけてください) -- [[okinawa]] &new{2008-01-15 (火) 08:36:50};
- 指標というものがどういうものか分かりませんが、R(とそのグラフィックス機能)だけでできないか、と思ったりするのですが。もしそうなら世話が無い。それと直前のコメント中の R 2.5.1 は R 2.6.1 ですか? --  &new{2008-01-15 (火) 10:17:19};
- R2.6.1でもいいとは思うのですが、私自身でRDCOM&RExcelとR2.6.1の実働検証をしていませんので、R2.5.1と書きました。 -- [[okinawa]] &new{2008-01-15 (火) 13:35:48};
- 視標はランドルト環と言って眼科で視力検査するときの黒い輪っかのことです。あと、R2.20ですが、CD-Rから入れたのでダウンロードをどのサイトからしたら良いかよくわかりません。お勧めのサイトがありましたら教えて頂けないでしょうか? -- [[春一番]] &new{2008-01-15 (火) 21:55:15};
- http://cran.md.tsukuba.ac.jp/ などを参照。~
ランドルト環なら,Rで簡単に描けるでしょう。だとしたら,一から10までRで,済む。 --  &new{2008-01-15 (火) 22:32:07};
- 業務用に開発を考えているのであれば、VB使うのが正解かと思います。研究目的なら上記にあるようにRcmdrプラグインあたりを使えば開発できそうですね。 -- [[okinawa]] &new{2008-01-16 (水) 10:55:35};
- 返事が遅くなり申し訳ありません。ランドルト環なのですが、将来的には色の濃さを変えたり色そのものを変えたりする予定です。さらに、VBで視力検査以外にも他の検査も開発しようとしています。さらに発展させて臨床の場で使えればと思っています。なので、是非ともVB→R→VBの流れを学びたいのです。明日の朝一で上記のサイトからR2.5.1をダウンロードして実働するか確認したいと思います。 -- [[春一番]] &new{2008-01-17 (木) 23:22:33};
- お伺いしているかぎり,[VB→R→VBの流れ]にこだわる必要性が見いだせません(趣味の問題でしょうから,ああだこうだ言う必要はないので,お好きなように) --  &new{2008-01-18 (金) 00:41:59};
- RDCOMは基本的にCOM(ActiveX)なのでVBからRを叩くのに向いていると思います。また、最近の臨床機器はネットでサーバーに飛ばせとか、Excelでデータを出力させろとか現場の要求が多いのでVBで逃げてた方が無難です。(私は決してVBが好きな訳ではありません。むしろ嫌いな方です。念のため) -- [[okinawa]] &new{2008-01-18 (金) 08:34:01};
- RExcelのインストールですが、http://cran.r-project.org/contrib/extra/dcom/のRsvr250.exeは不具合が有るようです。http://sunsite.univie.ac.at/rcom/download/current/のRsrv250_pl1.exeをお試しください。 -- [[知ったかぶり]] &new{2008-01-19 (土) 21:44:13};
- 返事がしばらく出来なくて申し訳ありませんでした。他のことで一杯一杯でRに手がまわりませんでした。今日知ったのですが、Visual Basic 2005からAccessやExcelにデータを写すことが出来るのですが、これはVBにRDCOMが入っていると考えてよいのでしょうか? -- [[春一番]] &new{2008-01-25 (金) 12:46:12};

#comment

**foldまたはreduceのような機能はありますか? [#l79f245a]
>[[lambda]] (2008-01-13 (日) 04:22:49)~
~
sumとprodは見つけたのですが、足し算、かけ算以外の任意の演算で畳込みを行うときにはどうすればいいのかわかりません。~
Rではベクトル化された関数を使ってmap関数と同等のことが出来たり、論理値ベクトルを[]に入れてfilter関数と同等のことが出来たりしますが、~
fold関数等がなくても直接的に畳込みをする方法があったりするのでしょうか?~
それともforを使って地道に変数に累積していくしかないんでしょうか…。~

//
- fold, reduce とは具体的にどういう演算のことを指すのですか。その名も convolve という関数がありますが、もしかしてこれのこと?--  &new{2008-01-13 (日) 11:22:57};
- 説明が足りなくてすみません。http://d.hatena.ne.jp/blanketsky/20071129/1196329379 にあるような演算です。仮にRにfoldという名前でその関数があったとしたらfold("+",1:10)またはfold("+",0,1:10)と呼び出すと55を返すようなイメージです。 -- [[lambda]] &new{2008-01-13 (日) 17:50:58};
- 例は,色々な説明ページにもある R で言えば sum 関数なのですが,もっと他の例は(Rで用意されていないような例)を挙げていただくと,それをRならどう料理するかということを回答してくれるんじゃないかと思います。 --  &new{2008-01-13 (日) 18:08:52};
- 混乱させてすみません、"+"(1,2)→3が出来るので"+"単体で関数が返るものと勘違いしていました。先ほどの例は、fold(function(x,y)x+y,1:10)に訂正させてください。例えば内部処理として、fold<-function(f,x){r<-x[1];for(i in x[-1])r<-f(r,i);r}のような、関数fとベクトルxを引数としてとり、fの値によってsumとしても他の同種の関数としても使えるような関数がRにあるのかどうかが知りたいです。 -- [[lambda]] &new{2008-01-14 (月) 03:31:22};
- おそらく R なら apply 関数族を使うケースでしょうね。いろんな *apply 関数がありますから、使い方をマスタすれば便利だと思います。 --  &new{2008-01-14 (月) 06:19:33};
 > ft <- function(x) {x+pi}
 > sapply(1:10, ft)
  [1]  4.141593  5.141593  6.141593  7.141593  8.141593  9.141593 10.141593
  [8] 11.141593 12.141593 13.141593
 > sum(sapply(1:10, ft))
 [1] 86.41593
 > sum(sapply(1:10, function(x) {x+pi}))  # 一行で書けば
 [1] 86.41593
もしくは outer 関数も使えるかもしれません(こっちの方が一般に早い)。
 > outer(1:10,pi,"+") 
            [,1]
  [1,]  4.141593
  [2,]  5.141593
  [3,]  6.141593
  [4,]  7.141593
  [5,]  8.141593
  [6,]  9.141593
  [7,] 10.141593
  [8,] 11.141593
  [9,] 12.141593
 [10,] 13.141593
 > sum(outer(1:10,pi,"+")) 
 [1] 86.41593
 > sum(outer(1:10,pi,"*")) 
 [1] 172.7876
 > sum(outer(1:10,pi,"^")) 
 [1] 4074.216
- ありがとうございます。sapplyやouterは引数として関数を与えるものという点で非常に近いです。このような関数族の中で、n個の要素からn個の値を返すのではなく、n個の要素から1つの値を返すものはありますでしょうか?例のための例のようで恐縮ですが、5個の数値から1つの文字列を返す例:fold(function(x,y)paste("[",x,",",y,"]"),1:5)→"[ [ [ [ 1 , 2 ] , 3 ] , 4 ] , 5 ]" -- [[lambda]] &new{2008-01-15 (火) 01:29:33};
- 単独で行うものは無いでしょう。要するに再帰的処理のようですから、Recall 関数を用いて関数を書けば済む事ではありますが。 --  &new{2008-01-15 (火) 10:13:02};
- やはりないのですか…。ありがとうございます、おかげであきらめがつきました。とりあえず上に書いたfold<-function(f,x){r<-x[1];for(i in x[-1])r<-f(r,i);r}で代用することにします。 -- [[lambda]] &new{2008-01-16 (水) 02:05:44};

#comment

**SQLファイルから読み込んだベクトル様データのベクトル化の仕方 [#o27a1e6c]
>[[あーちゃんぱぱ]] (2008-01-11 (金) 23:35:13)~
~
全くの初心者です,よろしくお願いします.~
MySQLのデータベースからデータを読み込んで解析を行おうとしているのですが,利用したいデータの構造が,"120, 500, 554, 578" という様なベクトル構造をしている為に読み込むと文字列として認識されてしまいます.なんとかして,このデータからベクトル c(120, 500, 554, 578)を得たいのですがどうすれば良いのでしょうか?解決法を教えて下さいよろしくお願いします.~

//
- コンマで区切られている為に文字列になってしまうのでしょうか? -- [[あーちゃんぱぱ]] &new{2008-01-12 (土) 00:45:48};
- ご呈示いただいた,データを基に解決例を挙げてみます。あと恐縮ですが,「あーちゃんぱぱ」さんの記載している,多重のコメントや,Wikiの書式ミスは,印象が悪くなってしまいますので,ご自身で消去して下さい。 -- [[aa]] &new{2008-01-12 (土) 00:56:20};
 a <- "120, 500, 554, 578"
 as.numeric(strsplit(a, ",")[[1]])
- aaさんありがとうございました,大変参考になりました. -- [[あーちゃんぱぱ]] &new{2008-01-12 (土) 01:37:49};
- scan(textConnection(a, "r"),sep=",") --  &new{2008-01-12 (土) 09:38:25};

#comment

**Rcmdrのダウンロード [#o196481f]
>[[SIS]] (2008-01-11 (金) 17:15:44)~
~
記載場所が違っていたら申し訳ありません。~
windows版 R 2.4.1をインストール後、Rcmdrをダウンロードしようとしたところ、一部の関連パッケージはインストールできたのですが、ほとんどのパッケージについて~
 URL 'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.4/Rcmdr_1.2-9.zip' を試しています
 以下にエラーdownload.file(url, destfile, method, mode = "wb") :
 URL'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.4/Rcmdr_1.2-9.zip' を開けません
 追加情報: Warning message:
 開けません:HTTP ステータスは '403 container violation' です
 download.packages(pkgs, destdir = tmpd, available = available,  中で警告がありました:
 download of package 'Rcmdr' failed
といったエラーが出てしまいました。
googleなどを検索したのですが、どのようにすれば解決するかが分かりません。
解決策をお教えください。~

//
- Rをインストールした手順、パッケージをインストールした手順、OSのバージョンを詳細に説明してください。 -- [[okinawa]] &new{2008-01-13 (日) 11:14:21};
- ご返答が遅くなって申し訳ありません。OSのバージョンはwindowsXP SP2になります。Rのインストールは筑波のミラーサイトよりwindows ⇒base⇒old⇒R 2.4.1の順で入り、R-2.4.1-win32.exeを選んで実行。インストールは日本語で行い、「次に」を順に押していって、インストールしました。パッケージのインストールは「パッケージのインストール⇒サイトで筑波を選択⇒Rcmdrを選択」の順序で行いました。その結果が上記質問にある内容になります。よろしくお願いいたします。 -- [[SIS]] &new{2008-01-14 (月) 18:10:55};
- 追記 パッケージのインストールはR 2.4.1を立ち上げた後にRから行いました。 -- [[SIS]] &new{2008-01-14 (月) 18:13:45};
- 手順は問題ないようですね。だとすると単にネットワークがうまくつながっていないように見受けられますが・・・。http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.4/Rcmdr_1.2-9.zipをブラウザで実行させるときちんとダウンロードできますか?できる=>Rの再インストール、できない=>ネットワークの設定確認&ブラウザにproxyや変なcacheをいれていないかの確認 -- [[okinawa]] &new{2008-01-15 (火) 15:32:40};
- okinawa様コメントありがとうございます。ブラウザでダウンロードをしようとしたところForbidden by content security scanner The content security scanner detected a container size or limit violation in the URL http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.4/Rcmdr_1.2-9.zip. The content has been removed.というメッセージが出ました。会社のPCを使用しており、セキュリティソフトとしてウィルスバスター コーポレートエディションが入っているのですが、それが問題なのかも知れません。他にも色々確認してみます。 -- [[SIS]] &new{2008-01-16 (水) 09:25:49};
- たぶんセキュリティに引っかかっているのでしょう。セキュリティツールにcran.md.tukuba.ac.jpを許可するように設定しないとうまくいきそうにないですね。 -- [[okinawa]] &new{2008-01-16 (水) 11:02:25};

#comment

**tapplyを使ったグラフ作成 [#f55a1e97]
>[[tukey]] (2008-01-11 (金) 11:47:06)~
~
以下のように、ある区分(以下の例では、"TYPE")ごとにヒストグラムを作成することを考えておりますが、タイトルにどの区分かを表示したいと考えておりますが、どのようにすればよいか教えてください。~
それぞれの区分のタイトルに、~
Histogram of TYPE=1~
Histogram of TYPE=2~
と表示したいと考えております。~
~
以下に簡単なプログラムの事例を載せます。~
 AGE<-c(30,80,90,77,65,33)
 TYPE<-c(1,1,1,2,2,2)
 
 myhist <- function(x){
	hist(x,main=paste("Histogram of TYPE=",1))
 }
 
 tapply(AGE,TYPE,myhist)

//
- myhistの中でsubstitute(x)を表示させると"X","[["に続いてTYPEの何番目の水準かという数字が出てくるので,上の場合ならmyhistの中を~
	hist(x,main=paste("Histogram of TYPE=",substitute(x)[[3]]))
とするだけで可能です([3]より上の方が良いので訂正しました。また,失礼ながらコードの書式を勝手に直させていただきました)。 -- [[中澤]] &new{2008-01-11 (金) 12:37:26};
- 中澤先生。ご教授ありがとうございました。2日ほどいろいろ調査して分かりませんでした。大変助かりました。 -- [[tukey]] &new{2008-01-11 (金) 13:01:25};
- TYPEが1から始まる連続する整数値とは限らないと思う --  &new{2008-01-11 (金) 14:23:54};
- その場合は,TYPEをfactorにしておいて,levels(TYPE)の添え字にすればいいです。 -- [[中澤]] &new{2008-01-11 (金) 14:30:03};
- 申し訳ございませんが、具体的なプログラムをご教授頂けないでしょうか? -- [[tukey]] &new{2008-01-11 (金) 16:46:45};
- 例えば,次のようになります。-- [[中澤]] &new{2008-01-11 (金) 17:50:03};
 AGE<-c(30,80,90,77,65,33)
 TYPE<-as.factor(c("M","M","M","F","F","F"))
 LTYPE<-levels(TYPE)
 
 myhist <- function(x){
	hist(x,main=paste("Histogram of TYPE=",LTYPE[substitute(x)[[3]]]))
 }
 
 tapply(AGE,TYPE,myhist)
- --  &new{2008-01-13 (日) 14:36:35};
 invisible(mapply(function(x, main) hist(x, main=main),
 split(AGE, TYPE), paste("Histogram of TYPE=", levels(TYPE))))

#comment

**プロビット分析で出てくるエラーについて [#p0451616]
>[[kuro]] (2008-01-10 (木) 05:46:11)~
~
はじめまして。~
プロビット分析を行なっていて出てくるエラーの意味について教えて下さい。~
~
当方、MASSパッケージを読み込んで、順序プロビット分析(polr()関数を使う)を行なっています。以下は、Rのコンソール画面です。~
~
 > library(MASS)
 > data<-read.table("data.dat",header=TRUE)
 > data[1:3,]
   popul TVnews selfLR ClinLR DoleLR PID age educ income vote reldist
 1     0      7      7      1      6   6  36    3      1    1      -5
 2   190      1      3      3      5   1  20    4      1    0       2
 3    31      7      2      2      6   1  24    6      1    0       4
 > summary(polr(as.ordered(ClinLR) ~ TVnews+selfLR+PID+age+educ+income, data=data))
~
と入力すると、~
~
  Error in svd(X) :  'x' に無限値か欠測値があります 
~
と表示されます。~
このエラーが何を意味しているか分からないのですが、ご存知の方がいらっしゃったら教えて下さい。よろしくお願いします~

//
- そのままの意味でしょう。データに NA もしくは Inf 値が紛れ込んでいませんか。 data2 <- data[complete.cases(data),] として NA 値のあるケースを除いて試してみられたら。 --  &new{2008-01-10 (木) 07:19:40};
- かぶってますね。~
エラーの意味はpolr関数の途中でsvd関数を使っていて、svdが処理する引数XにNAかInfがあるということです。たとえば
 x <- matrix(1:12, ncol=4)
 svd(x) # エラーはでない
 x[1,1] <- NA
 svd(x) # エラー
ということです。~
ところで、polrにはsvdを使うのですか?Googleで調べると、[[良く似た質問:http://tolstoy.newcastle.edu.au/R/help/05/11/15596.html]]がありました。また、ソースコードは[[これ:http://rgonzui.nakama.ne.jp/R/markup/R-2.6.0/src/library/Recommended/VR/MASS/R/polr.R?q=polr#l1]]と[[これ:http://rgonzui.nakama.ne.jp/R/markup/R-2.6.0/src/library/base/R/svd.R?q=svd#l1]]です。たどってみて、どこで引数Xが出てくるかチェックしてはどうですか?もしかすると、polrに適さないデータ構造なのかもしれませんよ。 -- [[akira]] &new{2008-01-10 (木) 07:21:08};
- akiraさま、ご親切にご教授、本当にありがとうございます。 当方、500個の同じデータ構造のデータセットをpolrにかけているのですが、答えが得られるものと、得られないものがあります。なので、データ構造に間違いがあるという訳ではなさそうです。これから、ご教授頂いた事を精査してまたご報告に参ります。ありがとうございます! -- [[kuro]] &new{2008-01-11 (金) 06:06:19};
- すいません。正確でなかったです。polrの内部処理でXが出るのですが、このXにNAかInfが生じるデータと生じないデータがあると思います。そしてXにNAかInfがあるとsvdがエラーになるります。 -- [[akira]] &new{2008-01-11 (金) 16:20:29};
- > データ構造に間違いがあるという訳ではなさそうです~
データ構造ではなく,データの性質に問題がある(そう言うものも含めてデータ構造というのなら別ですが)ものがあるということではないでしょうか? --  &new{2008-01-13 (日) 18:29:08};
- >>データ構造ではなく,データの性質に問題がある(そう言うものも含めてデータ構造というのなら別ですが)ものがあるということではないでしょうか?\br ご返信ありがとうございます。調べてみると、順序プロビットの場合、うまくモデルに適合しない場合に解が出ないことがあるようです。\br上記式polr(as.ordered(ClinLR) ~ TVnews+selfLR+PID+age+educ+income, data=data) では、得られる潜在変数を1,2,3の値をとる質的変数に落とすために,2つの閾値で区切るのですが、データがモデルにうまく当てはまってない場合には、1と2を区切る閾値と2と3を区切る閾値の値が逆転してしまって答えが出なくなるので、そのエラーではないかと思っています。 -- [[kuro]] &new{2008-01-17 (木) 10:47:41};

#comment

**[getOption("max.print") を越えました -- 末尾 190 行を省略します] [#h25ad6d8]
>[[竹の山]] (2008-01-08 (火) 22:28:33)~
~
昨日から始めた初心者です。~
900行X150列程度のデータのテキストファイルを分析したいので、~
> x >- read.table(“G1.txt”, header=TRUE)~
でRに読み込んで、その結果を~
> x~
で見ようとすると全部は見れません。これはアーカイブにある「R Consoleの表示容量について」の内容と同じですが、sink 関数を使って作ったテキストファイルの最後に以下のようなメッセージが出て少略されてしまいます。~
~
[getOption("max.print") を越えました -- 末尾 190 行を省略します]]~
~
~
R version 2.6.1 (2007-11-26) ~
i386-pc-mingw32 ~
~
locale:~
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932~
~
attached base packages:~
[1] stats     graphics  grDevices utils     datasets  methods   base~

//

- ご教示通りやることが出来たようで成功です。有難うございました。今後もよろしくお願いします。 -- [[竹の山]] &new{2008-01-08 (火) 22:49:31};
- 自問自答?それとも、直前の回答が消されてしまった?回答はおそらく --  &new{2008-01-09 (水) 00:21:12};
 > old.op <- options(max.print=999999)
 > old.op
 $max.print
 [1] 99999                         # 既定値
 
 > options()$max.print
 [1] 999999

#comment

**ベクトルを割り当てることができないのはメモリ不足が原因? [#m3de36f9]
>[[Saito]] (2008-01-06 (日) 23:27:04)~
~
WindowsXPでR2.6.1を使って一般化線形モデルによる解析を行っています。~
データを読み込んでさぁ解析といったところで、次のようなメッセージがでました。~
 x=read.table("a.txt",header=T)
 result=glm(A~.,data=x)
 エラー:  サイズ 294.8 Mb のベクトルを割り当てることができません 
初級Q&Aの"Step関数の実行"など、似たような事例はあったのですが解決には至りませんでした。~
ただ、そのやり取りの中で出てきた「WindowsのBoot.iniに/3GBスイッチをつける」
という箇所のみ調べてもできなかったので、~
それで解決するというのならおしまいなのでしょうが(汗)~
ちなみにglmではなくbiglmだとできるのですが…。
 result2=biglm(A~B+C+D+...+Z,data=x)
 step(result2)
 以下にエラー UseMethod("extractAIC") : 
 "extractAIC" に適用可能なメソッドがありません 
というメッセージが出てstepしても何故かできないし(一応extractAICも調べましたが…よくわかりませんでした)、そのあとのモデル選択ができないんです…。~
つまり、エラーが出なくなった上でstep関数等でモデル選択ができるような解決方法、~
をどなたかご存知でしたらご教授お願いします。ちなみに~
 > memory.size(T)
 [1] 801.5625
また、memory.limitは4095に設定してあります。~
よろしくお願いします。

//
- メモリはどれだけ積んでいますか? --  &new{2008-01-07 (月) 09:43:49};
- あ、すいません1.00GB RAMとなっています。 -- [[Saito]] &new{2008-01-07 (月) 11:56:15};
- やはりメモリ不足でしょうね(そもそも1GBしかメモリがないのに4GBのメモリ使用を指定しても無意味でしょう。それと memory.size(T) の出力はバイト単位のようですが、801.5625 とは面妖な。801MBの意味ですか?)。データが大きければ作業途中にも大量のメモリを使うでしょうから.。biglm にせよ glm にせよ、すべての説明変数を一度に使わず、最初は一つ、次に二つ、等試して良さそう(AIC等の適合度が情報として得られるというのが大前提ですが)な組み合わせを調べるのが一つの方法かもしれません(その際データそのものも不要な変数を削ってスリムにする必要があるかもしれません)。step関数も基本的には変数を増減させて試行錯誤しているわけですから。biglm の出力には有効(そう)な変数と無効(そう)な変数をチェックする情報はありませんか。 --  &new{2008-01-07 (月) 14:04:03};
- なるほど。やはりメモリ不足ですか。memory.size(T)の単位は801MBの意味だと思います。KB等にも直せるのでしょうか?何分初心者なもので…(汗)え〜っとつまり話をまとめると、不足分のメモリを増やす方法はないので少しずつ変数を加えて最適なモデルを探したり(力づくのstep関数?)最初からある程度変数を減らすなりして解析、ということでしょうか?つまり上記の「ベクトルが作成されません」というエラーが出たらお手上げ、という解釈ですよね?ちなみにglmの場合はAICは出るのですが、biglmの場合は出ないんですね。biglmの出力で出てくるのは Coef,(95%CI),SE,p値の4つですね。p値を見て捨てていくことも可能かもしれませんが、一応AICとかも見たいので…。 -- [[Saito]] &new{2008-01-07 (月) 15:09:18};
- memory.limit(size=NA)ではダメですか?あと、Winはメモリ食いなので、定期的にgc();gc()をした方が良いですよ -- [[akira]] &new{2008-01-07 (月) 17:57:26};
- Rは物理メモリのみ使います。(仮想メモリは使わない)あなたのWindowsXPに余計なアプリやサービスが立ち上がっていませんか?また、実行中にタスクマネージャーでRgui.exeがどれくらいメモリを食べているのか確認してみてください。状況から察するに、あなたのPCはあなたのデータを解析する環境に無いと思います。トリックを使うのではなく解析環境をきちんと整えた方がいいような気がします。 -- [[okinawa]] &new{2008-01-07 (月) 18:21:57};
- memory.limit(size=NA)とすると1024と表示されましたがそれでいいのでしょうか…?gc()もやってみましたがダメでした。Windowsで余計なサービスは立ち上がっていないと思いますが、タスクマネージャの"プロセス"でしか見れないようなやつは動いています。いくつかプロセスを終了させてしまっても差し支えないのでしょうか。ちょっとその辺りに疎いものでわかりません…。 -- [[Saito]] &new{2008-01-07 (月) 19:48:19};
- 物理メモリを増やすかデータを減らすかです。統計解析うんぬん以前の話になっているのでこれ以上回答できかねます。以上。 -- [[okinawa]] &new{2008-01-07 (月) 20:49:46};
- memory.limit(size=4095)とか(4096以上はよさげなメッセージが出ます)してみて下さい. Rはデフォルトでは, 仮想メモリ+物理メモリ-512MB 又は 物理メモリのいずれか小さいサイズが設定(for win32)されます. win32は標準では2GBまでしかユーザ空間では扱えません. バイナリに3GBのフラグを立てて、OSも3GBスイッチを有効にして始めて3GBまで扱えます(付近に詳しい人がいないと理解不能かも). 詳しくはhelp("Memory-limits")近辺を参照して下さい. ただ、swapするような環境だと、実質使いものにはならないので、ソースを改変してこまかく実行するようにするか、Linux等の64bit空間が使えるOSの利用を試してみてはいかがでしょうか. R for Win64はまだ使えるような状態ではないような気がします. -- [[なかま]] &new{2008-01-07 (月) 22:14:39};
- アドバイスありがとうございます。ちょっと試してみて、後日報告いたします。 -- [[Saito]] &new{2008-01-08 (火) 13:29:50};
- できました。できなかった原因は、ファイルとファイルをmergeでくっつけていたのですが、そのときに同じ要因なのにカテゴリー変数と連続変数が一緒になっている箇所があり、そのため項目数が一気に増大してしまったためというお粗末なものでした。お騒がせして大変申し訳ありませんでした。 -- [[Saito]] &new{2008-01-08 (火) 21:22:55};
- 投稿の基本どおり、データやコードをきちんと載せないと無駄な回答を引き出しますので、今後はちゃんと乗せてください。(私や他の回答者の方の時間を無駄に使わせないでください) -- [[okinawa]] &new{2008-01-09 (水) 09:03:32};

#comment


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS