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のように短く書けるのですね
勉強になります。ありがとうございます
484:132人目の素数さん
15/03/26 11:48:35.14 i5xJoGQy.net
例えば、こんな感じなのか。
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)]
s1 <- ceiling(pmin(1, pmax(0, t - 7)))
s2 <- ceiling(pmin(1, pmax(0, t - 21)))
s3 <- ceiling(pmin(1, pmax(0, t - 35)))
m1 <- nls(x ~ k1/(k1-k2)*(exp(-k2*t)-exp(-k1*t)) +
s1 * k1/(k1-k2)*(exp(-k2*(t - 7))-exp(-k1*(t - 7))) +
s2 * k1/(k1-k2)*(exp(-k2*(t - 21))-exp(-k1*(t - 21))) +
s3 * k1/(k1-k2)*(exp(-k2*(t - 35))-exp(-k1*(t - 35))),
data = data.frame(t, x, s1, s2, s3),
start = list(k1 = 0.4, k2 = 0.2),
control = list(warnOnly = TRUE))
summary(m1)
confint(m1)
confint()が計算できないみたいだけど。
485:451
15/03/26 12:17:33.16 6GQExkhD.net
ありがとうございます
nlsに与える式の中にtの値での場合分けがあってもちゃんと答えが得られるんですね
式の与え方は自分がやってうまくいかなかったときと同じようなので
tの渡し方とかその辺でなにか間違っていたのかもしれません
(式の複雑さとか、tが整数ではないとか細かい違いはたくさんありますけれど)
うまくいく例>>466を教えていただいたので
それをベースに改変すればできるはずと分かり助かりました
先が見えたのでエラーがでても
486:めげずにデバッグできそうです 有難うございます
487:132人目の素数さん
15/03/26 12:41:20.44 i5xJoGQy.net
>>467
s1, s2, s3は、君のやり方を踏襲したけど、
t <- 1:100; n <- max(t)
s1 <- rep(0:1, c(7, n - 7))
s2 <- rep(0:1, c(21, n - 21))
s3 <- rep(0:1, c(35, n - 35))
でいいと思うぞ。
488:451
15/03/26 16:02:29.70 6GQExkhD.net
教えていただいたテンプレをベースにやったらうまく解析できました
自分でやってうまくいかなかった理由は
ceiling(min(1,max(0,t[i]-7)))*
という部分だと判明しました
投与時間t[i]は実数で欠損値もないので
なぜmin,maxがNaNを返すのかまだ理解できていませんが
とにかく、pmin,pmaxだと大丈夫で、min,maxだと
「計算結果がNaNになりました・・・」というエラーになるようです
nlsやnls.lmの使い方の問題ではなく
自分の式の書き方の問題でした
おさわがせして申し訳ありません
いろいろ教えていただいた皆様、有難うございました
>>463, >>468の書き方も勉強になりました
489:132人目の素数さん
15/03/26 17:15:55.08 i5xJoGQy.net
>>469
pmin()とmin()は用途が違う。
> (a <- round(rnorm(10)) + 5)
[1] 4 6 6 5 3 5 6 2 4 4
> min(1:10, a)
[1] 1
> pmin(1:10, a)
[1] 1 2 3 4 3 5 6 2 4 4
> max(1:10, a)
[1] 10
> pmax(1:10, a)
[1] 4 6 6 5 5 6 7 8 9 10
490:451
15/03/26 20:05:22.29 6GQExkhD.net
t[i]じゃなくてtになってました。なのでpmin,pmaxですね
こまごま間違いがあるもの、というか
自分がミスが多すぎるのでしょうか・・・
うまくいったと思っても
別の被験者のデータを入れたらまたエラーになってしまいました
いまのところ5人中3人でNaNエラー
エクセルで得た推定値を入れていて初期値での推定値が測定値にはほぼ一致しているのに何故NaNエラー?
まだまだデバッグにかかりそうです・・・
491:451
15/03/26 20:35:12.43 6GQExkhD.net
結局6人のデータのうち3人がエラーでした
測定値とエクセルの推定値をプロットして回帰すると
エラーがでなかった方でy=0.81-0.93, r2=0.97-0.99
エラーが出た方で0.84-1.15,r2=0.85-0.98
異常値があるわけでもないしデータの問題ではなさそうです
nlsに入れた式の部分をコンソールにコピーすれば
測定値にほど近い正の実数が並ぶし
なにが問題なんでしょう・・・
492:451
15/03/26 21:46:40.01 6GQExkhD.net
nlsでエラーが出るデータはnls.lmでもエラーになりました
nls.lmはエラーが出にくいという話でしたが
そういう問題じゃないところでのエラーか
493:132人目の素数さん
15/03/28 00:27:44.38 7TzTwEzf.net
Mさんだとエラーが出ていしまう男性は多数、
私の数字の概念をはるかに超えている醜さ。
無限大の脂肪率で、人格障害で恋愛成就する確率は0.1の1億乗。
半径50M以上は近づかないでほしい。(証明おわり)
494:132人目の素数さん
15/03/28 17:37:38.27 XFZ1n0Q5.net
人間の価値は顔とコミュ力の二変数関数と良い近似を見せる
495:132人目の素数さん
15/03/30 06:33:40.56 Dd802dndL
初歩的なことですが、質問させてください。
CSVファイルの複数のsheetから、それぞれsheet名を指定して、dataframeに取り込むことはできるでしょうか。
自分で調べた感じでは、各sheetを複数のcsvファイルとして保存し直して、list.files()などで読み込むことはできるような書き込みは見つけたのですが。
よろしく、おねがいします。
496:132人目の素数さん
15/04/07 04:22:35.92 IdhiGeWV.net
質問です
whi.e(i in 1:10)
{
p[i] = i
i = i + 1
}
print(p)
とすろとオブジェクトpがありませんというエラーが出るのですが、
pというオブジェクトが生成されてない原因は何なのでしょうか
497:132人目の素数さん
15/04/07 05:06:06.46 IdhiGeWV.net
while
498:じゃなくてforです
499:132人目の素数さん
15/04/07 05:55:48.97 IdhiGeWV.net
先にp=0書いたらできて自然解決しましたすみません
500:132人目の素数さん
15/04/21 01:49:43.71 SSLCOHB9.net
統計解析言語の最新版「R 3.2.0」がリリース、Windows向けに新たにインストーラーを提供
URLリンク(codezine.jp)
501:132人目の素数さん
15/04/28 00:49:48.08 Tq0doYMv.net
行列の特定の要素に任意の値を代入するにはどうすればいいですか
a[1,2]=10としてもエラーがでます
これに関してググりまくったんですがなぜか全然出てこなくて困ってます
502:132人目の素数さん
15/04/28 04:52:33.71 zIHTG37z.net
>>481
> a<- matrix(1:16,nrow=4)
> a
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> a[1,2]<- 10
エラー出ないよ。
エラーメッセージを載せたら?
503:132人目の素数さん
15/04/29 00:43:49.64 0Y6+dzWb.net
>>482
どうやら既存の要素でないと書き換えることができないことを知らず、
その表でいうとa[1,5]=10みたいなことをやっていて、
しっかりnrow=5で行と要素を存在させてから命令したらうまくいきました
ありがとうございました
504:132人目の素数さん
15/05/03 00:28:40.00 pU39guuD.net
いまESS使ってるんですが、Rstudioとどっちが使いやすいでしょうか?
Rstudioに乗り換えようか迷っています
505:132人目の素数さん
15/05/04 18:48:25.55 QlLBoMAo.net
共存させてるけど。
506:132人目の素数さん
15/05/16 15:00:59.37 NHBCVBFJ.net
2次元形式で文字を表示させるにはどうすればいいでしょうか
cd/m^2の2乗を表示したいです
507:132人目の素数さん
15/05/19 10:20:57.41 7yqFaZsb.net
>>486
2次元形式は意味不明だけど、superscript (肩付き)のことを言っているなら、
「expression r superscript」でぐぐれ
508:132人目の素数さん
15/05/24 14:18:31.56 pUq1jstv.net
>>487
ありがとうございます。
出来ました!!
509:132人目の素数さん
15/06/03 21:12:58.43 TMOQWk9m.net
>>485
こっちは、どっちが使いやすいかを訊いているのですが?
お前が共存させてようが知ったことではないです。
510:132人目の素数さん
15/06/04 19:38:35.06 gfaBlbTX.net
>>489
あなたが共存させて使い比べるのが一番でしょう。
あなたにとっての使いやすさの話なんだろうから。
511:132人目の素数さん
15/06/05 12:35:31.55 MDjykZPp.net
>>489
そのような返答は端から見ていても不快ですよ。
私はEmacsに慣れているので、ESSの方が圧倒的に使いやすいです。
RStudioとESSとどちらが使いやすいかは、人それぞれですよ。
ただ、Emacsを使ったことがない人には、RStudioを薦めています。
512:132人目の素数さん
15/06/05 18:00:31.95 VSz1UO41.net
Rは連立三次方程式解けますか?
513:132人目の素数さん
15/06/07 02:03:18.21 dt9xZyh/.net
>>492
当然解ける。
ていうかそれは言語関係ないよ。
514:132人目の素数さん
15/06/08 18:34:18.87 K54v27jp.net
エクセル持って無いんだけどopenofficeのデータを
Rにコピペする方法ってある?(´・ω・`)
515:132人目の素数さん
15/06/08 18:38:32.69 /HB4vF8B.net
区切り文字が分かればできてるでしょ
ちなみにExcelはタブ区切り
516:132人目の素数さん
15/06/08 20:36:58.31 M9dGRTLi.net
OpenOffice持ってないんだけど、範囲選択し、copyを選択し、
Rで
read.delim("clipboard")
とかで出来ないかな。
517:132人目の素数さん
15/06/09 18:58:46.73
518:ifB12Z3k.net
519:132人目の素数さん
15/06/24 11:45:26.96 T/10yu39.net
ggplot2って使いにくくない?(+_+)
520:132人目の素数さん
15/07/01 04:25:30.24 TGLv9MfB.net
Rのマニュアルやらわかりやすい例題やら作れって言われた。
創薬系研究室在籍やけど、なんかいい例題ないですかね?
521:132人目の素数さん
15/07/01 13:44:33.87 XbOl36dq.net
URLリンク(psych.educa.nagoya-u.ac.jp)
これ
522:132人目の素数さん
15/07/01 17:44:31.10 lIG3ApTr.net
>>500さん ありがとう
523:132人目の素数さん
15/07/01 18:59:00.19 Nau31m3L.net
競馬解析なら万人にウケる
524:132人目の素数さん
15/07/01 22:18:43.50 I24ifN48.net
いや万人には受けない…
データ取ってくるの一番めんどくさそう
525:132人目の素数さん
15/07/12 14:57:40.77 Sw/04KCk.net
rinsideってc++にR組み込めるみたいだけど
fortranかjavaにR組み込めるパッケージ出ないのかな
作ろうっていう神とかいらっしゃらない?
526:132人目の素数さん
15/07/21 23:10:29.27 FsBb/NpU.net
3.2.0が出たことを知った今日この頃
ちな3.1.1
ここにいる皆さんは新しいバージョンが出るとすぐにアプデするの?
527:132人目の素数さん
15/07/23 20:48:22.72 AOB+IQP4.net
お前R全然使えないじゃん。
ブログのコードとか結構ひどいと思うぞ
528:132人目の素数さん
15/07/24 09:37:24.04 YGu5K6J3.net
>>505
Ubuntu/Debianだと、事実上自動的にアップデートされてしまうので、
そんなことは意識しない。論文を書くときに、分析したときのバージョンをチェックするぐらい。
529:132人目の素数さん
15/07/25 01:01:48.47 1RK8+FfS.net
ないよりまし
530:132人目の素数さん
15/07/27 18:25:21.42 KzAHLkDJ.net
プログラミングの非常に初歩的な質問で申し訳ないんですが、複数のcsvファイルを読み込んで特定の列を抽出して結合し、一つのマトリクスとして書き出したいのですが、どのようにプログラムを組めばいいでしょうか?
手作業でも可能な作業ですが、csvファイルの数は500あるのでプログラムを組んで時間を短縮できたらと思います。
おそらくfor文を使うのでしょうが、プログラミングを始めたばかりでどのように書けばいいのかわかりません
知恵を貸してください
531:132人目の素数さん
15/07/27 20:13:57.39 hW1bJ8L9.net
list.files()とかでとれないっけ
532:132人目の素数さん
15/07/27 20:26:20.99 KzAHLkDJ.net
>>510
回答ありがとうございます
読み込みに関してはread.csvでa1-a500まで書いて読み込めてます
非効率なのは承知していますが、これからもっと勉強して効率的なコード技術を身につけたいと思います。
問題はその後、for文を使えば繰り返しを行えるとのことで
i=1
for[i in 500]{
bi <- ai[,10]
}
みたいに書いてみたのですが、当然回りませんでした。
結合はcbindを使えばいいということも調べたのですが、列抽出と結合をfor文に上手く組み込めないという現状です。
533:132人目の素数さん
15/07/27 20:54:47.17 hW1bJ8L9.net
かなり汚い書き方だけど、その列の長さ(nとする)が同じなら
A<-list.files()
B<-matrix(0,n,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
#その列の名前がxとする
B[,m]<-temp$x
}
とかでできないのかなあ
534:132人目の素数さん
15/07/27 21:24:59.06 KzAHLkDJ.net
>>512
>>509です
A<-list.files(pattern=".csv$")
B<-matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
B[,m]<-tenp$10
}
こんな感じでよろしいのでしょうか?列の長さは等しくないので最大のcsvのものを設定しています.
このまま回したところエラーが吐き出されてしまいました.
535:132人目の素数さん
15/07/27 21:54:41.71 hW1bJ8L9.net
$10って取り出せてるのか
試してみて
536:132人目の素数さん
15/07/27 22:07:51.04 KzAHLkDJ.net
>>514
取り出せていなかったようなので
A<-list.files(pattern=".csv$")
B<-matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
B[,m]<-tenp$name
}
こちらで回したところ,
Error in file(file, "rt") : コネクションを開くことができません
追加情報: Warning message:
In file(file, "rt") :
ファイル 'NA' を開くことができません: No such file or directory
>
とのことでした.
また,ValuesにAは表示されていますが,character(empty)となっていてcsvファイルも読み込まれていないように感じます.
私はmacでRStudioという環境ですが,Rと.csvが同一フォルダにある場合list.files()のパスは必要ないんですよね?
質問ばかりで申し訳ありませんが,後学のために教えていただけると助かります.
537:132人目の素数さん
15/07/27 22:26:08.37 hW1bJ8L9.net
list.files(pattern=".csv$")
ここだけ実行して目的のcsvは表示される?
指定もできるけどと思うけど指定しなかったら普通にカレントだろうねえ
まあRSTtudii使ってるなら引数は候補で出てくるしそこらへん適当にヘルプでも見て
538:132人目の素数さん
15/07/27 22:37:29.01 KzAHLkDJ.net
>>516
character(0)となっているということは.csvが検出されていないということですよね?
なぜでしょう…
539:132人目の素数さん
15/07/27 23:14:50.99 hW1bJ8L9.net
>>517
getwd()でカレントどこになってるか見える
RStusioの右下に表示されてるスペースがカレントとは限らなかったような
540:132人目の素数さん
15/07/28 00:16:37.53 vtbmtaiA.net
>>518
getwd()でカレントを確認し,pathに代入して
A<-list.files(path,pattern=".csv$")
B<-matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE)
B[,m]<-tenp$速度name
#nameに列名
}
で回しても
Error in file(file, "rt") : コネクションを開くことができません
追加情報: Warning message:
In file(file, "rt") :
ファイル 'NA' を開くことができません: No such file or directory
Aはcsvを見つけられてないようです
541:132人目の素数さん
15/07/28 00:26:37.64 vtbmtaiA.net
>>518
すいません!!カレントを正しく打ち込み直したらcsvを読み込むことができました!!
ただBの中身が全て0になってしまい
Error in make.names(col.names, unique = TRUE) :
'<95>W<8d><82><28>m)' に不正なマルチバイト文字があります
というエラーを吐き出してきました
これはどういう修正を加えれば良いでしょうか?
542:132人目の素数さん
15/07/28 00:33:47.62 KWe1rzzX.net
>>520
わからん
ただ、ぐぐったら
URLリンク(app.f.m-cocolog.jp)
こんなのが出てきた
今はcsvファイルの一列目は列の名前ですか?
そうでないならheader=FALSEにしてみてください
そのときに$でアクセスすることができなくなります。何列目か固定(m列目とする)ならtemp[,m]でいけるかな
543:132人目の素数さん
15/07/28 00:40:51.36 vtbmtaiA.net
>>521
遅くまでありがとうございます.
ヘッダーの件はは自分でも調べてエンコードを以下のように変えてなんとか対処できました.
path <-XXXXX
A <- list.files(path,pattern=".csv$")
B <- matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE,fileEncoding = "utf8")
B[,m]<-temp$name
}
すると,以下のようなエラーがでました
エラー: 関数でないものを適用しようとしました
追加情報: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
入力コネクション ‘YYYYYYY.csv' に不正な入力がありました
2: In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on ‘YYYYYY.csv'
これについては何かおわかりでしょうか?
544:132人目の素数さん
15/07/28 01:08:17.44 KWe1rzzX.net
>>522
Warningなら動いてるはずだけど
mが1のときはちゃんと読み込めてるんだよね?
545:132人目の素数さん
15/07/28 01:31:14.83 vtbmtaiA.net
>>523
そのはずなんですが…
Bが0行列になってしまっているということは読み込めていないんですかね?
546:132人目の素数さん
15/07/28 01:34:31.26 KWe1rzzX.net
>>524
まずtempのとこには入ってるの?
547:132人目の素数さん
15/07/28 01:40:23.15 vtbmtaiA.net
>>525
どうやらtempに上手くデータが入っていないようです
548:132人目の素数さん
15/07/28 01:45:28.67 KWe1rzzX.net
>>526
temp<-read.csv(A[1],header=TRUE,fileEncoding = "utf8")
も入んないのかね?
Aにやっぱりファイル名取れてる?
コンソールでAとだけ打ったら中身見えるのは知ってるよね?
549:132人目の素数さん
15/07/28 01:55:44.46 vtbmtaiA.net
>>527
Aにはちゃんと全ファイル名が取れています
見てみると1つ目のcsvファイルで突っかかっているようです
550:132人目の素数さん
15/07/28 01:57:20.78 vtbmtaiA.net
>>527
追記になりますがA[1]に置き換えて1行で実行しても同じエラーを吐き出します
551:132人目の素数さん
15/07/28 02:00:17.62 KWe1rzzX.net
>>528
なるほどねえ
あ、今ってさ、カレントディレクトリにcsvあるわけじゃないんだけ?
setwd(path)でそこにディレクトリ移動できるからそれからread.csvやったらダメかね?
552:132人目の素数さん
15/07/28 02:05:16.07 vtbmtaiA.net
>>530
setwd(path)
getwd()
path <- ‘ZZZZZZZZZZ’
A <- list.files(path,pattern=".csv$")
B <- matrix(0,360,length(A))
for(m in 1:length(A)){
temp<-read.csv(A[m],header=TRUE,fileEncoding = "utf8")
B[,m]<-temp$name
}
こちらで回しても同様です
.Rファイルと.csvファイルは同じフォルダにいれています
553:132人目の素数さん
15/07/28 02:17:01.15 KWe1rzzX.net
>>531
pathはちゃんとしてるとなるとcsvになってないとかなのかなあ
ちなみに
URLリンク(cse.naro.affrc.go.jp)
ここの
URLリンク(cse.naro.affrc.go.jp)
これってread.csvできる?
(実はまだpathとかが怪しいとちょっと思ってます)
554:132人目の素数さん
15/07/28 02:39:20.26 vtbmtaiA.net
>>532
先ほどのtxtをcsv形式で保存してpath2に代入
bb<-read.csv(path2,header=TRUE,fileEncoding = "utf8")
bb
こちらは普通にマトリクスが表示されます
555:132人目の素数さん
15/07/28 02:59:14.78 KWe1rzzX.net
>>533
そっか、手間取らせちゃったね
Rとは直接関係ないけど、csvファイルのセパレータは「,」か改行コードがどうとかなのかなあ
テキストエディタでcsv開いたら確認できる
556:132人目の素数さん
15/07/28 10:06:15.51 vtbmtaiA.net
>>534
お早うございます昨日はありがとうございます
一応read.csvの中にsep=','も入れてるのですがどうにも…
ヘッダーに日本語が混じっているとエンコード入れてもダメなんですかね?
557:132人目の素数さん
15/07/28 20:43:03.59 M+NvABK0.net
>>535
> ヘッダーに日本語が混じっているとエンコード入れてもダメ
今のRは、そんなことない。
正常なcsvは正常に読み込めて、君のcsvは正常に読み込めないのであれば、
われわれ読み手には分からない未知の原因がそのcsvファイルにあるのだと思うよ。
とにかくファイルA[1]がread.csv()で読めるようにならないと先に進まないよね。
こういう場合は、csvファイルの列を減らして、徐々に増やして、原因を調べる。
また、行を減らして、3行ぐらいのcsvを作ってみて、それを試してみるとか。
成功したら、また行を増やして試してみるとか。
不正なcsvファイルの原因を追及して、分かったら、その対処をして、Rに読み込めばいいと思うよ。
558:132人目の素数さん
15/07/28 23:00:40.47 vtbmtaiA.net
>>536
アドバイスありがとうございます
遅くなってしまいましたが、解決したので報告にきました。
全てのcsvのヘッダーを削除することでread.csvが正常に作動するようになりました。(ヘッダーのT,F切り替えでは無理でした)
また、結合したい列群をlist関数に一度格納して、全てを結合することで解決できました。
ご協力頂いた方、ありがとうございました
559:132人目の素数さん
15/07/31 09:59:53.05 DO8zGsqL.net
>>537
> ヘッダーのT,F切り替えでは無理でした
header = FALSEにするなら、1行目を無視するためにskip = 1も必要だろ。
いずれにしても解決おめでとう。
560:132人目の素数さん
15/07/31 21:25:16.77 riU+k5oH
561:.net
562:132人目の素数さん
15/07/31 21:35:39.73 riU+k5oH.net
統計解析がどの程度「科学」なのかにちょっと疑問を感じて。
p値が10のマイナス××乗くらいだと「何かある」と言って良いのだろうけど、
反証可能性がどうのという次元と5%で有意という次元に、厳密性でだいぶ開きがあるような気がする。