【R言語】統計解析フリーソフトR 第5章【GNU R】at MATH
【R言語】統計解析フリーソフトR 第5章【GNU R】 - 暇つぶし2ch185:132人目の素数さん
14/01/30 14:41:21.33 .net
//質問いたします。
matB <- array(dim=c(5,10,2))
matB[3,5,1]<-0.3
matB[2,7,1]<--0.3
matB[1,4,1]<-0
matB[5,4,2]<-2.5
maxvol<-max(matB[,,1], na.rm=TRUE)
maxvecB<-which(matB == maxvol)
lenrowB<-length(matB[,1,1])
if(maxvecB%%lenrowB==0){rowB <- lenrowB;colB <- maxvecB%/%lenrowB}else {rowB <- maxvecB%%lenrowB; colB <- maxvecB%/%lenrowB+1}

//上記は3次元の配列のうち3次元目の一枚目の表から、最大値を求め
//その要素の行値、列値を求めるスクリプトです。以下のように返ってきます。
> rowB
[1] 3
> colB
[1] 5

//わざわざ、maxvecBの要素番号を列の総数で割り、その剰余を利用して答えをだしています。
//たまたま、maxvecBの要素番号が列順に振られているのでうまくいきましたが、行順に振られていたら
//誤った値が返ってくるかと思います。
//もうすこし、シンプルな書き方があるような気がしてなりません。
//修正できるとこがありましたら教えていただきたいと思います。
//よろしくお願いします。

186:132人目の素数さん
14/01/30 15:30:36.11 .net
>>180
> シンプルな書き方
まぁ、そうだね。
> arrayInd(which.max(matB[,,1]


187:), dim(matB)) [,1] [,2] [,3] [1,] 3 5 1 とか。この位置の値を確認したければ、 > matB[arrayInd(which.max(matB[,,1]), dim(matB))] [1] 0.3 関数の意味は自分で調べてね。



188:132人目の素数さん
14/01/30 17:38:18.56 .net
ありがとうございます。いつもの同じ方でしょうか。
自分のが恥ずかしいぐらいシンプルです。
こうかけるようになれたらいいなあ。
ありがとうございました。

189:132人目の素数さん
14/01/30 17:47:03.20 .net
このスレ、かえって有害

190:132人目の素数さん
14/01/31 20:29:09.26 .net
rpubs.com って自分でホスティングするのは無理?

191:132人目の素数さん
14/02/02 21:38:49.85 .net
最近,emacsのorg-modeのorg-babelを使って,Rの解析結果をhtmlにexportした
レポートもどきを作成して,同僚に渡すようにしてる.やってることの解説と
code blockを交互に書くことで,同僚の理解も容易になって喜んでるんだけど,
問題は,code blockの数だけReturnを押さないといけないこと.5個や10個の
code blockなら良いけど,100個以上になると指がつりそうになる.全部を一気
に実行する方法を誰か知ってますか? スレ違いならゴメン.

192:sage
14/02/02 22:53:46.35 .net
>>185l
knitrはemacsもサポートしてるみたいだけど

193:132人目の素数さん
14/02/02 23:02:48.81 .net
グラフィックに続いておらいリーからまた本でたね。何でも載ってそうなんで、まよってるんだけど誰か買ったかな?

194:132人目の素数さん
14/02/03 00:02:22.42 .net
knitrは使ったことないんだけど,code blockを一気に処理できるの?

195:132人目の素数さん
14/02/03 18:19:44.13 .net
どなたか条件を指定して3次元プロットをする方法を教えていただきないでしょうか?
以下のデータを3Dプロットしようとする時、modernの値が3の場合赤、2の場合白、1の場合黄色とし、x軸はLの値、y軸はAの値、z軸はBの値としたいです。
L A B modern
1 48 54 32 3
2 21 32 15 2
3 87 2 78 2
4 45 102 12 3
5 54 91 31 2
6 7 21 81 3
7 87 64 12 1

196:132人目の素数さん
14/02/03 18:47:25.02 .net
>>189
3次元プロット自体はできるよね。
色分けは、例えばscatterplot3d()を使うなら、colorに色名のベクタを与えればよいだけ。
> modern <- c(3, 2, 2 ,3, 2, 3, 1)
なら、
> cols <- c("yellow", "white", "red")
> cols[modern]
[1] "red" "white" "white" "red" "white" "red" "yellow"
とすれば、色名のベクタが出来る

197:132人目の素数さん
14/02/03 19:08:02.33 .net
>>190
ありがとうございます。
3次元プロットは出来ます。
それぞれのデータ数が130ほどあるのですがこれも同じような形で解くのがよろしいのでしょうか?
質問ばかりしてしまい申し訳ないです。

198:132人目の素数さん
14/02/03 19:16:26.15 .net
できました!
本当に助かりました!

199:132人目の素数さん
14/02/03 22:32:09.24 .net
> knitrは使ったことないんだけど,code blockを一気に処理できるの?

自己レスです.ox-ravel.elというのを使えば,org-modeからknitrを使えるこ
とが分かった.URLリンク(github.com)
こいつでorg-modeからRhtmlを作って,それをRstudioにcompileさせるという流
れだな.複数のcode blockも一気に処理できるようだし,二度手間だけど100回
以上Return押すよりはマシなので,この方式に乗換を試してみる.初めて
knitr使ったけど,綺麗なhtmlできるのな.Rstudioちょっと見なおした.
> 186
ポイント,さんきゅ

200:132人目の素数さん
14/02/04 00:04:08.66 .net
真鍋●度は数学科だったんだな~

201:132人目の素数さん
14/02/05 16:42:31.84 .net
質問させてください
Basis splineで描画したグラフの任意の数値のy軸を求めることはできませんか?(下記


202:Basis splineのドキュメント) ttp://stat.ethz.ch/R-manual/R-patched/library/splines/html/bs.html 通常のspline補間では下記のサイトのようにやればpredictでx軸の数を指定すれば取得できたのですが ttp://d.hatena.ne.jp/hoxo_m/20110408/p1 Basis splineでの取得方法はないでしょうか 通常のspline補間のように指定したxの数を入力するとyを返してくれる方法が分かりません



203:132人目の素数さん
14/02/05 16:58:45.69 .net
すいません自己解決できました
お騒がせしました

204:132人目の素数さん
14/02/05 22:57:41.23 .net
質問があります。
環境はWindows7 32bitで、R3.0.1です。
RからC++のコードを呼びたいのですが、うまくいかないという話です。
C/C++コンパイラは、MinGW 4.8.1を入れて、RもMinGWも単体では問題無く動いています。

とりあえず、
--------------------
#include <vector>

extern "C" void test(double* a) {
std::vector<std::vector<double> > x(5);
}
--------------------
という何もしないファイルを、test.cppとして作って、Rcmd.exe SHLIB test.cppでコンパイルして、
さらに、Rから、
dyn.load("test.dll")
.C("test", arg1=as.double(c(1,2,3)))
dyn.unload("test.dll")
とかすると、問題無く実行できます。
(まあ何もしないですが。)

続きます。

205:197
14/02/05 22:58:34.64 .net
続きです。

でも、上のtest.cppを
--------------------
#include <vector>

extern "C" void test(double* a) {
std::vector<std::vector<double> > x(5);
std::vector<double> y(5);
}
--------------------
と変えてコンパイルして、Rから
dyn.load("test.dll")
dyn.unload("test.dll")
と実行すると、dyn.unloadのところでR毎エラーで止まってしまいます。
エラーメッセージは
Microsoft Visual C++ Runtime Library
This application has requested the Runtime to terminate it in an
unusual way.
Please contact the application's support tem for more information.
となぜか英語で出てきます。
メモリ管理周りが怪しい気がしますが、そもそも.Cでコードを実行していなくて、dllを
ロードしてアンロードしただけでエラーが出るのもわかりません。
だれが原因がわかるかたいませんか?

206:132人目の素数さん
14/02/06 09:50:21.68 .net
>>197
C++を使ったことがないので、
あまり価値のない情報だと思うが、
R 3.0.2 on Ubuntu 13.10で追試したところ、
x(5)のみのソースも、y(5)の行を足したソースも、
どちらも、エラーなし。
> dyn.load("test.so")
> .C("test", arg1=as.double(c(1,2,3)))
$arg1
[1] 1 2 3

> dyn.unload("test.so")
>

207:132人目の素数さん
14/02/06 22:02:51.67 .net
質問させてください
「data」+通し番号で150個存在するデータフレームがあるのですが
データを整形加工していくうちにデータ長が0になってしまったデータフレームをデータ長が1以上残っているものでリネームして通し番号を詰めていきたいのですが
地道に調べてやっていくしかないでしょうか
具体的には
data002がnrow(data002)=0の時、次にnrowでデータ長を調べて0じゃないものがdata003の時
nrow(data003)>0の時data002<-data003
data004とdata005のデータ長が0でdata006が0じゃないときはdata004<-data006といった具合に
のように代入して詰めたいです

208:132人目の素数さん
14/02/07 10:25:41.62 .net
>>200
自分なら次のようにします。
操作が面倒なので、150個のデータフレームを1つのリストオブジェクトにぶち込んで、
nrow()で判定して、削除。次に、連番を振りながら、個々のデータフレームを出力。
これで少なくとも見かけ上は「番号を詰めた」状態になります。

> a <- list(data002 = data.frame(x=1:10), data003 = data.frame(), data004 = data.frame(x=1:10))
簡単のために3つのデータフレームからなるリストで説明すると、
リストaの2番目の要素であるデータフレームの行が空になった状態。

> i <- sapply(a, function(x){nrow(x) != 0})
> a.truncated <- a[i]

これで、nrow()が0のデータフレームが削除されたリストができる。
Rでは、"["関数を積極的に利用した方が効率がよいと思う。
分かりやすいように2行に分けてたけど、
> a.truncated <- a[sapply(a, function(x){nrow(x) != 0})]
1行で十分。

リストから、個々のデータフレームに出力するにはassign()を使えばいい。
> for(i in seq_along(a.truncated)){assign(paste0("data", sprintf("%03d", i)), a.truncated[[i]])}
とすれば、data001, data002が出力される。

209:132人目の素数さん
14/02/07 11:52:16.93 .net
できました!
ありがとうございました!

210:132人目の素数さん
14/02/09 14:53:49.19 .net
Rをq()という関数で閉じようとするとき、
「workspaceを保存しますか。」というウィンドウが表示されます。
「いいえ」と答えて、そのまま閉じる過程まで、
スクリプトで指示することができますか?

211:132人目の素数さん
14/02/09 15:54:09.96 .net
>>203
さすがにこれはヘルプ見ろと叱られても仕方がないレベルでは?
?q

212:132人目の素数さん
14/02/09 16:31:07.01 .net
10日前にMacBook Pro 買って断然プログラム
モチ(マスター)ベーション
があがったよ

213:132人目の素数さん
14/02/09 18:02:24.94 .net
>>205
おめでとう*\(^o^)/*
Macは本物のUNIXマシンだから
数学やるには最適
頑張ってね

214:132人目の素数さん
14/02/09 18:04:33.54 .net
UNIXマシン?

215:132人目の素数さん
14/02/09 21:21:46.25 .net
UNIXを個人で使ってもあんまり意味ねえだろw
UNIXの発展系Cが本物のプログラム言語だから
いろいろな意味で最適
ならわかるがw

216:132人目の素数さん
14/02/10 03:32:55.67 .net
Macは邪悪なBSDと言われていて本物のUNIXじゃないよ。

パクリもののなんちゃってUNIX。

217:132人目の素数さん
14/02/10 04:10:41.30 .net
素人解説ww
OSXは正式にUNIX 03の商標を取得しているホンモノだよ。
UnixライクなOSとは別次元。

UNIX 03で個人が気軽に使えノートも有るのはMacだけ

218:132人目の素数さん
14/02/10 04:51:59.73 .net
OSの開発に失敗して、ソースパクっておいて自分だけ申請して自分こそが本物だと名乗る。

まさに詐欺師。

219:132人目の素数さん
14/02/10 17:06:47.17 .net
マカーは捏造ばっかりするから嫌われる。

220:132人目の素数さん
14/02/10 18:03:51.66 .net
繰り返し文わかる人いますか?
a1_1<-lm(x1_1~.,data_1)
a1_3<-lm(x1_2~.,data_1)
a1_5<-lm(x1_3~.,data_1)
  :
a1_43<-lm(x1_22~.,data_1)
a1_45<-lm(x1_23~.,data_1)
a1_47<-lm(x1_24~.,data_1)
a2_1<-lm(x2-1~.,data_2)
a2_3<-lm(x2-2~.,data_2)
a2_5<-lm(x2-3~.,data_2)
  :
a2_43<-lm(x2-22~.,data_2)
a2_45<-lm(x2-23~.,data_2)
a2_47<-lm(x2-24~.,data_2)
:
a12_1<-lm(x12_1~.,data_12)
a12_3<-lm(x12_2~.,data_12)
a12_5<-lm(x12_3~.,data_12)
  :
a12_43<-lm(x12_22~.,data_12)
a12_45<-lm(x12_23~.,data_12)
a12_47<-lm(x12_24~.,data_12)
このようにa12までを、くり返し文を使って短く表すことは出来ますか?
参考書を見てもわからなかったので、質問しました。

221:132人目の素数さん
14/02/10 18:57:31.58 .net
>>213
> くり返し文を使って短く表す
念のために確認しますが、「繰り返し文」は必須ですか?
繰り返し文を使わずに短くするのがルール違反なら、面倒くさいんだけど。。。

222:214
14/02/10 20:06:33.32 .net
反応ないけど、繰り返し文なしの一括化+マルチコア化を書いておこう。

説明を簡単にするために、デモデータをdata_1の分だけ作成。
data_2...data_12は今から説明するlapply()を入れ子にすればよい。

> data_1 <- data.frame(matrix(runif(100 * 47), 100))
> names(data_1) <- paste("x1", 1:47, sep = "_")

さて、先に式のリストを作成する。

> a <- sapply(paste0("x1_", 1:47, "~."), as.formula)

このaに対して、lmを実行すればよい。

> lapply(a, function(x){lm(x, data_1)})

ちなみに、multicoreパッケージを入れると、
> library(multicore)
> system.i lapply(a, function(x){lm(x, data_1)})
system.file system.time
> system.time(lapply(a, function(x){lm(x, data_1)}))
ユーザ システム 経過
0.398 0.001 0.399
> system.time(mclapply(a, function(x){lm(x, data_1)}))
ユーザ システム 経過
0.347 0.083 0.183
こんなに早くなる。

223:132人目の素数さん
14/02/10 20:09:54.63 .net
「> system.i lapply(a, function(x){lm(x, data_1)})
system.file system.time 」
↑ゴミが入ったorz

224:132人目の素数さん
14/02/11 00:00:16.50 .net
繰り返し分は使わなくて大丈夫です。
できました。ありがとうございました。
一括化とマルチコア化は勉強になりました。

225:132人目の素数さん
14/02/11 14:52:18.34 .net
商標とかそういうのじゃなくて、UNIXの精神を受け継いでいないよなMacは

226:132人目の素数さん
14/02/11 22:58:26.31 .net
Mac retina Pro 良いよ

227:132人目の素数さん
14/02/11 23:18:33.31 .net
>>218
じゃあ誰がUNIXの精神を引き継いでいるんだ?

アホはMacを使いこなせないだけ
ノータリンのミュージシャンでも
Macは使えるが、ちゃんとUNIXとして
使えば偽UNIX類とは別次元の完成度だな

228:132人目の素数さん
14/02/12 21:50:50.47 .net
Unixがアレだからなぁ。
マカーもずっとUnixの悪口言ってたのに
どの口でMacこそ本物のUNIXとか言ってるんだろう?

ほんとマカーは馬鹿だと思う。

229:132人目の素数さん
14/02/13 19:00:41.28 .net
windows Let's note
thinkpad
apple Mac ritena Pro

いろいろ便利だな~

230:132人目の素数さん
14/02/14 22:03:16.24 .net
【経営戦略】ビッグデータに死ねと言われた東急 山田祥平のRe:config.sys[14/02/14]
スレリンク(bizplus板)

Microsoftがとうとうきたかw
Power BI for Office 365でビッグデータ解析の民主化とはな

231:132人目の素数さん
14/02/14 23:39:53.27 .net
アホですな。そんな意見聞いてたら捏造コピペしまくるネトウヨの思うツボです。

232:132人目の素数さん
14/02/16 15:52:28.14 .net
plot3dで濃淡を指定ってできますかね?
scatterplot3dで図を作ったのですが動かせるようにしてくれと言われたので…

233:132人目の素数さん
14/02/16 16:55:53.07 .net
すいません。>>189をplot3dで濃淡表示したいのです。
ホームページを参考にして
color = rep( grey( c( length(Modern ):1 ) / length( Modern ) ) )
として
plot3d(x=l,y=a,z=b,col=color,size=8)としたら濃淡表示にはできるのですがmodernの数字と濃淡が一致しないのです…。
番号が小さいほど黒くしたいです。

234:132人目の素数さん
14/02/16 18:34:48.02 .net
>>226
濃淡(明度)と彩度と色相は独立なので、いまいち意味が分からないが、
君の言う「濃淡」とは、グレー階調のこと?
それなら、
grey(Modern / max(Modern))
とか、
grey(1 - Modern / max(Modern))
じゃないの?番号が小さい方を濃くしたいなら、前者か。

> color = rep( grey( c( length(Modern ):1 ) / length( Modern ) ) )
意味不明。特にrep()。
c( length(Modern ):1 )はc()を使う必要なし、( length(Modern ):1 ) でOK
> Modern <- sample(3, 10000000, TRUE)
> system.time(c( length(Modern ):1 ))
ユーザ システム 経過
0.154 0.052 0.359
> system.time(( length(Modern ):1 ))
ユーザ システム 経過
0.020 0.001 0.022
c()で激遅になる。

235:132人目の素数さん
14/02/16 18:50:03.22 .net
ありがとうございます。
R初心者で分厚い本とHPを参考にしながら只今奮闘中です^^;
右も左もわからない自分にとってここのサイトはとても助かります!!

236:132人目の素数さん
14/02/16 19:06:06.58 .net
連投すいません
グレー階調を行った場合一番高い数字は白になりますか?

237:132人目の素数さん
14/02/16 19:18:51.27 .net
>>229
> grey(1)
[1] "#FFFFFF"
> grey(0)
[1] "#000000"

1を代入したら白ですね

238:132人目の素数さん
14/02/16 19:25:01.37 .net
ありがとうございます。
なんとか白が見えるようにならないでしょうか?
背景色をかえれるかなと思ってコマンドを打ってみたのですが変わらなくて…
Modernの数値を変えたらいいのでしょうか?

239:132人目の素数さん
14/02/16 19:32:11.72 .net
背景色変えられました!
bg3dではなくbgと打ってました…

240:132人目の素数さん
14/02/21 17:50:49.16 .net
>>185
Emacs に不可能はない
C-c C-v b or C-c C-v C-b org-babel-execute-buffer

241:132人目の素数さん
14/02/22 14:58:46.83 .net
質問です。optimizeでパラメーターを求めたいのですがエラーが出てしまい、出来ません。

X<-c(1,2,3,4,5,6,7,8,9,12,13,24)

T<-length(X) #データ数
q<-3 #次数
eps<-X #diff(log(X))#収益率

ty<-function(alpha,omega){
for( t in 1:T){

alpha[1]
alpha[2]
alpha[3]
omega

for( j in 1:q ){
AA <- alpha[j]*eps[t+3-j]*eps[t+3-j] + AA
A<-(log(omega+AA)^2)*(-1/2)
print(eps[abs(t+3-j)])
}
}
}

optimize(c(2,1,2,3),ty, maximum=TRUE)

242:132人目の素数さん
14/02/22 15:50:55.18 .net
目的関数がよくわからん
何を最適化したいのかな
あとoptimizeは1変数じゃなかったっけ、optimのほうがいいかも
あとAAの初期値がいるかな

243:132人目の素数さん
14/02/22 16:03:21.43 .net
Aを目的関数にしてみた

X<-c(1,2,3,4,5,6,7,8,9,12,13,24)

T<-length(X) #データ数
q<-3 #次数
eps<-X #diff(log(X))#収益率
AA<-0 #initial

ty<-function(par){
for( t in 1:T){

alpha<-c(par[1],par[2],par[3])
omega<-par[4]

for( j in 1:q ){
AA <- alpha[j]*eps[t+3-j]*eps[t+3-j] + AA
A<-(log(omega+AA)^2)*(-1/2)
#print(eps[abs(t+3-j)])
return(A)
}
}
}
opt.Nelder<-optim(c(2,1,2,3),ty,control=list(fnscale=-1,maxit=200000,
trace=TRUE),method="Nelder-Mead")

opt.BFGS<-optim(c(2,1,2,3),ty,control=list(fnscale=-1,maxit=200000,
trace=TRUE),method="BFGS")

244:132人目の素数さん
14/02/22 16:06:35.40 .net
なんか変だな、ナシで

245:132人目の素数さん
14/02/22 16:11:09.60 .net
>>234
>AA <- alpha[j]*eps[t+3-j]*eps[t+3-j] + AA
これはepsの長さ超えるぞ

246:132人目の素数さん
14/02/23 02:23:09.17 .net
234です。皆様ご教授ありがとうございます。

>>235
目的関数はAAです。オメガ、アルファを求めたいです。
optimで実行した際にエラーが出てしまい、optimizeで実行しろと表示されてしまったため、optimizeを使っています。

やりたい事は、ARCHモデルの対数尤度関数を表示したく、練習として3次のARCHモデルの対数尤度関数に近いものを作りました。
>>234
確かにepsの長さが超えてますね。ご指摘ありがとうございます。
自己回帰なので過去の値に戻りたいのですが...勉強します。

247:132人目の素数さん
14/02/23 02:25:18.09 .net
>>234ではなく
>>238

248:132人目の素数さん
14/02/23 08:31:12.95 .net
受験勉強の合間に
息抜きで作業してるとMacBook Pro13インチが小さく感じるな・・・
15インチかiMac 2□インチが必要な気が・・・

249:132人目の素数さん
14/02/23 08:38:03.42 .net
老眼か?
いったい何浪してるんだよ

250:132人目の素数さん
14/02/24 06:16:12.29 .net
>>242 勘弁してよ~

251:132人目の素数さん
14/02/25 17:06:50.33 .net
質問です。
optim関数を実行した際に、「


252:初期パラメータで関数を表示出来ません」とエラーが出てしまいます。 関数の式は間違ってないと思うのですが、原因がわからないため、ご教授お願いいたします。 コードはこちらです。 sai <- function(x) { T<-length(x); q<-3; eps<-diff(log(x)) ts.plot(eps) Mean <- mean(x); Var <- var(x); S = 1e-6 parm <- c(0.1,0.1*Var ) archsai<-function(par){ for( t in 2:T){ alpha<-c(par[1]) omega<-par[2]  if(t<=1){ htt<-omega }else { htt <- (omega+alpha[1]*eps[t-1]^2) ht <- sqrt(htt) A <- -(log(htt))^2*(1/2) B <- -(((eps[t])^2)/htt)*(1/2) ln <- A+B   } } return(ln) } optim(parm,archsai,control = list(fnscale=-1) ) }



253:132人目の素数さん
14/02/25 21:18:55.66 .net
>>244
この前の人かな?xは前のXでいいのかな?

>B <- -(((eps[t])^2)/htt)*(1/2)
ここt-1じゃないのか

254:132人目の素数さん
14/02/25 21:32:07.00 .net
>>245
そうです。236の際はお世話になりました。
xは前のXで大丈夫です。

ありがとうございます。無事に出来ました。

255:132人目の素数さん
14/02/25 21:34:35.44 .net
236ではなく、234ですね。

256:132人目の素数さん
14/02/25 21:36:48.35 .net
>>246
そうかそうか。一応言っておくけどhttが負になってsqrt()でwarnings()出てるよ
何か制約条件があれば追加したほうがいいかな

257:132人目の素数さん
14/02/25 22:29:08.17 .net
>>248

ご丁寧にありがとうございます。
条件つける事で無事解決しました。

258:132人目の素数さん
14/02/25 22:57:04.23 .net
明日の16時39分頃に気をつけて下さい。
日本にも世界にも巨大地震が起きませんように。
皆さんも一緒に祈って下さい。

太陽フレアのXが発生しました。
太陽黒点数の100越えが24日間継続しているようです。

259:132人目の素数さん
14/03/12 20:18:06.86 .net
library(foreign)
yield <- read.dta("URLリンク(www.stata-press.com))
tx <- with(yield, interaction(fertilizer, irrigation))
amod <- aov(yield ~ tx, data=yield)
library(agricolae)
HSD.test(amod, "tx", group=TRUE)

これをちゃんと動作させることって出来ますか?結果が出てきません。どこかミスしているんでしょうか?
ちなみにyield.dtaは表です。

260:132人目の素数さん
14/03/13 09:31:48.35 .net
>>251
動作しないとは具体的にどういうこと?
> HSD.test(amod, "tx", group=TRUE, console = TRUE)

Study: amod ~ "tx"

HSD Test for yield

Mean Square Error: 24.93463

tx, means

yield std r Min Max
1.0 36.91257 5.335857 20 25.54710 46.60105
[snip]
5.1 44.55313 4.663802 20 31.20605 51.55704

alpha: 0.05 ; Df Error: 190
Critical Value of Studentized Range: 4.527912

Honestly Significant Difference: 5.055736

Means with the same letter are not significantly different.

Groups, Treatments and means
a 2.1 51.18
ab 4.1 50.75
[snip]

261:132人目の素数さん
14/03/13 18:35:25.07 .net
pre_vecB<- c(1,2,3,4,0)
#pre_vecB<- c(0,0)
out_vecB<-mean(pre_vecB[pre_vecB!=0])

0があれば、0を除いて平均を求める。
0しかなければ、NAを返す。(NAN)でない。
というスクリプトを書きたいのですが、スマートな書き方ありますでしょうか?

262:132人目の素数さん
14/03/13 19:36:48.92 .net
>>253
スマートかどうか分からんが、自分ならこうする。
ifelse(is.nan(a <- mean(pre_vecB[pre_vecB != 0])), NA, a)

263:132人目の素数さん
14/03/13 19:42:46.86 .net
>>252
ありがとうございます。結果が表示されるようになりました。ってconsole=TRUEが抜けてただけでした。
申し訳ありませんでした。R初心者にも門戸を開いて頂きありがとうございました。
私は分散分析、回帰分析がRで出来るようになれればなーと思っているところです。
SPSSからの移行です。頑張って精進します。

264:132人目の素数さん
14/03/14 22:43:43.25 .net
>>254
ありがとうございました。参考にさせてください。

265:132人目の素数さん
14/03/15 17:52:29.30 .net
均一分散の仮定をせずにWhiteの推定量で回帰するにはどうしたらいいの?
普通にlmじゃ無理?

266:132人目の素数さん
14/03/15 18:09:43.39 .net
>>257
> RSiteSearch("heteroscedasticity white")
これでcarパッケージのhccm関数やrmsパッケージのrobcov関数にたどり着くよ

267:132人目の素数さん
14/03/20 19:50:08.95 .net
> x<- seq(1,20,2)
> x
[1] 1 3 5 7 9 11 13 15 17 19

こういったベクトルがあって、このベクトルの後ろからN個の要素
を抜き出したいです。

Nが4なら
13 15 17 19
と返したいです。どのように書けばよろしいでしょうか?

268:132人目の素数さん
14/03/20 21:15:45.46 .net
tail(x,4)

269:132人目の素数さん
14/03/21 22:49:16.51 .net
>>260
ありがとうございます。そのまんまの関数ですね。
知らなかった。

270:132人目の素数さん
14/03/22 15:00:41.16 .net
0が含まれれば0を除外して平均を求める。0しかなければNAを返す。
というサンプルです。
これを実際に運用してみると、単に平均を求めるスクリプトに比べ大変時間が
掛かることに気づきました。
webで調べてみると、ifelse文を使うと遅くなるという記事をみかけます。
同じ意味で、早く稼働するスクリプトがありましたら教えてください。


#vecA<- c(0,0,0)
vecA<- c(1,3,0)
ifelse(is.nan(a<- mean(vecA[vecA!=0])),NA,a)

ifelse(is.na(b1<-median(pre_listB[pre_listB!=0])),0,b1)

271:132人目の素数さん
14/03/24 13:51:22.64 .net
あぁ、本当だねぇ。ifelseにするとifよりも遅くなるねぇ。
ifelseを提示したのは、そちらの方が分かりやすいと思ったから。
すまなかったねぇ。
> system.time(sapply(1:1000, function(x){vecA = c(1, 3, 0); ifelse(is.nan(a <- mean(vecA[vecA != 0])), NA, a)}))
ユーザ システム 経過
0.042 0.000 0.059
> system.time(sapply(1:1000, function(x){vecA = c(1, 3, 0); if(is.nan(a <- mean(vecA[vecA != 0]))){mean(a)}else{NA}}))
ユーザ システム 経過
0.023 0.000 0.029

272:132人目の素数さん
14/03/25 15:18:11.06 .net
>>263
ありがとうございます。ifelse文がわかりやすかったから大変勉強に
なりました。
実装データの量が多くてどうしたもんだかと悩んでたもので、
新たなスクリプト助かります。
自分は基本Cを書いてますが、Rの文が摩訶不思議に思えてしまいます。
system.time()の使い方も初めて知りました。ありがとうございました。

273:132人目の素数さん
14/03/25 17:43:35.11 .net
>>264
Cの人から見たらRは摩訶不思議かも知れないけど、
変態言語のPerlよりもずっとまし。

274:132人目の素数さん
14/03/26 23:24:54.38 .net
id <-c(1,2,3,4,5)
sex <-c("F","F","M","M","M")
height<- c(180,192,170,175,180)
weight<- c(50,65,60,55,70)
(MYDATA<- data.frame(ID= id, SEX= sex, HEIGHT= height))

上のようなデータフレームがあるとします。

ここでid=3の行データを以下のように変更(差し替え)したいとするとき、
ID = 3;
SEX = "F"
HEIGHT =150
WEIGHT =55

どう書けばいいでしょうか?

275:132人目の素数さん
14/03/27 09:58:04.57 .net
>>266
>(MYDATA<- data.frame(ID= id, SEX= sex, HEIGHT= height))
じゃなくて、
> (MYDATA<- data.frame(ID= id, SEX= sex, HEIGHT= height, WEIGHT = weight))
だよね。で、date.frameのrow向きの差し替えは、べたな方法しかないと思うよ。
どこかのパッケージに当該機能を有する便利な関数があるのかもしれないが。
> MYDATA[3, ] <- list(ID = 3, SEX = "F", HEIGHT = 150, WEIGHT = 55)
> MYDATA
ID SEX HEIGHT WEIGHT
1 1 F 180 50
2 2 F 192 65
3 3 F 150 55
4 4 M 175 55
5 5 M 180 70

276:267
14/03/27 10:10:01.03 .net
気になって試行錯誤をしたら、順番が正しければ変数名は省略できるようだ。
> MYDATA[3, ] <- list(3, "F", 150, 55)
ただし、変数名があってもなくても、順番を間違えると、期待通りの結果を得られないから要注意。
また、変更箇所が多ければ、edit()を使うことを勧める。
うちは、
> Sys.getenv("EDITOR")
[1] "vi"
だけど、使い慣れたテキストエディタを設定しておいた方がよいだろう。
viのキーバインドを知らなかったら、混乱すると思う。

277:132人目の素数さん
14/03/27 15:38:26.02 .net
>>267
ありがとうございます。WEIGHT忘れてました。
list()と、MYDATA[,]でデータフレームのリスト要素を変更できるの
ですね。
これを使えば、変更(差し替え)だけでなく、列を追加するのにも
同じやり方なので便利ですね。

edit()の使い方もありがとうございました。

278:132人目の素数さん
14/03/27 16:23:23.60 .net
>>269
お役に立ったようで、どうも。
行(row)や列(col)の追加は、もっと簡単でrbind()やcbind()を使います。

列の場合は
MYDATA$新変数 <- runif(5)
とかでも、MYDATAデータフレームの中に新しく「新変数」が作成されます。

# RjpwikiのQ&Aで質問が放置されていたので回答したけど、
# 河童さんはやっぱりggplotが嫌いなんだな。

279:132人目の素数さん
14/03/28 15:07:08.25 .net
普通のプログラムでは、0割するとクラッシュしてしまうから、
事前に0割を避ける条件文を作らなくてはいけないんだけど。
Rでは、Infが返ってくるだけなのだから、(クラッシュしない)
答を求めて、Infが出たときに対応の処理をさせてもいいですよね。

プログラムとして0割に対して特に対応しなくてもいいですかね。

280:132人目の素数さん
14/03/28 15:32:41.65 .net
>>271
そんなのプログラムによる話で、一般化できない。

281:132人目の素数さん
14/03/29 10:39:15.46 .net
>>271
まともな統計ソフトならみな対応してるよ

282:132人目の素数さん
14/03/29 11:28:09.36 .net
>>273
エ、エクセルとか(震え声)

283:132人目の素数さん
14/03/29 11:53:57.77 .net
Excelは表計算ソフトでしょ。
アドインは発注品だし、マイクロソフトは統計ソフト作っているわけじゃないし。
アドインの酷さは検索すれば出てくるよ。

284:132人目の素数さん
14/03/30 18:10:19.21 .net
Perlの小飼弾は天才
UCB

285:132人目の素数さん
14/03/31 13:39:43.19 .net
河童さんは関西人だったのか。
東京の人はチャーリー浜なんて知らないよね。

286:132人目の素数さん
14/04/02 07:56:27.99 .net
Mac版だと--interactiveという起動オプションがありますが、
Windows版だとこれではなく、変わりに--essという起動オプションがあります
この2つのオプションの挙動に何か違いはありますか?
VimShellの:VemShellInteractiveで呼んでいるのですが、現状違いはないように
思えて、オプション名が違う理由がよくわかりません

287:132人目の素数さん
14/04/02 08:50:54.70 .net
オプションが名が違うのは別のオプションだからです。以上。

288:132人目の素数さん
14/04/02 17:15:20.26 .net
>>278
>VimShell
初めて聞いた。便利そうだけど、所詮、ESSには勝てないと思う

289:132人目の素数さん
14/05/13 09:43:49.49 .net
>>281
スルー検定�


290:ヘ全員合格か。素晴らしい。 ExtraTrees法なら、extraTreesパッケージかな。



291:132人目の素数さん
14/05/15 01:39:45.15 .net
writewebGLで保存した図をパワーポイントに図として乗せたいのですが動かせる形でパワーポイント上に図として乗せるにはどうすればいいでしょうか?

292:132人目の素数さん
14/05/15 04:49:00.39 .net
Livewebってやつのpptアドインがあるみたいだけど上手く行かんな

293:132人目の素数さん
14/05/18 12:35:30.99 .net
グラフをアスキーアートで書くとか
フレームバッファに書くとか
できますか?

294:132人目の素数さん
14/07/07 23:56:58.21 +w/piBrtZ
初心者です。
例えば、次のような構文をRで繰り返し文などを使って
短くするやり方が知りたいです。

x1<-test[c(1:100),c(2),]
x2<-test[c(1:100),c(3),]
x3<-test[c(1:100),c(4),]
     :
     :
x100<-test[c(1:100),c(101),]
わかる人いたら教えてもらえればありがたいです。

295:132人目の素数さん
14/07/10 01:22:22.72 .net
ThreeWayパッケージのT3って三相因子分析のことなのでしょうか?

296:132人目の素数さん
14/07/10 11:45:59.03 .net
>>286
何でマニュアルを読まないの?
T3: Interactive Tucker3 analysis
Description: Detects the underlying structure of a three-way array according to the Tucker3 (T3) model.

とりあえず、下記を読んだら?
P. Giordani, H.A.L. Kiers, M.A. Del Ferraro (2014). Three-way component analysis using the R
package ThreeWay. Journal of Statistical Software 57(7):1–23.

L.R Tucker (1966). Some mathematical notes on three-mode factor analysis.
Psychometrika 31:279–311

297:132人目の素数さん
14/07/10 12:37:38.03 .net
ありがとうございます。
PCAUSP(超行列の主成分分析?)でcomponentの数の決定を行うと思うのですがここでのcomponentはそれぞれのモード?の因子数を選択しているのでしょうか?
よろしくお願いします。

298:132人目の素数さん
14/07/10 21:38:56.05 .net
皆様は画像はpdfで出していますか?

299:132人目の素数さん
14/07/11 08:44:05.68 .net
アスキーアートでも出せますか?

300:132人目の素数さん
14/07/11 09:19:39.76 .net
なぜにアスキーアートにこだわるのか分からないけど
出せるかどうかということならあなたがそういう関数を自作すれば出せる
現状でそういう機能を持ったライブラリが存在するかということなら恐らく存在しない
理由はアスキーアートでは現実的な精度のグラフを書くことが難しいから

301:132人目の素数さん
14/07/11 09:23:59.91 .net
csoundっていうソフトでは出せますよ?
そのソフトが使っているライブラリーわかりますか?

302:132人目の素数さん
14/07/11 09:35:10.86 .net
ここはRのスレだからなぁ
そのソフトのスレに行って聞くといいんじゃないかなー

303:132人目の素数さん
14/07/11 09:49:47.17 .net
URLリンク(1.bp.blogspot.com)
この画像が証拠です。
csoundも何かのライブラリーを使って書いていると思うのでそのライブラリーを探してください。
そうしたらRのデータを出力すればこれができると思います。

304:132人目の素数さん
14/07/11 18:18:34.17 .net
>>289
LaTeX用に出力するときはpdfだけど、
普段使いには、X11()かquartz()でしょ。
なぜ、いちいち全てをpdfに出力しなくてはならないのだ。

>>290,292,294
aalibを入れて、Rから呼び出せばよいのでは?
色つきならlibcacaで。
仕事なら(対価を支払ってくれるなら)、
ここにデモコードを貼るけど、
そうではないなら自分で頑張れ。

305:132人目の素数さん
14/07/22 22:48:50.15 .net
>>33
これですが、自己解決しました。
setwd(readline())
パスコピペ
で、できます

306:132人目の素数さん
14/08/07 17:43:38.30 BlsuHsdRJ
>>285
自己解決しました。

307:132人目の素数さん
14/08/27 01:38:55.66 .net
機械学習のスレってどこの板にある?

308:132人目の素数さん
14/08/27 01:40:55.49 .net
>>298
自己解決しました。

309:132人目の素数さん
14/08/28 00:28:03.88 .net
>>292
linux なら

ldd `which csound`

でリンクしてるダイナミックライブラリの一覧表示できるよ。

310:132人目の素数さん
14/08/28 12:38:48.01 .net
>>300
そいつに触るなよ。
何を助言しても意味をなさないよ。

311:132人目の素数さん
14/08/28 19:43:48.09 .net
>>301
了解!

312:132人目の素数さん
14/09/08 23:10:31.20 .net
質問させてください。

Rにはすでにdatasetsが入っていて、すぐ解析出来ると聞いています。
いくつか試したいのですが、datasetsの名前や内容を紹介しているサイトはあっても、属性や変数の数などを記載しているサイトが見つかりません。

もしくは、datasetsの属性などを一覧表示できるコードがあると助かるのですが…

どなたかご助力いただけませんでしょうか?

313:132人目の素数さん
14/09/08 23:27:22.65 .net
>>303
R datasets
でネット検索するのが良いのでは?

datasetsパッケージのなかにはいってるものの一覧
URLリンク(stat.ethz.ch)

クリックすればデータの素性は英語だけど説明あるよ。

サイズはdimとかNROWとかNCOLとかheadとかを使えば簡単に調べれるよ。

datasetsのなかにはいってるものの一覧をループでまわしてこれらの関数をつかって調べたいものを表にするのは簡単だと思います。

だれかがまとめて表にしてくれてそうだから上の検索キーワードでもっと探したらありそう。

314:132人目の素数さん
14/09/09 00:07:42.25 .net
>>303
ヘルプをみるべし

315:132人目の素数さん
14/09/09 00:10:14.26 .net
>>304
丁寧にありがとう!
2chに書き込むの初めてだったから、きついこと言われると思ってヒヤヒヤしてたよ
原始的だけどdatasetsの名前をベクトルとして作って、headとかdimとかを使ってみる

R始めたばっかで右往左往しとるけど、先が見えてきて良かった

316:132人目の素数さん
14/09/09 00:14:05.67 .net
>>305
なんとか自動化出来ないかと思いまして…
一個一個手入力でもいいんですが、もしかしたらスマートな方法があるかと思い質問していまいました。すみません。

317:132人目の素数さん
14/09/09 00:30:31.35 .net
なにをどう自動化したいのかイマイチつかめないけどデータセット自体の説明なら
ヘルプをデータセット名で検索すれば項目の説明とか出てくるよという意味ですよ

318:132人目の素数さん
14/09/09 01:08:30.81 .net
>>308 さんを擁護したげよう。
俺が上の検索方法を書いたんだけど
あの画面ってヘルプ画面だし。

help.start()

でヘルプを起動するとブラウザがたちあがる。
パッケージにdatasetsがあるなら、パッケージを選択して datasets をみると
ほぼ同じの画面になる。(バージョンが異なってたら差があるかも。)

319:302
14/09/09 01:37:25.01 .net
お騒がせしてしまったようですみません。50個ほどのdatasetsについて、headやnrowとかを使ってdatasets名を手入力して調べてました。
str(AirPassengers),str(BJsales),...,
nrow(AirPassengers),str(BJsales),...

さすがにこれを全てのdatasetsについてやるのはしんどいので…
datasets名の手入力をなくす方法を模索してたわけですが…
どうも下記サイトに答えがあったようです。\\(.*\\)といった呪文があって、理解するのには時間かかりそうですがもうちょっと調べてみます。
URLリンク(qiita.com)

320:302
14/09/09 01:38:30.58 .net
すみません。誤植がありました。
お騒がせしてしまったようですみません。50個ほどのdatasetsについて、headやnrowとかを使ってdatasets名を手入力して調べてました。
str(AirPassengers),str(BJsales),...,
nrow(AirPassengers),nrow(BJsales),...

さすがにこれを全てのdatasetsについてやるのはしんどいので…
datasets名の手入力をなくす方法を模索してたわけですが…
どうも下記サイトに答えがあったようです。\\(.*\\)といった呪文があって、理解するのには時間かかりそうですがもうちょっと調べてみます。
URLリンク(qiita.com)

321:132人目の素数さん
14/09/09 02:22:11.83 .net
>>311
いいこと教えてくれてありがとう。

Itemをstrsplitで" "で区切って1番目の要素を名前にして

pasteとparseと命令を作成してevalしてやれば半自動で命令実行できる。

他の方法としては、csvファイルで保存してもっとテキスト処理が得意なRubyとかPerlとかPythonで処理して
Rで実行できる命令に整形するとか。

for ループでまわすと自動で str(..) NROW(...)を実行できるよ。
strじゃなくてcolnamesでデータの名前を取得した方が良いかも。

322:132人目の素数さん
14/09/09 06:50:00.06 .net
sapplyでよいのでは?

323:132人目の素数さん
14/09/09 07:32:42.83 .net
>>311
正規表現を「呪文」と表現すると言うことはITの基本的な知識が全くないに近い。
Rを使うのはこの先かなり大変かも。
学生なら情報処理入門のような講義を受けた方がよいかも。

324:302
14/09/09 11:36:26.39 .net
ご指摘の通り学生です。生物系の専攻ですが研究で必要になりました。
ひとまず基本情報技術者試験の本を見ながら知識を身につけてみます。

325:132人目の素数さん
14/09/09 15:04:20.46 .net
情報系の講義ははっきり言って無駄だ。
俺の経験からすると。
Youtubeのチュートリアルとか本家のサイトとか
正規表現なら「正規表現 入門」とか「正規表現 最速マスター」とかでヒットしたサイトで勉強した方がよい。
大学の講義って自分のペースにあってないし終るまで半年とかかかるし効率悪すぎる。

326:132人目の素数さん
14/09/09 15:06:05.11 .net
よっぽど評判良いなら受講しても良いとは思うけど
先生とか内容によるから。
Rの講座とかあるなら受けてみる価値はあるかもしれないけど。
正規表現って理系の研究室あまり重視してないっぽいしな
数値計算とかを重視してそう。

情報の基礎講座うけてうんざりした記憶がある。

327:132人目の素数さん
14/09/09 15:09:56.22 .net
重視してないもなにも、適当にマニュアル読んで分からないなら死ねっていう扱いなだけだろ
当然そうだわな

328:132人目の素数さん
14/09/09 16:43:00.21 .net
マニュアルなんぞ
必要箇所以外読まんだろ。

機能確認したら俺の環境だとhelp.start()でブラウザたちあげて
datasetsのhtmlページみれなくなってた。
これって異常?

329:132人目の素数さん
14/09/09 21:44:33.06 .net
>>319
異常だよ。
> library(help = "datasets")
はちゃんと出力される?

330:132人目の素数さん
14/09/10 00:14:13.44 .net
>>320
回答ありがとう。

library(help = "datasets")
は表示されるけど

help.start() してパッケージのdatasetsをみると以下の
文字がブラウザに表示されてる。

No package index found for package datasets

なんでだろ?
ローカルに install.packages()で入れたパッケージのヘルプは見れるんだけどな。
root権限でインストールしたパッケージのヘルプが見れなくなってる。
baseパッケージヘルプもブラウザでみれない。

library(help=base)

はちゃんと表示されるんだけど。
設定がちゃんとできてないのかな?

331:132人目の素数さん
14/09/10 00:25:12.38 .net
原因わかりました。
パッケージを入れないとそれらのパッケージのhtmlファイルがはいってないみたい。
Debian Linuxをつかってるんだけど。

r-base-html

ってパッケージを入れたら多分表示される。

332:132人目の素数さん
14/09/10 00:27:51.48 .net
いま入れてみたそのパッケージ。
ちゃんと表示されるようになりました。
いつもネット検索して調べて�


333:スから気付かなかった。



334:132人目の素数さん
14/09/28 22:34:11.15 .net
Rcmdrの使い方について分かりやすく解説されたサイトや成書はありますか?

335:132人目の素数さん
14/09/28 22:42:09.57 .net
>>324
群馬大学の大学院の研究室のサイトにあったよ
教授の名前忘れてもうた!・

336:132人目の素数さん
14/09/28 23:08:16.53 .net
>>324
「「R」 Commander ハンドブック」は? ちょっと古いけど

>>325
群馬大学なら青木先生だと思うけど

337:132人目の素数さん
14/09/29 00:11:16.55 .net
>>325
>>326
ありがとうございます!

338:132人目の素数さん
14/09/29 18:36:49.59 .net
Rcmdrなんて使うくらいならJSTATなり市販ソフト使えよ
Rは、中身わかんないけどとにかく結果だけ欲しい、って人向けじゃない

339:132人目の素数さん
14/09/29 20:29:26.25 .net
>>328
いやいや、誰もwelcomeだよ。
使いたい人が使えばいい。その自由がOSSのよさだよ。
中身は分からないけどとにかく「無料で」結果だけが欲しい人であっても。

Rcmdrを使いたい人は、Rcmdrを入り口にして、普通のRコンソールを使うようになればいい。

340:132人目の素数さん
14/09/30 03:01:32.77 .net
いいよそういう奇麗ごとは

341:132人目の素数さん
14/10/01 05:17:22.65 .net
数学的センス&多倍長プログラムを組める方望む
RSA Numbers 素因数分解に挑む・解析数式の考察
URLリンク(blog.livedoor.jp)

342:132人目の素数さん
14/10/02 22:04:00.84 .net
>>331
馬鹿が他人をタダ働きさせようとするブログにしか見えない。

343:132人目の素数さん
14/10/05 16:17:38.45 MmE0F3xV8
Revolution Rって使ってる人います?
学術用途(学割?)なら申請したら無料みたいなんだけど、登録フォーム書いた後返信メールが来ない・・・

344:132人目の素数さん
14/10/06 17:26:37.81 .net
dはデータフレームで、1列目(V1)にクラスを表わす文字列、他の列はその特徴量が入ってます
library(kernlab)で読み込んだ状態です
> set.seed(0)
> ksvm(V1~.,d)  (ここがksvm(d$V1~.,d)も同じ)

> set.seed(0)
> ksvm(d[,1]~.,d)
で結果が変わります。下の方は誤分類率0%となり不自然?で、正しいのは上のV1を使うほうなのでしょうが、なぜ結果が変わるのかがわかりません。
どなたか詳しい方教えてください

> str(d)
'data.frame': 512 obs. of 3 variables:
$ V1: Factor w/ 4 levels "a","b","c","d": 1 1 1 1 1 1 1 1 1 1 ...
$ V2: num 0 0 0 0 0 0 0 0 0 0 ...
$ V3: num 0 0 0 0 0 0 0 0 0 0 ...

345:132人目の素数さん
14/10/06 18:10:51.17 .net
kernlabは知らないけどlm()だと正しくformulaを渡せないね。

> formula(lm(V1 ~ ., d))
V1 ~ V2 + V3
> formula(lm(d$V1 ~ ., d))
d$V1 ~ V2 + V3
> formula(lm(d[,1] ~ ., d))
d[, 1] ~ V1 + V2 + V3

同じようなことになってるんじゃない?

346:132人目の素数さん
14/10/06 19:48:33.22 .net
>>335
formulaって関数は使えなくて実際にやってみられてないんですけど
その「V1 ~ V2 + V3」というのは、「クラスV2、V3を使って(dから)V1を予測しよう」という意味で、それをformulaに渡せているということですかね
URLリンク(d.hatena.ne.jp)
d[,1]~.でダメだったのは、d[,1]という定数を指定したために変数からV1を除外できていない(V1も予測するために使う変数として考えられていた)
予測する対象はd[,1]にV1読んだのと同様に順番・値がそろっていて、分類を予測するときはクラスそのものであるV1を使うので、誤分類率0%となってるわけですか

文が長くなってすみません。結構考えてたんですが、質問してみてよかったです。同時に、予兆はあったのに情けないです。
答えていただきありがとうございました。

347:132人目の素数さん
14/10/08 13:41:57.34 .net
ThreeWayパッケージのCP関数を実行した場合寄与率に当たる個所はどこになるのでしょうか。
よろしくお願いいたします。

348:132人目の素数さん
14/10/08 14:23:51.23 .net
連投すいません。
PCA of MEANを実行した際に固有値とfitが出てきたのでfitが累積寄与率になるのではないかと解釈しております。
この解釈で良いのでしょうか。
よろしくお願いいたします。

349:132人目の素数さん
14/10/09 02:19:56.75 .net
質問させてください。
例えば、100×100の行列のデータがあったとして、11から40列の各行の数字を掛け算した
1×100の行列を作成するにはどのように記述すれば宜しいでしょうか。

350:132人目の素数さん
14/10/09 03:09:36.05 .net
apply(A[,11:40],1,prod)
これでダメかな

351:132人目の素数さん
14/10/10 00:20:16.58 .net
>>340さん
ありがとうございました!

もう一つ質問なのですが、文字列を含むcsvファイルを読み込みました。
数字しか入っていない列も文字列として認識されてしまっているのですが、
数字しか入っていない列を切り取って、これを数字形式に変換するにはどうすればよいでしょうか。

352:338
14/10/10 00:33:16.71 .net
as.numeric(a$b)
でどうかしらん?

あとはリード.シーエスヴィーのオプションをちゃんとしていする方法もあるわよん

353:132人目の素数さん
14/10/10 00:46:11.72 .net
>>342さん

ありがとうございます。
が、初心者なので具体的にどうすればよいかまだ分かりません。
例えばread.csvのオプションは銅のように設定すればよいのでしょうか。

354:132人目の素数さん
14/10/10 01:25:24.12 .net
>>341
>数字しか入っていない列も文字列として認識され
数字以外のものが混入しているパターンとエスパー
例えば、半角空白は文字であって数字ではない。
表計算ソフトじゃ無くてテキストエディタでcsvの中を確認しては?

355:342
14/10/10 01:45:15.16 .net
追記。
例えば、
$ echo -e "x1,x2¥n11,A¥n22,B¥n' ',C¥n33,D" > test.csv
$ cat test.csv
x1,x2
11,A
22,B
' ',C
33,D
というcsvファイルがあったとして、
> read.csv("test.csv")
x1 x2
1 11 A
2 22 B
3 ' ' C
4 33 D
> class(read.csv("test.csv")$x1)
[1] "factor"
というように、数値型にならずに因子型になる。
表計算ソフトではx1の3番目は空白なので見えない。

356:132人目の素数さん
14/10/10 02:04:46.33 .net
再現できるcsvくれ

357:132人目の素数さん
14/10/10 10:54:24.22 .net
>>338
どうもPCA pf MEANは2相の主成分分析の様です。
CPfuncで計算されるfitにあたるものが累積寄与率にあたるものなのでしょうか?

358:132人目の素数さん
14/10/11 21:18:27.38 .net
質問です。データフレームの列名の一部を変更したいのですがどのように操作すれば宜しいでしょうか。
よろしくお願いします。

359:132人目の素数さん
14/10/11 21:28:06.62 .net
>>348
> (dat <- data.frame(x = 1:3, y = month.name[1:3], z = LETTERS[1:3]))
x y z
1 1 January A
2 2 February B
3 3 March C
というデータフレームがあったとして、
yをhogeに替えるなら、
> names(dat)[2] <- "hoge"
> dat
x hoge z
1 1 January A
2 2 February B
3 3 March C
例では1つの列名だけだが、もちろん、複数の列名を同時に替えることもできる。

360:132人目の素数さん
14/10/12 09:52:52.95 .net
>>349さん
ありがとうございます!

もう一つ質問させてください。
例えば以下のようなデータフレームがあったとします。
data1、data2、data3、・・・

下の繰り返し処理の中で、ループの中でdata1、data2、・・・のデータフレーム
を読み込みたいのですが、どのように記述すればよいのでしょうか。

#for (i in 1:5) {



361: } 下記のように記述したのですがうまくいきませんでした。 (pastedateにはdata1という名前のデータが入ってしまい、以前に入ってたデータは消えてしまっているようです。) pastedate <- paste("data",i,", sep = "") sumdata<-rbind(XXXXX,pastedate) よろしくお願いします。



362:132人目の素数さん
14/10/12 10:51:17.99 .net
>>350
いまいち状況が分からない。
data1, data2, ...をファイルから読み込みたいのか、
それとも、単に既存のデータフレーム(data1, data2, ...)をrbindで連結したいのか。

後者なら、
> data1 <- data2 <- data3 <- data.frame(x = runif(3))
というデータフレームがあったとして、
> alldata <- lapply(paste0("data", 1:3), get)
という感じでリスト化して、
> Reduce(rbind, alldata)
とすれば結合できる。
他にも、いろいろな連結方法があると思うけど、
自分は、シリーズになっているデータフレームは常にリスト化して運用するので、
do.call()やReduce()で連結している。

363:132人目の素数さん
14/10/13 19:28:38.06 .net
## S4 method for signature 'formula'
ksvm(x, data = NULL, ..., subset, na.action = na.omit, scaled = TRUE)

ってヘルプに書いてあったのに、xがformulaのときここに出てない引数を使えるんですけどどうしてですか?
一つ和訳がわからなかったのですが、...(説明:additional parameters for the low level fitting function)が関係あるんでしょうか

364:132人目の素数さん
14/10/13 22:19:35.86 .net
>>352
引数「...」は下請け関数にそのまま渡す引数。
kvsm()は直接使わないけど、
下請け関数が使う引数を指定できますよという意味。
もし「...」がなければ、kvsm()が指定した引数以外を指定するとエラーになる。
例えば、
> f <- function(x = 1){return(x)}
という関数を定義して実行すると、
> f()
[1] 1
となるが、x以外を指定するとエラーになる。
> f(y = 2)
以下にエラー f(y = 2) : 使われていない引数 (y = 2)

でも「...」を追加するとエラーにならない。
> f <- function(x = 1, ...){return(x)}
> f(y = 2)
[1] 1

365:132人目の素数さん
14/10/14 00:34:29.21 .net
>>353
なるほど。
たとえば
「ksvm(x,data=y,cross=n)」→分析結果(分類法、誤分類率、n重交差確認法による誤分類率)
 (「ksvm(x,data=y)」(xはyの列の内クラスを表わす列を指す)→分析結果(分類法、誤分類率))
というようにヘルプの形式に明示してないけど使えたcrossは、総称的関数ksvmからこの時呼ばれた下請け関数に渡され、使われたのですね
すっきりしましたありがとう!

366:132人目の素数さん
14/10/14 23:54:05.52 .net
テキストファイルから、Rのデータフレームに格納することを考えています。

例えば2014年10月10日の血液検査のデータが
WBC 4900, RBC 470, Plt 47.3, ALT 32, CRP 7.2, AdV -, Ur.WBC 3+
このようなテキストデータで与えられたとします。
これを読み込んでデータフレームに次のように格納するにはどのようにすればよいでしょうか。
data.frame(20141010, WBC)=4900, data.frame(20141010, RBC)=470, .........
Rだけでやるより、ほかの言語で読み込んで、Rに渡す方がいいでしょうか。
その後で、そのデータフレームからopen office calcのworksheetの相当するセルに値を入れることを考えています。そこはR4Calcでできるかと考えているのですが。アドバイスお願いし

367:132人目の素数さん
14/10/15 01:33:53.41 .net
>>355
お、同業者が来た。

そのままcsvとして読み込んで、データを分離しちゃえば?
2行のtmp.csvがあったとして、
> (a <- read.csv("/tmp/tmp.csv", header = FALSE))
V1 V2 V3 V4 V5 V6 V7
1 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
2 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
とdata.frameにする。変な空白が混入したので前処理。空白が混入しなければ不要。
> library(stringr)
> (b <- t(apply(a, 1, str_trim)))
V1 V2 V3 V4 V5 V6 V7
[1,] "WBC 4900" "RBC 470" "Plt 47.3" "ALT 32" "CRP 7.2" "AdV -" "Ur.WBC 3+"
[2,] "WBC 4900" "RBC 470" "Plt 47.3" "ALT 32" "CRP 7.2" "AdV -" "Ur.WBC 3+"
さて、次にstrsplit()で分離して、必要なところだけを回収する。
> sapply(apply(b, 2, strsplit, split = " "), function(x){sapply(x, function(y){y[2]})})
V1 V2 V3 V4 V5 V6 V7
[1,] "4900" "470" "47.3" "32" "7.2" "-" "3+"
[2,] "4900" "470" "47.3" "32" "7.2" "-" "3+"

368:354
14/10/15 01:43:41.07 .net
read.csv()のstrip.whiteオプションの存在を忘れていた。
これを指定すれば前処理は不要。
> (a <- read.csv("tmp.csv", header = FALSE, strip.white = TRUE))
V1 V2 V3 V4 V5 V6 V7
1 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
2 WBC 4900 RBC 470 Plt 47.3 ALT 32 CRP 7.2 AdV - Ur.WBC 3+
> (b <- sapply(apply(a, 2, strsplit, split = " "), function(x){sapply(x, function(y){y[2]})}))
V1 V2 V3 V4 V5 V6 V7
[1,] "4900" "470" "47.3" "32" "7.2" "-" "3+"
[2,] "4900" "470" "47.3" "32" "7.2" "-" "3+"
> b <- data.frame(b)
> names(b) <- c("WBC", "RBC", "Plt", "ALT", "CRP", "AdV", "Ur.WBC")
> b
WBC RBC Plt ALT CRP AdV Ur.WBC
1 4900 470 47.3 32 7.2 - 3+
2 4900 470 47.3 32 7.2 - 3+

369:132人目の素数さん
14/10/15 10:12:33.01 .net
追記。いまいち意図がくみ取れないけど、
「20141010」は行名ということかな。
そして、「WBC 4900, RBC 470, Plt 47.3, ALT 32, CRP 7.2, AdV -, Ur.WBC 3+」は2014年10月10日のデータで、
次のデータ行は2014年10月11日だったりするのかな?
それなら、2014年10月10日と翌日のデータが入ったtmp.csvがあったとして、
> a <- read.csv("tmp.csv", header = FALSE, strip.white = TRUE)
> b <- sapply(apply(a, 2, strsplit, split = " "), function(x){sapply(x, function(y){y[2]})})
> b <- data.frame(b, row.names = seq(20141010, length.out = nrow(b)))
> names(b) <- c("WBC", "RBC", "Plt", "ALT", "CRP", "AdV", "Ur.WBC")
> b
WBC RBC Plt ALT CRP AdV Ur.WBC
20141010 4900 470 47.3 32 7.2 - 3+
20141011 4900 470 47.3 32 7.2 - 3+

こんな感じかな。

370:132人目の素数さん
14/10/16 21:16:18.81 .net
356さん

有難うございます。
apply関数の使い方をべんきょうしてみます。
また質問させてください。

371:132人目の素数さん
14/10/19 01:06:21.07 .net
RをUSBにインストールしたいんですが
一応あるブログを参考にインストールできたのですが
パッケージをインストールしたさいにUSBに保存されないのはどうしたらいいでしょうか?

372:132人目の素数さん
14/10/19 04:47:02.51 .net
>>360
パッケージのインストール先をUSBに指定すればいいと思うよ

373:132人目の素数さん
14/10/19 12:40:27.56 .net
>>361
それはどうしたら指定できますか?
パッケージをインストールすると
ダウンロードされたパッケージは、以下にあります
C:\Users\NEC-PCuser\AppData\Local\Temp\Rtmpgdg0TT\downloaded_packages

と表示されるのでUSBに保存されていないようです

374:132人目の素数さん
14/10/19 21:13:07.40 .net
>>362
>それはどうしたら指定できますか?
いろいろな方法があるけど、
とりあえずは、install.pacakges()のlibオプションでインストール先を指定すればどうだい?
見たところ、Windows? USBブータブルなLinuxの話じゃ無かったの?
「あるブログ」とか話をぼかさずにちゃんと伝わるように説明しようよ。
Windowsのパスの仕組みはよく知らないけど、例えば、DとかEとかなら、
> install.packages(c("hoge", "fuga"), lib = "D:/library", dependencies = TRUE)
とか。Windowsのパス表記が間違っていたらすまん。
Windowsのパス区切り記号は変態的だから、normalizePath()とかで正常化してやる必要があるかも。
逐次的に指定するのではなく、恒久的にパッケージのインストール先をUSBにしたいなら、
$HOME/.Rprofile に「.libParhs(USB内のインストール先)」を書いておく。
install.packages()のlibオプションが省略された場合、.libPaths()の最初の要素が使われるので、
それをR起動時に設定してしまうという方法。

375:132人目の素数さん
14/10/19 23:13:16.92 .net
あるブログはこれです
URLリンク(d.hatena.ne.jp)

パッケージは常にUSB内のR/R-3.1.1の中に保存されるようにしたいです
パッケージだけでなくRに関するすべてのファイルをUSB内に保存できるようにしたいです

376:132人目の素数さん
14/10/20 00:31:14.89 .net
>>364
install.packages()でlibを指定し�


377:ト、ちゃんとUSB内にインストールされるのことは確認したの? また、そのブログには環境変数R_LIBSをちゃんと設定するように書いてあるけど。 | 環境変数R_LIBSを設定することで、追加したライブラリがUSBメモリ内に | インストールされるようにする ドライブレターが毎度変わるから、R起動前にカレントディレクトリを変更して、 R_LIBSをフルパスではなく相対パスにするのはさすがだ思った。 ブログに書いてある通りに、バージョンを読み替えながら設定したら、 うまくいきそうなんだけどなぁ。 私は、Winodwsユーザじゃないので、Rの話ではないWindows操作の話なら、 他の方にパス。



378:132人目の素数さん
14/10/20 09:10:02.77 .net
なにも設定してないと自分のホームディレクトリのRのディレクトリ内にパッケージがインストールされるはずだけど。
LinuxならそれをシンボリックリンクでUSBのところにして上手くUSBのところに保存されるようにするとか
mount --bind
してやれば希望の動作になりそうな気がするけどな。

379:132人目の素数さん
14/10/20 09:35:40.16 .net
>>366
仕様が変わったの?
ホームディレクトリにRのディレクトリを作らなければ、システム側にインストールされるはずだけど。
ホームディレクトリに、Rのディレクトリが存在する場合は、そちらが優先されるらしいが。
RStudioとかは、ホームディレクトリ内にRのディレクトリを勝手に掘っちゃうので迷惑する。

380:132人目の素数さん
14/10/20 14:04:45.85 .net
>>367
ユーザでinstall.package("hogehoge")
したら普通に自分のホームディレクトリにRを作ってその中にさらにディレクトリ、その中にインストールしてくるけどな。
それをmount --bind であらかじめusbの該当のディレクトリに繋げとけば楽だと思うけどな。

381:132人目の素数さん
14/10/20 15:04:48.08 .net
>>368
新ユーザを作成して試してみた。
$ R --vanilla
[snip]
> install.packages("A3")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
install.packages("A3") 中で警告がありました:
'lib = "/usr/local/lib/R/site-library"' は書き込み可能ではありません
Would you like to use a personal library instead? (y/n) n
以下にエラー install.packages("A3") :
パッケージをインストール出来ませんでした

以上により、.libPaths()[1]は、
ホームディレクトリのRディレクトリではなく、
/usr/local/lib/R/site-library であることが確認できた訳だけど、
「personal libraryを作る」に y と回答すれば、
確かに勝手にディレクトリを掘りそうだな。
拒否すれば勝手なことはされないけど。
拒否せずに許可するのが「普通」であれば、>>368 は正しいな。

$HOMEを汚されたくない人 (system-wideにしたい人)は、
/usr/local/lib/R/site-libraryにsetgidが立っているから、
このグループに自分のユーザ名を追加することだね。

382:132人目の素数さん
14/10/20 15:23:14.73 .net
>>369
Linuxならシンボリックリンクはっとくとか
mount --bindしとけば汚れないよ。

383:132人目の素数さん
14/10/20 15:37:36.61 .net
>>370
「Linuxなら」とか、元質問者であるWindowsユーザを置いてけぼり

384:132人目の素数さん
14/10/20 17:50:22.09 .net
はよWindows消してLinuxとかBSDにしてしまえ!
そうすれば寿命伸びるよPCの。
無理してバージョンアップで肥大化するOSのためにハードを強化する必要なくなるし。

385:132人目の素数さん
14/10/20 18:05:27.32 .net
話題がズレてるし

386:132人目の素数さん
14/10/21 13:38:03.44 .net
362です
R_LIBS=の後にインストール先を入力すればいいってことですか?

387:132人目の素数さん
14/10/21 13:57:37.01 .net
>>374
その方法も正しいです。
ただし、USBだと、ドライブレターがころころ変わるので、
インストール先を設定するのが難しく、
そこを乗り越える必要があります。
どうやって乗り越えるのか、その一例が、あなたが示したブログに書かれています。

念のために、申し添えますが、R_LIBSはOSの環境変数です。



388:i出来なくはないけど)Rの操作によって設定するものではありません。



389:132人目の素数さん
14/10/21 20:46:25.64 .net
>>374
消せるディレクトリを指定して容量の少ないパッケージをインストールしてみたら話はやいんだよ。
それでどういうディレクトリ掘られるかわかるでしょ。
あとはインストールしたいディレクトに微調整すればOK。

Linuxなら上に書いたようにmount --bindとかシンボリックリンクでいけるけど
Windowsにはそういうの無いの?

390:132人目の素数さん
14/10/22 09:43:07.07 .net
R言語に興味をもったので
Debian GNU Linuxにインストールしようと思っているのですが、
軽量なバイナリラッパーなるlittlerというパッケージを見つけました。
URLリンク(packages.debian.org)
この解説文を読んでもいまいちよく分からない(汗)
「環境無しの R 言語」っていったい......

391:132人目の素数さん
14/10/22 10:15:09.81 .net
>>377
Rじゃないrは便利ですよ。
bcで十分と考える人には必要ないですが、
例えば、sin(10)っていくつだったけと思ったとき、
$ echo 'print(sin(10))' |r
[1] -0.5440211
とすれば、Rを起動してなくても即座に結果を得ることが出来る。

また、統計的検定なら、
A群(145/300)とB群(157/250)の比率の差を検定するとき、
わざわざRを起動しなくても、rに流し込めばその場で結果を得ることが出来る。
$ echo 'print(prop.test(c(145, 157), c(300,250)))' |r

2-sample test for equality of proportions with continuity correction

data: c(145, 157) out of c(300, 250)
X-squared = 10.9497, df = 1, p-value = 0.0009362
alternative hypothesis: two.sided
95 percent confidence interval:
-0.23071879 -0.05861454
sample estimates:
prop 1 prop 2
0.4833333 0.6280000

392:132人目の素数さん
14/10/22 14:56:44.89 .net
>>377
実行ファイルとして

/usr/bin/r

がイストールされるみたい。

シェルスクリプトのように

#!/usr/bin/r

ではじまる ファイルでRのコマンドが実行できるみたい。

俺もインストールした知らなかったありがとう。

>>378 さんの使い方も参考になった。

インストールして以下で内容物確認

dpkg -L littler

あとは

man r

読むとわかりやすいよ。

393:132人目の素数さん
14/10/22 16:55:55.04 .net
>>379
スクリプト言語として使うなら、
littlerよりも、
#!/usr/bin/Rscript
の方がよいとどこかで読んだ気がする。

394:132人目の素数さん
14/10/22 18:47:04.91 .net
>>380
情報サンクス。
その理由覚えてる?

395:132人目の素数さん 転載せんといてや ©2ch.net
14/10/22 18:53:32.32 .net


396:132人目の素数さん
14/10/22 19:49:15.42 .net
3次元ヒストグラムを書いたプログラム例などありませんでしょうか?

397:132人目の素数さん
14/10/22 19:53:36.88 .net
>>383
3次元というのは、3変量という意味か、2変量で立体的にしたヒストグラムか、
どんなものをイメージしているの?

398:132人目の素数さん
14/10/22 21:02:55.71 .net
>>384
レスありがとうございます
2変量?でしょうか?
x,yの値があって、z軸に頻度分布、のような。
ありますでしょうか?

399:132人目の素数さん
14/10/23 09:49:48.69 .net
>>385
なるほど。では、手作業でやるとこんな感じかな。自分で関数化して使って。
> d <- data.frame(x1 = rnorm(100), x2 = rnorm(100))
というデータがあったとして、
> h1 <- hist(d$x1, plot = FALSE)
> h2 <- hist(d$x2, plot = FALSE)
> c1 <- cut(d$x1, h1$breaks, right = FALSE)
> c2 <- cut(d$x2, h2$breaks, right = FALSE)
> table(c1, c2)
c2
c1 [-4,-3) [-3,-2) [-2,-1) [-1,0) [0,1) [1,2) [2,3)
[-3,-2.5) 0 0 0 0 1 0 0
[-2.5,-2) 0 0 0 1 1 1 1
[-2,-1.5) 0 0 0 1 3 1 0
[-1.5,-1) 0 1 0 2 2 0 0
[-1,-0.5) 0 0 3 4 8 2 0
[-0.5,0) 1 0 2 10 5 0 1
[0,0.5) 0 0 2 2 12 1 0
[0.5,1) 0 0 3 6 6 0 0
[1,1.5) 0 0 0 4 4 1 0
[1.5,2) 0 0 1 1 1 3 0
[2,2.5) 0 0 0 0 1 0 0
[2.5,3) 0 0 0 0 1 0 0
と2次元の度数分布表が作成できるから、scatterplot3dパッケージでプロット。
> library(scatterplot3d)
> scatterplot3d(as.data.frame(table(c1, c2)), type="h", lwd=5, pch=" ")
期待したのと違うなら、もっと具体的に説明して。

400:132人目の素数さん
14/10/24 00:35:10.19 .net
>>386
ありがとうございます。
まさに、これです。大変助かりました。
いただいたサンプル利用させていただきます。
ありがとうございました。

401:132人目の素数さん
14/11/01 13:07:52.20 .net
R 3.1.2 来た!
Win用バイナリはあるけど、MacOSX用バイナリはまだない。
Ubuntu PPAにも来ていない。Debianもまだ。

402:132人目の素数さん
14/11/01 13:14:46.47 .net
自分確認すべきだけど大きな変更あった?
便利になる機能ある?
バグフィックスがメインかな?

403:132人目の素数さん
14/11/01 14:14:04.49 .net
>>389
OS XでCLIのRを使っている人はXQuartzがらみで要確認だけど、
Yosemite対応もしているみたいだし、それほど変更点はなさそう。
WindowsのR.exeは64bit固定になったみたいだが、関係ないので読み飛ばした。
個人的に注目したのはembedFonts()のformat引数の値が、
今までNULLだったけど"ps2write"に変わったことぐらい。

404:132人目の素数さん
14/11/01 14:34:26.67 .net
なんだかんだ言っている間に、OS X版バイナリが来た。
でも、Snow Leopard版とMarvericks版のみ

405:132人目の素数さん
14/11/01 18:25:44.30 .net
>>390
情報ありがとう。

406:132人目の素数さん
14/11/01 21:28:02.43 .net
Macおじさん多いんだね

407:132人目の素数さん
14/11/02 10:26:48.46 .net
Linux Debian Sidだとすでに3.1.2のパッケージ昨日の段階で供給されてたみたい。
今確認したら3.1.2になってた。

408:132人目の素数さん
14/11/14 13:20:33.78 .net
plot()の技術的な質問失礼します

plot(iris$Sepal.Width, iris$Sepal.Length, col=c(2,3,4)[iris$Species])
のように記述すれば質的変数で点の色分けが出来ますが、
x種はy色、と明示的に記述する方法などありますか?

(質的変数の名前順を確認して色を割り振る、最初に質的変数毎に分けておいてpointsする、などで
簡単に実現できるので絶対必要というわけではありませんが、何か簡単な書き様があるのではと気になっています)

409:132人目の素数さん
14/11/14 14:27:53.65 .net
>>395
せっかく簡単に色指定できるようにRで工夫されているのに、
いちいちx種はy色とか個別に指定すると逆に面倒な気がするが、
次のようにすれば、x種はy色と指定できる。

> cols <- character(nrow(iris))
> cols <- NA
> cols[iris$Species == "setosa"] <- "orange4"
> cols[iris$Species == "versicolor"] <- "violetred"
> cols[iris$Species == "virginica"] <- "tan4"
> plot(iris$Sepal.Width, iris$Sepal.Length, col = cols)

410:394
14/11/14 14:50:16.66 .net
別解として、事前に色対応のデータフレームを作成しているとすると、
次のような感じ。
> (col.table <- data.frame(Species = c("setosa", "versicolor", "virginica"), cols = c("orange4", "violetred", "tan4")))
Species cols
1 setosa


411: orange4 2 versicolor violetred 3 virginica tan4 という対応テーブル(データフレーム)が事前にあったとして、 > iris2 <- merge(iris, col.table, x.all = TRUE) > with(iris2, plot(Sepal.Width, Sepal.Length, col = cols))



412:132人目の素数さん
14/11/16 11:43:38.42 .net
>>396-397
レス遅くなりまして申し訳ありません
参考にさせていただきます、ありがとうございました

413:132人目の素数さん
14/11/28 18:55:36.77 .net
積分を含んだ関数のフィッティングってできますか?
例えば、
f(x) = ∫^1_x {a*t^b/√(t^2 - x^2)}dt
0<x<1
のようなやつです

414:132人目の素数さん
14/11/28 22:08:21.00 .net
>>399
与えられた関数ではたぶんt^2-x^2が負になることがあるのがめんどいので変えました
できてるかな?コードが汚いのは勘弁して下さい

SS<-function(par){
a=par[1]
b=par[2]
t=par[3]
fx<-c()
for(m in 1:10){
fx<-c(fx,integrate(f,lower=1,upper=x[m],a=a,b=b,t=t)$value)
}
print(fx)
return(sum((y-fx)^2))
}

f<-function(x,a,b,t){
#if(0<x && x<1){return(0)}
#return((a*t^b)/(sqrt(t^2-x^2)))
return(a*x^b+t*log(x))
}

x<-1+2*runif(10)
y<-x+runif(10)
SS(c(1,1,1))

fx=integrate(f,lower=1,upper=12,a=1,b=0.5,t=1.2)
optim(c(1,1,1),SS)

415:132人目の素数さん
14/11/28 22:48:41.97 .net
うひょー、こんなパッとできるのですか!
ありがとうございます

416:132人目の素数さん
14/11/29 10:22:04.83 .net
統数研のR研究会配信ハジマタ
URLリンク(www.ustream.tv)

417:132人目の素数さん
14/11/29 23:44:13.84 .net
>402
生中継のみで録画なしか。
出遅れた。残念。

418:132人目の素数さん
14/12/04 14:43:19.93 .net
optim関数を実行した時に「オブジェクトは 'double' に変換できません」というエラーが出ます。
何が原因でしょうか?

以下コード

data <- read.table("RSRF_mc150k_80kev.txt", header=FALSE, sep="\t")

f <- function(par){
b <- par[1]
c <- par[2]
d <- par[3]
l <- par[4]
f <- par[5]
g <- par[6]
h <- par[7]
m <- par[8]
V1 <- data[1]
V2 <- data[2]
w <- (-V2 + 1 - ((b*exp(-f*V1))/(1-exp(-f)) + (c*exp(-g*V1))/(1-exp(-g)) + (d*exp(-h*V1)/(1-exp(-h)) + (l*exp(-m*V1))/(1-exp(-m))))^2 )
return(w)
}

init <- c(1.611e-5, 1.468e-4, 9.19e-4, 1.48e-2, 0.0023, 0.0150, 0.0827, 0.5786)
opt <- optim(par=init, fn=f, NULL, method = "SANN")

以下にエラー optim(par = init, fn = f, NULL, method = "SANN") :
(list) オブジェクトは 'double' に変換できません

419:132人目の素数さん
14/12/04 17:47:16.92 .net
optim関数は関係ない
V1、V2にデータフレームが入っているからエラーが出る、たぶん

(参考) irisを例にstr()で構造を確認してみれば、これらで構造が違うことが解る
str(iris[1])
str(iris[,1])

420:132人目の素数さん
14/12/04 18:05:52.54 .net
>>405
ありがとうございます。
エラーメッセージが変わりました。↓
optim の目的関数が 1 つではなくて 1135 個の結果を評価しています

nlsのかわりとしてoptimを使ったのですが、nlsのように連立方程式を解くというようなことはできないということでしょうか?

421:132人目の素数さん
14/12/04 18:38:19.66 .net
どうせ目的関数がベクトルになってんだろ

422:132人目の素数さん
14/12/04 18:38:26.17 .net

V1 <- data[,1]
V2 <- data[,2]
w <- (-V2 + 1 - ((b*exp(-f*V1))/(1-exp(-f)) + (c*exp(-g*V1))/(1-exp(-g)) + (d*exp(-h*V1)/(1-exp(-h)) + (l*exp(-m*V1))/(1-exp(-m))))^2 )
www <- sum(w^2)
return(www)
}


これじゃダメ?

423:132人目の素数さん
14/12/05 13:04:42.76 .net
>>408 ありがとうございます。 できました



425:132人目の素数さん
14/12/09 06:11:09.54 .net
1-100の整数を、すべて一回ずつランダムな順番で表示(発生?)させたいのですが
そのような関数はありますでしょうか

426:132人目の素数さん
14/12/09 08:16:28.42 .net
sample(1:00)でいいんじゃない?

427:132人目の素数さん
14/12/09 08:17:46.35 .net
sample(1:100,100)

428:132人目の素数さん
14/12/09 09:17:00.86 .net
>>412
全て1回ずつなら、引数sizeは省略可能だよ。

429:408
14/12/10 07:25:42.80 .net
ありがとうございます!

430:ほげ
14/12/10 19:10:41.03 .net
Rの入力画面が“+”になったままです。
通常の“>”にするにはどうすればいいのでしょうか。
ご教示ください。

431:ほげ
14/12/10 19:17:12.30 .net
”STOP”をクリックして解決しました。
どうも失礼しました。

432:132人目の素数さん
14/12/10 19:21:13.85 .net
別に失礼しなくて良いから死ね

433:132人目の素数さん
14/12/10 20:30:40.69 .net
いちおう答えておくと入力が足りないというメッセージだから足りないものを補うか、
ESCキーで逃げる。

434:132人目の素数さん
14/12/24 08:45:38.47 .net
macさいこう~

435:132人目の素数さん
15/01/04 21:18:39.64 81Vyorrh.net
【趣味】 確率・統計をマスターし、色々分析して遊びたい。 いい勉強法を教えて!
スレリンク(poverty板)

436:132人目の素数さん
15/01/09 07:40:53.73 33u48+dB.net
みなさんCPU何使ってますか?

わたしはintel i5 の2coreですが
nnetや深層学習で遅さを感じるように
なりました

437:132人目の素数さん
15/01/09 13:10:53.64 QZWUgko2.net
>>421
バッチとかシェルとか使って
次々作業を自動でするようにするとか

もっと高いCPU使うとか
並列処理させてみるとか。

安いんだから台数増やして対応したらどう?

俺は基本的に一番安いノートを使ってる。
昔は高いCPUとか部品とか購入してたけど
数年たつと安物に速度も容量も負けるので
バカらしくなって高級部品は買わずに
一番安い機種を購入することにしてるよ。

438:至高の狐独文武学者cafeーSHO-GUNイスラム金融系最高指導者遅獄先生
15/01/09 14:20:10.06 fTyN8wof.net
統計学は太兵を失い敗退し、時代遅れだが、
虚実混合実数確率集合論は、世界二十世紀最後の最難関
だったから、一読の価値あり。兵法書としても。
戦場で探せるかな。盗み読み。走り読み。

439:至高の狐独文武学者cafeーSHO-GUNイスラム金融系最高指導者遅獄先生
15/01/09 14:21:12.56 fTyN8wof.net
大兵。

440:132人目の素数さん
15/01/09 21:55:55.72 QZWUgko2.net
そうか?
数学の中で統計って結構役にたつよ。
特にコンピューター関係で非常に役にたってるじゃん。

441:132人目の素数さん
15/01/30 22:02:06.23 HgcHm/47.net
Rを使ったクラスター分析についてわからないことがあるので教えて下さい。
Rコマンダーを使ってクラスター分析をウォード法、ユークリッド距離を使って行いました。
その際クラスター数を何個にするべきかクラスターの距離?を使って判断したいんですが
どのようにその距離を数値化することができますか。
JMPを使ったクラスター分析では例えば
クラスター数が1の場合、距離という項目が10.389
2の場合は10.256
3は10.132
4は9.618
5は9.578
というような形


442:で明記されます。 この時3と4の間の距離が大きいのでクラスター数を3個にするといった判断基準を行ってきました。 これと同様のことをRを使って行いたいのですが、調べてもわかりません。 上記をする方法を教えていただきたいです。お願いします。



443:132人目の素数さん
15/01/31 11:20:45.92 SiAB+M7V.net
>>426
一般的に、
回答できない人 → Rコマンダーユーザ層
回答できる人 → 普通のRユーザ層
と思われるので、
Rコマンダーをメニューから実行したときに出現するコマンドを書いた方が
回答を得やすいと思うよ。

444:132人目の素数さん
15/01/31 12:50:36.50 C1UilbcO.net
ネット検索しろよ
ツール名 やりたい事
でネット検索したら簡単に調べれるだろ。
osoパッケージ入れてキーワード検索するのも良いかも。

445:132人目の素数さん
15/01/31 21:48:54.24 Epu3UWxe.net
30名限定!銀座で飲みながら「人生でやりたいことを諦めない」パラレルキャリアについて語り合うイベントを開催!
ってのがヒットした

446:132人目の素数さん
15/01/31 21:56:57.08 RXQnWHQr.net
>>429
どんだけ検索ヘタッピなんだよ。
メンドクセーやつ。
もっと馬鹿向けのツールにかえた方が良いよ。

447:132人目の素数さん
15/01/31 22:10:30.13 BZTS7IuP.net
自分が馬鹿なのを人のせいにするなよ

448:132人目の素数さん
15/01/31 23:00:35.19 19ip1QXI.net
>>431
自分で使えないようなツールつかうなよ。
検索すらできないおバカ!

449:132人目の素数さん
15/02/02 10:21:50.97 GNP7Ha4V.net
卒論シーズンになると子供が湧くなw
罵倒している子供も、質問している子供と50歩100歩
>>426
クラスターの個数を決めるなら、例えばNbClustパッケージを使うとか
ウォード法、ユークリッド距離を使った例
> data <- iris[,-c(5)]
> library(NbClust)
> res <- NbClust(data, diss=NULL, distance = "euclidean", min.nc=2, max.nc=6,
+ method = "ward.D2", index = "kl")
All 150 observations were used.
> print(res)
$All.index
2 3 4 5 6
5.6522 4.1503 1.5906 1.5679 2.5556
$Best.nc
Number_clusters Value_Index
2.0000 5.6522
$Best.partition
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[38] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[112] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[149] 2 2

450:419
15/02/13 17:34:03.21 Wh9OMXZ9.net
>>422
ご助言ありがとう
高いスペックのPC買うより
安いのを複数で並列にしますわ

451:132人目の素数さん
15/02/28 23:45:01.63 GpLE1gOh.net
424です
自分なりに調べてみたんですがやはりわからないです
どうやら私が知りたいのはクラスター分析の履歴で、距離の結合過程のようです
すみませんがどなたか教えてください、困ってます
>433さんのはたぶん距離の結合過程ではないようです、でもありがとうございました
>427さん
コマンドで表すと
HClust.1 <- hclust(dist(model.matrix(~-1 +j+k+n+m, A)) , method= "ward")
plot(HClust.1, main= "Cluster Dendrogram for Solution HClust.1", xlab= "Observation Number in Data Set A", sub="Method=ward; Distance=euclidian")
です

452:132人目の素数さん
15/03/01 00:45:41.96 TyvXqwym.net
>>435
昔ネット検索したときに
距離の関数を自作すれば計算してくれるパッケージあったけどな
ちゃんと検索しろよ
面倒くさくなって検索ちゃんとしとらんだろ
自分でプログラム作れないなら
検索くらいしっかりしろよ

453:132人目の素数さん
15/03/01 00:59:38.46 Dyp/TkMy.net
>>436
色々と検索してみたんですがダメでした
検索するときに重要なキーワードとかあったら教えて下さい

454:132人目の素数さん
15/03/01 02:47:57.26 h7tGl4X4.net
>>435
?dist

455:132人目の素数さん
15/03/01 08:37:56.17 TyvXqwym.net
>>437
途中であきらめとるだろ
俺がみつけれとんだし
まず検索しなおせよ

456:132人目の素数さん
15/03/01 08:38:24.79 TyvXqwym.net
>>437
そんな手間かけずにみつけれたぞ
なんて名前のパッケージか忘れたけど

457:132人目の素数さん
15/03/01 14:06:11.66 Dyp/TkMy.net
>>438
distではないようです
>>439
>>440
この1ヶ月検索してみたのですがダメでした
ヒントだけでも教えて下さいお願いします

458:132人目の素数さん
15/03/01 18:26:16.55 08QQ84Zx.net
>>441
OSOパッケージつかうと検索はしやすい

459:132人目の素数さん
15/03/01 19:12:17.23 Dyp/TkMy.net
424です
いやもう限界です
もう自力では無理です
教えてくださいお願いします

460:132人目の素数さん
15/03/01 20:55:32.53 08QQ84Zx.net
>>443
検索すらまともにできんのかよ
この馬鹿は
検索は忍耐力だけ
耐えんかい!

461:132人目の素数さん
15/03/01 21:02:05.44 Dyp/TkMy.net
>>444
忍耐力というか
もう検索するキーワードがなくてどうしようもないんです
お願いですから教えて下さい

462:132人目の素数さん
15/03/01 23:12:06.71 wKImvE5a.net
>>426
Rではできないと思う
おれはあきらめて、Rubyでプログラムを作ったよ
プログラミングは得意だと思っていたが二か月かかった
ネットで探しても、参考になるようなソースは見つからなかったから
かなり大変だった
健闘を祈る!

463:132人目の素数さん
15/03/01 23:46:59.39 g1rgEkfW.net
自分がした苦労はさせたくなる

464:132人目の素数さん
15/03/02 00:43:34.19 TMpvWbpk.net
RubyGemsが特別CRANより優れている訳でもないから
Rubyで書ける計算はRでも書けると思うのだが?

465:132人目の素数さん
15/03/02 01:25:28.92 YeRETgHB.net
達成感は味わえるからね
山登り同じ

466:132人目の素数さん
15/03/20 12:16:48.76 +ItMXnMR.net
すみません、多数の住所を巡回しなきゃならないんですが、
このソフトでTSPを解けるんですかね?
住所を緯度経度に変換するところまではなんとかやりましたが、
最短で廻るルートがさっぱりで...
よろしくお願いします

467:132人目の素数さん
15/03/23 07:31:24.96 3O0PhtPn.net
R TSP でぐぐれ

468:132人目の素数さん
15/03/25 10:00:13.13 YSqNlYmo.net
GPUに勝てない

469:132人目の素数さん
15/03/25 11:42:34.89 XFYYJvdYK
R初心者です
nls.lmの使い方を教えてください


いままでフィッティングはエクセルでやってましたが
誤差評価をつけろと言われてRを始めたところ全然分からなくて困っています


時間に対して観測値が変化するのを普通の式でフィッティングするのはできるのですが
一定の時間の後に式が変化するときの場合分けはどうしたらよいのでしょうか?
具体的に言うと、1回投与に対するフィッティングはできるけど
数回に分けて投与する場合のフィッティングが分かりません

推定値をgetPred(parS, t)という関数で求めるとして、
getPred関数中のif文でtの値による場合分けをして
サブルーチンを呼び出


470:そうと思ったのですがnls.lm中にはtの値はベクトルで渡されていてnls.lmが最少化する目的関数の計算中に変化させているt[?]の状態でサブルーチンに渡すことができず単純にtをgetPredに渡してif(t<1)とかやると「条件の長さが2以上なので・・・」というエラーメッセージがでてしまいますうまく場合分けする方法はあるでしょうか



471:453
15/03/25 11:49:25.36 XFYYJvdYK
補足です
if文ではなく、
getPredの中に場合分けに対応した複数の式を書いて
それぞれの頭に
ceiling(min(1,max(0,t-1)))*
のような0か1になる場合分けの式を書き込んでもnls.lmは分けてくれませんでした

472:132人目の素数さん
15/03/25 14:04:02.55 CH/w1DxE.net
違うところに書き込んでたようなので移動しました
453 :132人目の素数さん:2015/03/25(水) 11:42:34.89 ID:XFYYJvdYK
R初心者です
nls.lmの使い方を教えてください
いままでフィッティングはエクセルでやってましたが
誤差評価をつけろと言われてRを始めたところ全然分からなくて困っています
時間に対して観測値が変化するのを普通の式でフィッティングするのはできるのですが
一定の時間の後に式が変化するときの場合分けはどうしたらよいのでしょうか?
具体的に言うと、1回投与に対するフィッティングはできるけど
数回に分けて投与する場合のフィッティングが分かりません
推定値をgetPred(parS, t)という関数で求めるとして、
getPred関数中のif文でtの値による場合分けをして
サブルーチンを呼び出そうと思ったのですが
nls.lm中にはtの値はベクトルで渡されていて
nls.lmが最少化する目的関数の計算中に変化させているt[?]の状態で
サブルーチンに渡すことができず
単純にtをgetPredに渡してif(t<1)とかやると
「条件の長さが2以上なので・・・」
というエラーメッセージがでてしまいます
うまく場合分けする方法はあるでしょうか
454 :453:2015/03/25(水) 11:49:25.36 ID:XFYYJvdYK
補足です
if文ではなく、
getPredの中に場合分けに対応した複数の式を書いて
それぞれの頭に
ceiling(min(1,max(0,t-1)))*
のような0か1になる場合分けの式を書き込んでもnls.lmは分けてくれませんでした

473:132人目の素数さん
15/03/25 16:15:22.17 CFPzIfdW.net
>>455
数千種のパッケージがある中、使用パッケージの前置きなしに、突然nls.lmと言われても、
ほぼ誰も答えられないと思うぞ。minpack.lmなんて初めて聞いた。有名なのか?
MWE (Minimal Working Example)の提示もなしに、言葉だけの説明だと、検証して助言する気にもなれない。
> day <- 1:100
> y <- 2 * day + 3
> yeps <- y + rnorm(length(y), sd = 2)
> dat <- data.frame(day, yeps)
1日から50日はyeps ~ a + b * day
51日から100日は yeps ~ a + b * I(day^2)だとすると、
> nls(yeps ~ a + b * day, data = dat[dat$day < 51, ], start = list(a = 0.12345, b = 0.54321))
Nonlinear regression model
model: yeps ~ a + b * day
data: dat[dat$day < 51, ]
a b
3.01 2.00
[以下省略]
> nls(yeps ~ a + b * I(day^2), data = dat[dat$day > 50, ], start = list(a = 0.12345, b = 0.54321))
Nonlinear regression model
model: yeps ~ a + b * I(day^2)
data: dat[dat$day > 50, ]
a b
76.3125 0.0131
[以下省略]
質問の意図と全く違うなら、説明の仕方が悪い。

474:132人目の素数さん
15/03/25 19:45:53.39 daif1ydQ.net
誤差評価もエクセルでやれば解決すると思います。

475:451
15/03/25 21:08:40.68 CH/w1DxE.net
さっそくのお返事ありがとうございます
説明が悪くて申し訳ありません
nls.lmはnlsよりエラーが出にくいとネットで見たので
エラーの対処もなかなかできない自分にとってはそのほうがいいかと思って使ってみました
実際にはnls.lmもエラーが出てそれほど良いわけでもなさそうでした
プログラミング自体初心者なものでMWEがうまくつくれず
どうしても非常に長くなってしまうので
データの概形が分かるグラフだけを下に貼ってみました
これで分かりますでしょうか
t<-c(1:100)
pre<- c(1:100)
k1=0.3
k2=0.1
graphplot<-function(x){
for(i in 1:x){
pre[i]<-
k1/(k1-k2)*(exp(1)^(-k2*t[i])-exp(1)^(-k1*t[i]))+
ceiling(min(1,max(0,t[i]-7)))*k1/(k1-k2)*(exp(1)^(-k2*(t[i]-7))-exp(1)^(-k1*(t[i]-7)))+
ceiling(min(1,max(0,t[i]-21)))*k1/(k1-k2)*(exp(1)^(-k2*(t[i]-21))-exp(1)^(-k1*(t[i]-21)))+
ceiling(min(1,max(0,t[i]-35)))*k1/(k1-k2)*(exp(1)^(-k2*(t[i]-35))-exp(1)^(-k1*(t[i]-35)))
par(new=T)
plot(t[i],pre[i],xlim=c(0,100),ylim=c(-5,5))
}
}
graphplot(100)
続きます

476:451
15/03/25 21:09:15.05 CH/w1DxE.net
続きです
変なコーディングで意味不明かもしれませんが
不規則な(0,7,21,35日目での)投与で患者さんの反応が4つ山のグラフになっているイメージです



477:アれを、上の関数で使っている k1/(k1-k2)*(exp(1)^(-k2*t[i])-exp(1)^(-k1*t[i])) という 直列につながった2ボックスのモデルでフィッティングして 患者さんの体内にあるそれぞれのボックスの代謝排出速度定数k1,k2を得ようとしています その方法で悩んでいるところです エクセルでパラメータの誤差を得る方法も分からなくてRを試していました>>457 とりあえず1回投与のような単純なものはRのnlsでパラメータと誤差を得ることができました エクセルでパラメータの誤差を簡単に得る方法はどこかに出てますでしょうか? 探し方が悪いのかなかなか見つかりません・・・



478:451
15/03/25 21:12:02.62 CH/w1DxE.net
y軸の指定をミスってグラフがつぶれ気味になってしまいました
すみません

479:132人目の素数さん
15/03/26 00:47:26.80 0DqIuYAV.net
あん?結局目的は達成できてるの?何ができてないの?

480:451
15/03/26 09:49:43.09 6GQExkhD.net
目的はパラメータk1, k2を誤差つきで得ることです
>>458のようなデータ(例えばこれにランダムな誤差を与えたもの)を
>>459のような2ボックスモデルで解析してk1,k2を決定したいのですが
nlsやnls.lmでうまくできなくて困っています
>>458のデータは4回投与なので4つの山の合成のような形になっています
>>458のモデルはそのままだと1つの山なので
そのままnlsなどでに突っ込んでもフィッティングできません
なにか方法はないでしょうか

481:132人目の素数さん
15/03/26 10:59:53.11 i5xJoGQy.net
とりあえず >>458をrewriteしてみた
t <- 1:100; n <- max(t)
k1 <- 0.3; k2 <- 0.1
x <- x0 <- k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t))
x[(1 + 7):n] <- x[(1 + 7):n] + x0[1:(n - 7)]
x[(1 + 21):n] <- x[(1 + 21):n] + x0[1:(n - 21)]
x[(1 + 35):n] <- x[(1 + 35):n] + x0[1:(n - 35)]
plot(t, x, type = "l")
で、区間毎に別々にk1, k2を求めて標準誤差または信頼区間を計算するのはだめで、
k1とk2が統合されなければならないってこと?

482:451
15/03/26 11:37:43.13 6GQExkhD.net
k1,k2は生理的なものなので、それぞれが常に一定である必要があります
例えると、ある薬品が血中に投与された時の
k1は薬物の代謝分解速度定数、k2は腎臓からの排出速度定数で
これらが一定な状態の被験者に
薬物を4回投与した時のデータが>>458のグラフになります
つまり、
知りたいのは人間の体の代謝能力の方で
ある時間における代謝の状態ではないということです
なかなかうまく説明できなくてすみません

483:451
15/03/26 11:43:15.31 6GQExkhD.net
例えと書きましたが、
実際に排出速度定数k1,k2の直列2コンパートメントの微分方程式を解いたものが
k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t)) です
>>463のように短く書けるのですね
勉強になります。ありがとうございます


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