= 統計解析フリーソフト R 【第2章】 =at MATH
= 統計解析フリーソフト R 【第2章】 = - 暇つぶし2ch617: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 が遅延評価であることの、うまい使い方を教えていただけませんか?」

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


787:132人目の素数さん
08/04/10 03:21:46
最近のRはパッケージの一括インストールがしにくくなってるな
なんでだろ

788:132人目の素数さん
08/04/10 11:15:18
前から順番はあったけどね
依存コードが多くなってきてるいい兆候じゃないかな

789:132人目の素数さん
08/04/12 20:12:56
依存もあって面倒だね
guiから一括ではダウンロードまでしかしてくれないし


790:132人目の素数さん
08/04/13 18:59:07
R/bin内のR.dll を使って、
VC++上からRの関数って実行できますか?

色々と試してみたのですが、コンパイルは通るものの、
肝心のRの関数のコール時にアプリがダウンしてしまいます。

アドバイスをお願い致します

791:132人目の素数さん
08/04/14 16:25:27
C用のインターフェース有ったような気がするが

792:781
08/04/14 16:51:15
>>784,790
RcppTemplateでググった?
まだ試してないんでできるかは分かりませんが・・・

793:132人目の素数さん
08/04/14 19:15:17
多言語からのライブラリのみの利用はできないんじゃない。
頭から呼び出す必要あると思う。

794:132人目の素数さん
08/04/14 19:38:12
あちゃ
多言語=>他言語


795:790
08/04/14 22:33:24
>781,793
レスありがとう
RcppTemplate は試しました。
pexport,libコマンド使用して Rdllからlibファイル作ったりもした。
一応コンパイルは通るんですけどね、
VC++上でデバッグかけると「AccessViolation」発生しちゃうんですよ。
恐らく、793さんの言うとおり、ライブラリだけの利用はできないような機がします。

RcppTemplateは 「R上で、C++を含んだR関数を作成するためのモノ」だと思いました(多分)

う~ん、残念。

796:790
08/04/14 22:44:48
>791
本当ですか?
RjpWikiの他言語インターフェース一覧は一応確認してますが、
Cから呼び出せるインターフェースは無かったです。
Rの中にある、 Call_R っていうやつですかね。
あれも「R上でCを含んだR関数を作成するもの」のような機が。

...詳細教えてください m(__)m


797:132人目の素数さん
08/04/14 22:46:02
MacのR 2.6.2なんですが、
cat("abc¥ndef")
とやってもコマンド版なら改行されるけどGUI版だと改行されずそのまま¥nが表示されてしまいます。どうしてかわかりませんか?

798:132人目の素数さん
08/04/14 23:32:46
最尤推定量を求めるには、R と Mathematica どっちが向いていますか。

Mathematicaで多変量とか扱うと、とんでもない値を返してくるか、止まるので。
それでも R よりましなら、式をテイラー展開の繰り返しで本当に適当な近似値出すんですが。

799:132人目の素数さん
08/04/15 09:21:55
>>797
\とoption+\の違いは分かる?Macユーザなら誰でも一度ははまる。

800:132人目の素数さん
08/04/15 12:00:47
Java用のライブラリ呼び出しのインターフェースがあるからそれより先にできてるんじゃないかな
CやC++用のが

801:132人目の素数さん
08/04/15 14:46:59
>>800
正直Cのインターフェースが用意されてない理由が分からない
>>796
URLリンク(www.okada.jp.org)
A1%BC%A5%D5%A5%A7%A1%BC%A5%B9%A4%CE%A4%A2%A4%EB%A5%A2%A5%D7%A5%EA
ここ見た?
CからJAVAを呼び出すのはJNIでいけるし間接的にCからRを呼び出せるんじゃないか?
実行速度は期待できないけど

802:132人目の素数さん
08/04/15 14:51:45
JNIはJavaからCはできるが逆は無理だろ

803:132人目の素数さん
08/04/17 22:35:32
>>799
ありがとう!Mac初心者だから知らなかった。
バックスラッシュと円記号は別なんですね。

804:132人目の素数さん
08/04/18 09:28:54
>>803
そう。MacでRjpwikiに書き込むときに、バックスラッシュと円記号
の違いで文字化けが発生してページを壊してしまうときがある。

805:132人目の素数さん
08/04/18 10:42:01
それMacrashっいうんだよ

・・・・いわねーな

806:132人目の素数さん
08/04/18 11:10:02
Macは昔からそういう雑なとこあるからなあ

807:132人目の素数さん
08/04/18 13:02:43
MacでもUSキーボードを使えば無問題。

808:132人目の素数さん
08/04/18 14:56:09
どんどんRから話がそれているが、
>>806
雑なのではなく、むしろ余計なお世話。「円記号とバックスラッシュが同じ」と
いうバットノウハウをもつ人間からは、そこまで細かい配慮はいらんとなるが、
そうではない人向けに両方を出力できるようにしている。そもそもUTF-8では
円記号とバックスラッシュに違うコードが割り当てられているので、UTF-8を
導入した以上は、明瞭に区別するのが正当とおもう。euc-jpなLinuxユーザなの
で、他のutf-8なOSがどうなのか知らないけど。


809:132人目の素数さん
08/04/18 15:37:25
そういうのを雑というんだよ

810:132人目の素数さん
08/05/01 19:24:36
2.7に変わってどうよ

811:132人目の素数さん
08/05/13 23:56:21
2.7.0 windows版で、以下のようになってしまうのですが・・
何がいけないんでしょうか??
> require(datasets)
> data(iris)
以下にエラー file.info(x) : ファイル名変換に問題があります
> data()
以下にエラー file.info(x) : ファイル名変換に問題があります
> data(iris, package="datasets")
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa


812:132人目の素数さん
08/05/14 01:19:34
>>811
ひょっとしてファイル名に問題があったりする?
知らんけど。

813:132人目の素数さん
08/05/14 02:23:44
(゚Д゚)≡゚д゚)、カァー ペッ!!


814:132人目の素数さん
08/05/14 02:48:49
(゚Д゚)≡゚д゚)、カァー ペッ!!


815:132人目の素数さん
08/05/14 16:46:29
>>811
Linux版だとそのエラーはでないね。Rを想定外の場所にインストールしているとか


816:132人目の素数さん
08/05/14 20:51:12
811です。
2.7.0を再インストールした段階では問題ありませんでした。

そのあと、Rcmdrを追加したあとで、おかしくなりました。
それから、どうにもなりません。
どなたかご解決をお願いします。

817:132人目の素数さん
08/05/15 12:39:21
パッケージがちゃんと読み込めてないんじゃ

818:132人目の素数さん
08/05/15 22:59:11
811です。
以下のもエラーがでるようになっていました・・・何か参考になれば・・
> demo()
Warning message:
In file.show(outFile, delete.file = TRUE, title = paste("R", tolower(x$title))) :


819:132人目の素数さん
08/05/24 09:41:34
tseriesのプロットで、複数のデータ系列を1枚の図に盛り込むために

 plot(hoge.ts, plot.type = "single")

をしているのですが、更に棒グラフ+ラインプロットのように系列によって
プロット方法や色などを変えたいと考えています。

で、?plot,?plot.ts,?plot.default,?parなどを読んだのですが、
系列ごとに変えることがさっぱりできません。これはもしかして
plot一発ではできなくて、低レベル描画関数を組んで自分でデータ系列ごとに
1つづつプロットしないと駄目なんでしょうか?

単に無知・調査不足でできないのか、それとも本当に↑の通りなのか
見極めが付かないままなので、先達の方に道程を指し示していただければと。


820:132人目の素数さん
08/05/25 02:17:18
Rのプロンプトからから直接bash使えねえかなあ?
なんかイラっとくる

821:132人目の素数さん
08/05/26 01:17:34
>>820
system()じゃ足りないの?

822:132人目の素数さん
08/05/26 13:55:59
C#からRを使うことはできないのかな。

C#自体がどうのこうのという意見は置いといてな。

823:132人目の素数さん
08/05/26 16:30:55
統計学なんでもスレッド8
スレリンク(math板)

824:132人目の素数さん
08/06/01 16:36:34
皆さんRコマンドを実行するときはどのようにしていますか?
エディタで書いてRConsoleにコピペしているのですが
もっと簡単な方法はないですかね?

825:132人目の素数さん
08/06/01 17:14:08
>>824
むしろ、そんな面倒なことをしている人の方が少なそう。emacs+essとかTinn-Rとか
Rjpwikiには書いていなかったっけ?

826:132人目の素数さん
08/06/05 07:52:57
>>824 同じくR付属エディタで書いてコピペしてます。
個人的には割と満足。
ただエディタがカッコとかクウォートを補完するのを止めたいのだが…
まあもう少し調べるか。

827:132人目の素数さん
08/06/07 19:07:56
Rで出力するグラフにHelveticaファミリーのフォントを直接使いたいんですが,どなたか方法をご存じないですか?
epsファイルに出力すれば使えるのはわかりますが,WindowsメタファイルやPDFに直接出力したときに反映されるようにしたいんですが……。

828:132人目の素数さん
08/06/08 00:17:32
>>827
Windowsメタファイルは知らんが、pdfはHelveticaになっていないの?
> pdf("tmp.pdf")
> plot(runif(10),runif(10))
> dev.off()
null device
          1
> system("/opt/local/bin/pdffonts tmp.pdf")
Error: No paper information available - using defaults
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
ZapfDingbats                         Type 1            no  no  no       5  0
Helvetica                            Type 1            no  no  no      10  0

Helveticaになっているよ。

829:132人目の素数さん
08/06/08 02:11:47
>>828
小塚明朝になってます…
epsをつくるときにフォントファミリーを指定する方法以外調べてもわからなかったんですが,どう設定すればいいのでしょうか?

830:132人目の素数さん
08/06/09 00:19:32
>>829
初期設定のどこかで小塚明朝にしているでしょ。
>>828はデフォルトの状態で何にも触っておらんよ。
> pdf.options()$family
[1] "Helvetica"
上記のようになっていなかったら、
pdf.options()$family <- "Helvetica"
でいいじゃね。

831:132人目の素数さん
08/06/09 01:45:26
F検定に関する質問です。

自由度19,19のデータ列a,bに対してF検定を行なったところ、
以下の結果を得ました。
var.test(c,b,conf.level=0.95)

data: c and b
F = 1.3572, num df = 19, denom df = 19, p-value = 0.512
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.5371931 3.4288788
sample estimates:
ratio of variances
1.357192


95%信頼区間は(0.5371931, 3.4288788)とのことです。
しかし実際にF分布から信頼区間を求めると
> qf(0.025,19,19)
[1] 0.3958122
> qf(0.975,19,19)
[1] 2.526451
と、上のF検定結果とは異なる結果になります。
(それ以前に、上の検定結果は(下限)=1/(上限)の関係すら満たしていません)

var.test()の信頼区間とは何を現しているのでしょうか?

832:831
08/06/09 01:49:47
いちおう上げときます

833:829
08/06/09 03:45:43
>>830
ありがとうございました。

834:132人目の素数さん
08/06/09 06:00:35
>>831
1/qf(0.025,19,19)=2.526451
=qf(0.975,19,19)


835:132人目の素数さん
08/06/09 08:25:28
>>831
信頼区間なんだから非心F分布から求めてるんだろ。

836:132人目の素数さん
08/06/09 22:15:28
>>834
そちらは当然逆数の関係にあります。
「上の検定結果が逆数関係を満たしていない」とは、F検定結果の信頼区間のほうをさしています。

>>835
非心F分布ですか…。
勉強不足でしりませんでした…。

837:836
08/06/09 22:17:02
名前入れ忘れました。>>831で質問した者です


838:132人目の素数さん
08/06/10 02:04:25
行列の部分行列や、ベクトルの特定の要素範囲を取り出すにはどうすればいいですか?
個別要素ではなくて一括して取り出したいです。

(1,2,3,4,5,6,7)

(3,4,5,6)

1  2  3  4
5  6  7  8
9 10 11 12

6  7
10 11

みたいなかんじです。

839:132人目の素数さん
08/06/10 09:54:17
> (a <- 1:7)
[1] 1 2 3 4 5 6 7
> a[3:6]
[1] 3 4 5 6
> (b <- matrix(1:12,ncol=4,byrow=TRUE))
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> b[2:3,2:3]
     [,1] [,2]
[1,]    6    7
[2,]   10   11
やりたいことがいまいち分からないが、こういうこと?

840:132人目の素数さん
08/06/10 19:43:55
>>831
qf(c(0.025, 0.975), 19, 19) * 1.357192
[1] 0.5371931 3.4288790

841:132人目の素数さん
08/06/11 23:06:05
>>831
qf(0.025,19,19) の 0.3958122 と
qf(0.975,19,19) の 2.526451 は
2群の標本分散の比(つまりF値)の棄却域。

95 percent confidence interval:
0.5371931 3.4288788
ってのは、2群の標本分散の比であるところの1.3572(F値そのもの)
から推定すると、2群の母集団の分散の比はこの辺にあるだろうなー、
という幅。つまりは信頼区間。

母分散の比の推定を幅ではなくて一点でしぼるのなら、最も合理的な値は
F値であるところの1.3572。

842:831
08/06/11 23:33:17
>>840-841
なるほど、分かってきた気がします!
母集団のF値が1で仮定したときの帰無仮説における95%信頼区間が0.3958122~2.526451であり、
これから標本値のF値が外れていると棄却する。

一方、「95 percent confidence interval」は、逆に標本値がF=1.3572であったときの母集団の推測値の95 percent confidence intervalということですか。
これから帰無仮説における母集団のF値=1が外れていると棄却する。

納得いきました。結局は同じことだったんですね。
ありがとうございました。

843:132人目の素数さん
08/06/12 00:43:15
************
九天社は2008年06月10日に営業を停止しました。
************
このページは、元サイト管理者の判断により一時的にサーバーを移転して公開しています。書籍のデータのダウンロード等、必要な方はなるべくお早めにダウンロードしてください。
--------------------------------------------------------------------------------
Rプログラミング&グラフィックス
[著]高階知巳 [価格]3,990 円(税込)
--------------------------------------------------------------------------------
Rで学ぶデータマイニングII シミュレーションの視点から
[著]熊谷悦生、舟尾暢男 [価格]3,990 円(税込)
--------------------------------------------------------------------------------
R Commander ハンドブック
[著]舟尾暢男 [価格]3,360 円(税込)
--------------------------------------------------------------------------------
Rで学ぶデータマイニング I データ解析の視点から
[著]熊谷悦生、舟尾暢男 [価格]3,780 円(税込)
--------------------------------------------------------------------------------
The R Tips データ解析環境 R の基本技・グラフィックス活用集
[著]舟尾 暢男 [価格]3,675 円(税込)
--------------------------------------------------------------------------------
The R Book データ解析環境「R」の活用事例集
[著]岡田 昌史 [価格]3,990 円(税込)
--------------------------------------------------------------------------------

844:838
08/06/12 01:03:42
>>839
できました!ありがとうございました!

845:132人目の素数さん
08/06/12 12:52:50
>>843
ぬわっんと、倒産ですか。
すみませんが、その移転先を教えて頂けませんか、お願いします。

846:132人目の素数さん
08/06/12 17:33:11
そもそも移転すんのか?
倒産だし

847:132人目の素数さん
08/06/12 17:41:13
>>845
これかな
URLリンク(www.9-ten.com)

848:132人目の素数さん
08/06/12 21:49:10
>846
いや、サイトの移転先の話ですw ページトップからは入れなくなっているんで。
>847
ありがとうございます。


849:132人目の素数さん
08/06/13 11:49:50
waveletの使い方分かるかた
分解したwaveletを再構成するにはどうしたらいいか教えてください
関数が今一分からないです

850:132人目の素数さん
08/06/15 22:25:02
九天社倒産を知って、買うのを迷っていたThe R Bookの購入を決断。
ところが、Amazonはじめいつも使っているネット書店では在庫なし!
しばらく探し歩いて、今日、無事に届いた。急な出費は痛いけど、
悔やむより良いかなと。

851:hoge
08/06/15 22:54:04
CRANってなんて読むの?
ググったけど分からん!
教えてください。

852:132人目の素数さん
08/06/15 23:07:43
>>851
しらん(´・ω・`)

853:132人目の素数さん
08/06/15 23:31:00
>>852
クスっときた

854:132人目の素数さん
08/06/15 23:32:26
>>851
くらんって言う人が多い気がする

855:132人目の素数さん
08/06/19 15:07:58
行列データで身長160から170は何人いるかという条件付きの集計をしたいのですが、どのようにすればよいのでしょうか

856:132人目の素数さん
08/06/19 17:32:09
> height <- 150:180 #height をデータの行列とした。
> compare <- height >= 160 & height < 170
> table(compare) #これとか
compare
FALSE TRUE
21 10
> length(which(compare)) #これとか
[1] 10

857:132人目の素数さん
08/06/20 15:31:21
ありがとうございます
行列データなのですがまずデータフレームにするべきなんですね。


858:132人目の素数さん
08/06/20 19:07:32
全然関係ない話なんだけどさあ、検索するじゃん。検索。googleとかで。
それでさあ、くだらないブログが腐るほど引っ掛かるんだよね。
知ったかとか、出鱈目とか鵜呑みにしたような内容の馬鹿ブログ。
いや、早い話がお前らブログ辞めろって。
いや、それだけなのよ。まじで。お願いだから辞めて下さい。
資源の無駄、そして多くの人、社会の利便性と生産性を根こそぎかっさらってますよ。お前達

859:132人目の素数さん
08/06/20 20:29:23
>>858
お前のようなタイプが一番生産性低いんだが。

860:132人目の素数さん
08/06/20 23:12:59
>>857
データフレームの方が扱いやすいが
それくらいの集計なら行列でもたやすいぞ。

861:132人目の素数さん
08/06/21 00:21:34
>>856のやり方は正統派なんだけど、めんどうなので、
> height <- 150:180
> sum(height >= 160 & height < 170 )
[1] 10
これでいいんじゃね。

862:132人目の素数さん
08/06/21 07:01:21
>>855
ちゃんと分析するならこんな感じ。

# 分析対象データを乱数で発生させる。
height<-runif(100,min=150,max=180)
# 集計する区切り位置を決める。
breaks<-c(150,160,170,180)
# 区切り位置で区切った結果が因子になって出てくる。
fac<-cut(height,breaks=breaks,right=F)
# 因子の数を集計すると度数分布が出てくる。
table(fac)
# ついでにヒストグラムも描いてみる。
hist(height,breaks=breaks,right=T)

863:132人目の素数さん
08/06/21 18:13:48
S-PLUSとRの互換性のある部分とない部分をまとめた資料ってない?

864:132人目の素数さん
08/06/27 16:54:25
ありがとうございます。
1列に限定した度数分布を求めることはできたのですが
heightが160以上170でweightが50から60は何人いるか、という2つ以上の条件を含めた度数分布をもとめるにはどうすればよいでしょうか


865:132人目の素数さん
08/06/27 18:50:39
>>864
うーむ……クレクレくんかよ。ちょっとは考えようや。
compareH <- height >= 160 & height < 170
これで、160~170が TRUE/FALSE で取れてくるんでしょ。なら、
compareW <- weight >= 50 & weight < 60
で 50~60が TRUE/FALSE で取れるじゃん。
両方が TRUE の場合のみカウントすれば良いんだから、
length( which(compareH & compareW) )

866:132人目の素数さん
08/06/27 19:21:22
なんかめんどくさいな

160<=height<170 and 50<=weight<60
とか書けないのかな・・・・

まあいいけど

867:132人目の素数さん
08/06/27 20:20:13
人が初心者向けに書いてやったのに、ゆとりなのでしょうか、呆れますなぁ。
sum(height - 160)%%10 < 10 & (weight - 50)%%10 < 10)
礼ぐらいまともに出来るようになれよ。

868:132人目の素数さん
08/06/27 22:31:38
# 分析対象データを乱数で準備。
dataset<-data.frame(height=runif(100,min=150,max=180),weight=runif(100,min=30,max=100))
# 集計する区切り位置を決める。
breaks.height<-c(150,160,170,180)
breaks.weight<-c(30,40,50,60,70,80,90,100)
# 区切り位置で区切った結果が因子になって出てくる。
fac.height<-cut(dataset$height,breaks=breaks.height,right=F)
fac.weight<-cut(dataset$weight,breaks=breaks.weight,right=F)
# クロス表を出す。
table(fac.height,fac.weight)

少し汎用性を持たせるとこんな感じだろうか。僕も勉強し始めだから。
なんでこれをRで集計する必要があるのか、興味あるところ。

869:132人目の素数さん
08/06/27 22:35:32
ついでに別の話題をカキコしたり。
rcompgenちうものを最近知ったわけで。コマンド補完は
ESSでしか無理だと思っていて、emacs挫折者の僕としては
rcompgenの補完機能だけで泣けた。あまり紹介されていない
機能の様だけれど、R使いの人達には言うまでも
ないことなのだろうか、それとも大穴なのだろうか。

870:132人目の素数さん
08/06/27 23:26:38
皆さんありがとうございます。
少しは自分できちんと調べられるようになります。

871:132人目の素数さん
08/06/27 23:37:01
>>867
あ~勘違いですよ
質問者ではないので、質問者を責めないであげて。

単に冗長だなと思っただけ。

872:132人目の素数さん
08/06/28 01:02:05
867はネット初心者だから
沢山の人間が書き込んでいるとは
想像できていなかったんだ、
許してやってくれ。


873:132人目の素数さん
08/06/28 10:18:19
ここ数レスでsageてないのが質問者だけだったから>>867が勘違いしたんだろ

874:132人目の素数さん
08/06/28 17:26:47
常識ねーなあ>>867

875:132人目の素数さん
08/06/28 17:38:54
反省しろよ?>>867

876:849
08/06/28 18:22:41
教えて

877:132人目の素数さん
08/06/28 19:29:22
逆変換すれば?

878:849
08/06/28 20:08:47
そもそも変換後の値を取り出す方法が分からない
それが分かれば再変換可能

879:849
08/06/28 20:09:12
ごめん逆変換

880:132人目の素数さん
08/06/30 11:03:23
867だが、勘違いだったようだ、スマンカッタ。
罪滅ぼしに、160 <= hoge < 170が出来ない理由を書いておく。
算術演算子なら、演算子の優先度に基づいて左から解釈されていく。
このとき一つ一つの演算結果は数値だ。一方比較演算子はbooleanが結果になる。
例で言うと (160 <= hoge) < 170 で括弧の中身を比較したあとに < 170 の演算を
やるわけだが、括弧内の結果(T/F) と数値の比較はできない。T を1と強制変換
したとしても、それは hoge < 170 の比較ではなくなるので意味が無い。
このため、コードが人間からすると冗長になるのは仕方が無い。

881:132人目の素数さん
08/06/30 19:10:31
>>880
> 160 <= hoge < 170が出来ない理由

> hoge <- function(x){
+ a <- unlist(strsplit(x,' '))
+ res <- eval(parse(text=paste(a[1],a[2],a[3]))) &
+ eval(parse(text=paste(a[3],a[4],a[5])))
+ return(sum(res))
+ }
> height <- 150:180
> hoge('160 <= height < 170')
[1] 10


882:132人目の素数さん
08/06/30 19:24:55
また開発会社が身売りされた

883:132人目の素数さん
08/06/30 20:16:16
>>881
それを>866はコードが冗長だといっているのでは?と思ったのだが。
出来ない訳ではないのは分かっているし、もっと単純にやる事も出来るでしょ。
sum(hoge * (hoge >= 160) < 170)
で出来る。これにしても、人間にとっては冗長だと思うけど。

884:132人目の素数さん
08/06/30 21:11:30
>>883
欠かれたコードが冗長と言っているのでなく、
そもそも冗長になってしまう言語面の問題を
言いました。
用意すれば良いのは分かっているのですが。

かといって、テクニックで短くなるの自分だけが
見る時以外は良くないし。
少々冗長でも分り易ければいいんですが。

基本的には、言語として人に優しくないなと思ったまでです。


885:132人目の素数さん
08/06/30 21:14:20
>>882
お!主語が抜けてた。再度

またS-PLUSの開発会社が身売りされた


886:132人目の素数さん
08/06/30 21:59:37
プログラミング言語は自然語にはどうやっても成れないだろうな、と思う。

887:132人目の素数さん
08/06/30 22:40:11
ちょっと、そう思っただけで
あまり大げさに考えないでください。
逆いえば、まだまだ考えるべき世界が残っている
ということですし。

888:132人目の素数さん
08/07/01 03:58:52
関数定義はできないのか?


889:132人目の素数さん
08/07/01 10:53:45
>>888
>>3

890:132人目の素数さん
08/07/04 03:00:58
述語論理のライブラリあったと思うが
根気が要るだけで不可能と決まってはいないよね
確か研究者も居て今最中だと聞いたことがある

891:132人目の素数さん
08/07/04 06:21:56
>>888

>>881 でも関数定義してるよ
どちらかと言えば、関数定義しながら
作っていく言語

892:132人目の素数さん
08/07/04 18:47:40
たとえば

foo<-seq(from=100000,to=1000000,by=10000)
plot(foo,foo)

とすると、標準デバイスに散布図が描かれるけど、
x,y軸の数値表記が
2e+05 4e+05 ... 1e+06
と指数表記されてしまう。これを
200000 400000 ... 1000000
と表記させることはできないだろうか。
低水準作図関数で作るまでの必要はないし、
ものすごく簡単なことで実現できそうで、
wikiには恥ずかしくて書けないから、
こっちで誰か教えてくれまいか。
環境は Windows XP SP2 R 2.7.0 です。

893:132人目の素数さん
08/07/04 18:59:00
>>892
っていうかwikiのどこかにそれ書いてあると思うけど。

894:892
08/07/04 22:28:12
>>893
書いてあるのか!そうか、方法はあるんだな。良かった。
でもな、調べるにしても既に検索ワードのネタ切れでな....。

895:132人目の素数さん
08/07/04 23:40:59
>>892
options(scipen=2)
URLリンク(cse.naro.affrc.go.jp)

896:132人目の素数さん
08/07/05 17:41:11
すみません、標準偏差の求め方を教えて下さい。

897:132人目の素数さん
08/07/05 17:43:47
すみません間違えました。分散の方です。

898:892
08/07/05 22:01:32
>>895
できたよありがとうウァァァァァァン!!!!!

899:132人目の素数さん
08/07/07 16:04:57
教えてください。

R初心者なんですが、Rcmdr使ってるんですけど
このパッケージで探索的因子分析ってできますか?
因子数を最初に決めるのが困難なですが・・・。

900:132人目の素数さん
08/07/13 20:03:53
しばしば
Error: cannot allocate vector of size 342.5 Mb
R(2168,0xa01a6fa0) malloc: *** mmap(size=359137280) failed (error code=12)
*** error: can't allocate region

の様なエラーが出てしまうのですが、
これはメモリ割当が足りないという事でしょうか?
MacBookPro/MacOSX10.5.4/2G memory/R2.7.1/Rapp1.25
です。
どのようにしたら回避できるでしょうか?

901:132人目の素数さん
08/07/15 19:21:55
すみません
redhatにRをインスコして
「R --vanilla << EOF」
を用いてシェルスクリプト上からバッチ処理したいなと思ったんですが
「以下にエラー check.options(new, name.opt = ".X11.Options", envir = .X11env) :
c("invalid argument name 'restoreConsole' in 'png(str, width = 1920,
height = 980, pointsize = 12, bg = \"white\", '", "invalid argument
name 'restoreConsole' in ' res = NA, restoreConsole = TRUE)'")
Calls: png -> check.options
実行が停止されました」
と出てしまい実行できませんでした。
試しに
「 x <- 1:10
y <- 1:10
plot(x, y)
q() 」
をEOFで挟んで実行すると問題なく画像ファイルが出力されました(PDF形式でしたが。。)

エラー内容を読み解くことすらできません・・どなたかわかるかたいらっしゃいませんか?


902:132人目の素数さん
08/07/15 20:27:07
>>901
普通はグラフィックディバイスを開いてからplot()を使うので、グラフィックディバイス
を開かずにいきなりplot()すれば、エラーが出て当然だけど、それでもpdfを吐いてくれる
んだ。親切な仕様だな。
?pdf
?png
?postscript
あたりを読む。

903:132人目の素数さん
08/07/16 01:21:04
R-tips高かったのにすごくわかりにくいorz
読み解く根性がないと言われたらそれまでだけど・・・
R-tipsの前におすすめの入門書とかないですかね。。。

904:132人目の素数さん
08/07/16 09:57:51
>>903
筆者がR-tipsがわかりにくいという評判なので、もっとわかりやすいのを書いたと
言っているデータ解析環境「R」―定番フリーソフトの基本操作からグラフィックス、統計解析まで-
URLリンク(www.amazon.co.jp)
を薦めている。「Rによるデータサイエンス」もお薦め。

905:132人目の素数さん
08/07/16 12:39:59
>>904
親切にどうもです
今日本屋で見てきます。

906:132人目の素数さん
08/07/17 15:43:46
主成分分析について質問です。
prcompで主成分分析したときに出てくる値というのは、
分散共分散行列による主成分分析の値ですよね?
この青木先生のページ(URLリンク(aoki2.si.gunma-u.ac.jp))
にあるpcaと言う関数の主成分負荷量とはいったい何の値なんでしょうか?
prcompで主成分分析したときの値とだいぶ異なりました。
相関行列による主成分分析の値かと考えたんですが計算したら違うようなので・・・
また、普通主成分分析をするとしたらどちらの値を指すのでしょうか?

907:132人目の素数さん
08/07/17 19:48:17
あげ

908:132人目の素数さん
08/07/18 00:16:09
>>906
固有ベクトルは長さが1で負荷量は長さが固有値という違いですね。

分散共分散行列に基づく主成分分析は変数の測定単位が同じである必要が
あるけど相関行列に基づく方はこだわらなくてよいので青木先生は初期設定を
そちらにしてるのかな。

909:906
08/07/18 22:40:26
>>908
なるほど。
prcompの方は分散分析行列によるもので長さが1の固有ベクトル、
青木先生のpcaは相関行列によるもので長さが固有値の負荷量ということですね。

でも今使ってるデータをprcompとpcaで解析すると、
第一主成分の係数の符号は同じなんですが、
第二主成分以降の係数の符号が違くなります。。。
(符号が反転してるわけではないので、たぶん主成分の順番が入れ替わってます。)
分散分析行列に基づいた解析と相関行列に基づいた解析では
主成分の順番が入れ替わることはありえるのでしょうか?
それともやり方が何か間違っているのでしょうか・・・?
説明が下手ですいません

910:132人目の素数さん
08/07/19 21:37:11
>>909
分散共分散行列に基づく主成分と相関行列に基づく主成分は
大きく異なることも多いです。特に分散共分散行列に基づく主成分で
第1主成分が総合効果の場合、相関行列ではそれが消えてしまいます。
つまり順番だけとは限りません。

911:132人目の素数さん
08/07/20 04:12:32
Rjp Wiki アーカイブスの2.2 箱型図に平均+標準偏差範囲を矢印で加える
に関して教えていただきたいのですが、サンプルプログラムを走らせても
> boxplot2()
windows
2
と表示されるだけで、図が作成されません
何か問題があるのでしょうか?
どなたか、どうぞよろしくお願いします

912:132人目の素数さん
08/07/20 12:39:57
>>910
なるほど、全然別のものになってしまうんですね。
疑問が解決しました、ほんと丁寧にありがとうございました。

913:132人目の素数さん
08/07/28 10:44:55
二年十八日十三時間。


914:132人目の素数さん
08/08/03 22:30:29
統計の本を読みながら、Ruby でシコシコ書いて実践していたんだけど、
Excel 用の統計本を買ったら、統計関連関数が山ほどあって、
Ruby から Excel 関数を利用することを試みつつ、
相関、推定、検定と書いてきて、重回帰分析で Excel 関数を使うか、
Ruby の Matrix を使うか、しばし熟考・・・・・
これはムダだと、ようやく気づいた。
「なんか、あるだろ、統計ソフトが」
んで、ググって、ここに来たよ。
マジですごいなコレ(R)。
文法が変だと思ったけど、慣れだな。
自力でやっていたことはムダではなかった。
R の変数名、関数名、引数を見るだけで、もうやりたいことがわかるし。
Web 上に情報がてんこ盛りだし。ありがてー ・゚・(ノД`)・゚・

915:132人目の素数さん
08/08/04 04:22:33
>>914
文法は、Cの皮をかぶったLISPだから。RUBY屋ならすぐになれると思うよ。

916:132人目の素数さん
08/08/05 16:41:38
Rによるやさしい統計学って本片手にいじってるけどおもろい
共分散構造分析がやりたいんだけど他の参考書と比べても充実してるし
豊田秀樹先生もRによるSEMマニュアル出してくんないかな

917:914
08/08/05 22:23:08
>>915
>文法は、Cの皮をかぶったLISPだから。RUBY屋ならすぐになれると思うよ。
ハハ。その通りみたいだ。
Rgui を起動してみて、Stk(Scheme) みたいだと思ったよ。「なつかしー」

What is STk?
URLリンク(kaolin.unice.fr)
STk is a free R4RS Scheme interpreter which can access the Tk graphical
package. Concretely, it can be seen as the standard Tk package where Tcl has
been replaced by a Scheme interpreter. STk embeds also an efficient CLOS
like object oriented system, called STklos, which provides:

The mandatory screenshots page
URLリンク(kaolin.unice.fr)
The STk Code Editor
This is a specialized editor for Scheme programming.
It do some font highlighting and parenthesis matching.

918:132人目の素数さん
08/08/06 21:39:49
>>916
いいですよね、その本。
私も買ってしまいました。
大学の教授の研究室にもありましたよ!

919:132人目の素数さん
08/08/10 17:23:21
そんな高くないんだからアマゾンででも買っとくといいぞ

920:教えてください
08/08/11 15:21:15
R初心者です。
例えば次のようなデータ(X,Y,Z)があります。
X Y Z
20 10 120
30 56 201
5 40 150
12 25 96
19 27 115

Zの値がが100未満ならA、Zの値が100以上150未満ならB、Zの値が150以上ならCと変換して、
下記のようにしたいのですが、どなたか教えていただけないでしょうか?
X Y Z
20 10 B
30 56 C
5 40 C
12 25 A
19 27 B

どうぞよろしくお願いいたします。

921:132人目の素数さん
08/08/11 22:42:20
> z <- c(120,201,150,96,115)
> zc <- ifelse(z<100,"A",ifelse(z>=100 & z<150,"B",ifelse(z>=150,"C",NA)))
> zc
[1] "B" "C" "C" "A" "B"
エクセルと同じかな?

922:132人目の素数さん
08/08/11 23:12:14
> z <- c(120,201,150,96,115)
> z[z>=150] <- "C"
> z[z>=100 & z<150] <- "B"
> z[z<100] <- "A"
> z
[1] "B" "C" "C" "96" "B"

?????どうしてうまくいかない???
逆では?? うまくいかない??
> z <- c(120,201,150,96,115)
> z[z<100] <- "A"
> z
[1] "120" "201" "150" "A" "115"
> z[z>=100 & z<150] <- "B"
> z
[1] "B" "201" "150" "A" "B"
> z[z>=150] <- "C"
> z
[1] "C" "C" "C" "C" "C"
なぜなのか教えて


923:132人目の素数さん
08/08/11 23:51:56
Rは知らないが
これみると
"A","B","C"という値は、"150"より
大きいということでしょう。

HEX出力してみるとそうなってんじゃないかな。

924:132人目の素数さん
08/08/12 02:40:11
>>922
> z <- c(120,201,150,96,115)
> z2<-z
> z2[z>=150]<-"C"
> z2[z>=100&z<150]<-"B"
> z2[z<100]<-"A"
> z2
[1] "B" "C" "C" "A" "B"

自分自身に入れると途中から数ではなく文字列になるので
>>923のいうように文字列比較になってしまいうまくいかない。



925:教えてください2
08/08/12 07:41:22
ありがとうござます。データが多いときは、例えばdata=(X,Y,Z)のときはどうすればよろしいでしょうか?

条件文を
> zc <- ifelse(data$Z<100,"A",ifelse(datat$Z>=100 & data$Z<150,"B",ifelse(datat$Z>=150,"C",NA)))

を使って、Zに記号をつけた新しいdataNEW=(X,Y,Z)ができますか?
すみませんまた教えていただけませんか?よろしくお願いします。

926:132人目の素数さん
08/08/12 11:51:07
>>925
recodeするときは、ifelseよりもcutを使った方が楽だと思うぞ。
> z <- c(120,201,150,96,115)
> z <- cut(z,c(-Inf,100,150,Inf),include.lowest=TRUE)
> levels(z) <- LETTERS[1:3]
> z
[1] B C B A B
Levels: A B C



927:132人目の素数さん
08/08/13 14:16:12
t検定表を見る代わりに、Rに出力させたいのですが、どうすればできますか?


928:132人目の素数さん
08/08/14 08:46:30
自己解決しました。
信頼係数95%のときに、自由度10の両側有意水準は、以下のようにして得られる。
> qt(0.975,10)
[1] 2.228139
> qt(0.025,10)
[1] -2.228139



929:132人目の素数さん
08/08/15 17:51:35
パッケージkernlabの二次計画ソルバーipop使ってる人いますか?

二つの変数があるときの二次計画をときたいのですが。。
ipopでは無理なのでしょうか?



930:教えてください2-1
08/08/15 22:32:45
>>926 ありがとうございます。
ifelseよりシンプルに書けそうですね。
申し訳ありませんが下の2行の翻訳をお願いいます。

> z <- cut(z,c(-Inf,100,150,Inf),include.lowest=TRUE)
> levels(z) <- LETTERS[1:3]
A、B、Cの指示はどの部分ですか?
よろしくお願いします。



931:132人目の素数さん
08/08/16 04:45:38
>>930
LETTERS[1:3]


932:926
08/08/16 21:33:49
>>931
代返ありがと
>>925
ベクトルではなくてデータフレームを扱いたいと言うこと?cbind()で足せばOK
> dat <- data.frame(x=month.name[1:5],y=runif(5),z=c(120,201,150,96,115))
> dat
         x          y   z
1  January 0.63212456 120
2 February 0.19865357 201
3    March 0.31978766 150
4    April 0.88575752  96
5      May 0.01307491 115
> z.s <- cut(dat$z,c(-Inf,100,150,Inf),include.lowest=TRUE)
> levels(z.s) <- LETTERS[1:3]
> dat <- cbind(dat,z.s)
> dat
         x          y   z z.s
1  January 0.63212456 120   B
2 February 0.19865357 201   C
3    March 0.31978766 150   B
4    April 0.88575752  96   A
5      May 0.01307491 115   B



933:教えてください2-2
08/08/17 10:37:05
<<932 ご説明ありがとうございます。
data=(X,Y,Z)の中でZについてある範囲でいくつかに分類したかった
ので質問させていただきました。
これまではsubset()を何度も繰り返していました。
cbind()はとても便利そうですね。助かりました。

934:教えてください2-3
08/08/17 16:39:23
「聞くは一時の恥、聞かぬは一生の恥」という諺もありますので
皆様にもう一つ質問させてください。
次のようなデータがあります。

X Y Z
20 10 120
30 56 201
5 40 150
12 25 96
19 27 115
2 30 165
10 23 85

X,Yの散布図を描きたいのですが、条件としてZ<100のときは赤丸(凡例)、100<=Z<150のとき青丸、
Z>=150のとき緑丸とするにはどのようにしますか?

どうぞよろしくお願いいたします。


935:132人目の素数さん
08/08/18 03:54:23
>>934
もはやあなたを相手しているのは私だけのような気がするが、
> dat <- data.frame(x=c(20,30,5,12,19,2,10),y=c(10,56,40,25,27,30,23),z=c(120,201,150,96,115,165,85))
> cols <- c("red","blue","green")
> z <- cut(dat$z,c(-Inf,100,150,Inf),include.lowest=TRUE)
> plot(dat$x,dat$y,col=cols[z],pch=19)
legendは自分で考えてみなさい

936:132人目の素数さん
08/08/18 18:52:15
超基本的なことかもしれないんだけど、
> 123.05 - 123.02
[1] 0.03
> (123.05 - 123.02) == 0.03
[1] FALSE
で、FALSEが返ってくるのは、なぜ?
色々本を見たんだけど、どこにも理由が出ていないし・・・
俺のOSX版だけかな。

937:132人目の素数さん
08/08/18 20:42:56
浮動小数点演算による誤差。そのままでは、どうやっても回避不能。
> 123.05-123.02
[1] 0.03
> sprintf("%.15e", 123.05-123.02)
[1] "3.000000000000114e-02"
>
どうしてもそこで TRUE が欲しい場合には、
> (1.0 - 123.02/123.05) - 0.03/123.05 < 1.0e-15
などとする。

938:132人目の素数さん
08/08/18 20:48:46
間違った、こっちの方が良いな。
>abs(1.0 - 123.02/123.05 - 0.03/123.05)< 1.0e-15


939:132人目の素数さん
08/08/18 20:53:12
>>936
いいところに気がついたね。数値計算の世界にようこそ。
> (123 - 122) == 1
[1] TRUE
> (123 - 122.5) == 0.5
[1] TRUE
> (123 - 122.75) == 0.25
[1] TRUE
> (123.05 - 123.02) == 0.03
[1] FALSE
> (123.06 - 123.02) == 0.04
[1] FALSE
整数は正確に保持され、小数部分を持つ数も,小数部が2進数で表されるもの(0.5, 0.25, 0.125 など
などや,それらの和で表現されるもの)は,正確に保持される。一方、それ以外の数は,"近似値"が保
持され、上記ような結果になる。Execelの計算がいい加減なのは上記問題を無視しているから。Rユー
ザは、きちんと考慮してプログラムを作るべき

940:132人目の素数さん
08/08/19 04:14:30
>>937
>>938
>>939

ご親切なご指導ありがとう後います。
何となく浮動小数点関連ではないかなと考えていたのですが
思ってたより、誤差が入ってしまうので正確に計算するのは難しそうですね。

とりあえず、最大小数点二位までのデータなので
全てのデータを百倍して、整数域で扱うことにしました。
ありがとうございました。

941:132人目の素数さん
08/08/26 22:44:00
質問させていただいてもいいでしょうか。。
データフレームでV2は世帯番号、V3は個人番号だとして

$ V2 : int 1 1 1 1 1 1 1 1 3 14 ...
$ V3 : int 1 1 2 2 3 3 4 5 1 1 ...

unique()で重複する要素をのぞいて以下のように各個人の合計を数えたいのですが
1-1,1-2,1-3,1-4,1-5,3-1,14-1,....


どのようにuniqueを使えばよいでしょうか?
また他にやり方があれば教えていただけないでしょうか。。

942:132人目の素数さん
08/08/27 00:45:41
>>941
その答えと同じにするなら

VV<-paste(V2,"-",V3)
unique(VV)

とするとよいが。

943:132人目の素数さん
08/08/27 11:53:31
Ubuntuのリポジトリに新しいr-base-coreとr-recommendedが来た。
2.7.2だな。


944:943
08/08/27 11:54:43
s/リポジトリ/CRANのリポジトリ/

945:132人目の素数さん
08/08/30 03:07:30
single-case design などに使える Rondamization test の
パッケージってどこかにないでしょうか。
パッケージ名等ご存じの方がいましたら教えてください。

946:132人目の素数さん
08/09/06 19:08:24
Rの出力
------------------------------------
Anova Table (Type II tests)
Response: y
            Sum Sq Df F value   Pr(>F)    
x           91.779   1  88.525   8.19e-05 ***
Residuals  6.221   6                    
------------------------------------
のようなものをクリップボード経由で
EXCELに貼り付けて表形式にする方法があれば教えてください。m(_ _)m
("Sum Sq","Df","6.221"等をここのセルに整列する方法)

947:132人目の素数さん
08/09/06 20:21:43
>>946
write.csv()

948:132人目の素数さん
08/09/06 22:05:38
>>947
忙しいなか、初心者の質問にお答え頂きありがとうございます。
------------------------------------
> write.csv(Anova(RegModel.1))
"","Sum Sq","Df","F value","Pr(>F)"
"x",91.7794117647059,1,88.5248226950355,8.1900177580363e-05
"Residuals",6.22058823529412,6,NA,NA
------------------------------------
見事にカンマ区切りになり、感動しているのですが、ここから
どうやってクリップボード経由でEXCELに持ち込んだら良いのでしょうか。

ファイルに一旦書き込まないと無理でしょうか。
書き込むのであれば、画面出力を.txtにしてテキストファイルウィザード
から読んだ方が忠実に再現されるように思います。生意気言ってすみません。

949:132人目の素数さん
08/09/07 15:48:27
946ですが、947様のお返事を見て
------------------------------------
Anova Table (Type II tests)
Response: y
            Sum Sq Df F value   Pr(>F)    
x           91.779   1  88.525   8.19e-05 ***
Residuals  6.221   6                    
------------------------------------
に対して
------------------------------------
<TABLE>
<TR><TD>Anova</TD><TD>Table</TD><TD>(Type</TD><TD>II</TD><TD>tests)</TD></TR>
<TR><TD>Response:</TD><TD>y</TD></TR>
<TR><TD>Sum</TD><TD>Sq</TD><TD>Df</TD><TD>F</TD><TD>value</TD><TD>Pr(>F)</TD></TR>    
<TR><TD>x</TD><TD>91.779</TD><TD>1</TD><TD>88.525</TD><TD>8.19e-05</TD><TD>***</TD></TR>
<TR><TD>Residuals</TD><TD>6.221</TD><TD>6</TD></TR>
</TABLE>                  
------------------------------------
のように文頭に<TABLE>、文末</TABLE>を付加、行頭に<TR><TD>、行末に</TD></TR>を付加
連続するスペース" "を</TD><TD>に置換すればSum Sqの行がずれますが
EXCEL表として貼り付くと考えました。素人考えですが・・・。

そんな関数ない、もしくは簡単には作れないですかね。


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