【R言語】統計解析フリーソフトR 第5章【GNU R】
■ このスレッドは過去ログ倉庫に格納されています
0001132人目の素数さん
2013/09/26(木) 13:07:22.66統計計算で重宝するデータ型や、複数要素を処理する演算や関数、
解析結果を表示するグラフィックなど、多彩な機能を提供します。
●関連サイト
The R Project
http://www.r-project.org/
RjpWiki
http://www.okada.jp.org/RWiki/
リンク集
http://www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8
0002132人目の素数さん
2013/09/26(木) 13:08:40.45= 統計解析フリーソフト R =
http://science4.2ch.net/test/read.cgi/math/1062650510/
http://mimizun.com/log/2ch/math/1062650510/
= 統計解析フリーソフト R 【第2章】 =
http://science6.2ch.net/test/read.cgi/math/1152449095/
http://mimizun.com/log/2ch/math/1152449095/
統計解析フリーソフト R 【第3章】
http://kamome.2ch.net/test/read.cgi/math/1224142396/
http://mimizun.com/log/2ch/math/1224142396/
【R言語】統計解析フリーソフトR 第4章【GNU R】
http://uni.2ch.net/test/read.cgi/math/1294561909/
0003132人目の素数さん
2013/09/26(木) 19:29:05.38乙。前スレが落ちたの >>989 付近?
0004132人目の素数さん
2013/09/28(土) 14:07:33.740005132人目の素数さん
2013/09/29(日) 11:02:05.99判別的中率の計算の途中で
次のようなコマンドを実行したいのですが、
hanbetsu.result <- table(データセット$朝食有無, データセット$予測群)
↓これ、だとうまくいきません。
doItAndPrint(paste("hanbetsu.result <- table(",ActiveDataSet(),"$",tclvalue(lhsVariable),",",ActiveDataSet(),"$予測群)" sep=""))
,(コンマ)をペーストするにはどうしたらいいのでしょうか?
0006132人目の素数さん
2013/09/30(月) 13:03:24.56Rcmdrはまったく分からないんだけど、
> ,(コンマ)をペーストするにはどうしたらいいのでしょうか?
","で合っているよ。うまくいかない原因は別にあると思うよ。
いずれにせよ、読んでいる人が再現できるものを提示しないと、
誰も助言できないよ。
特に、GUIな人は、トラブルを全て「うまくいきません」ですませてしまって、
読んでいる側は意味不明。←他人からは解決する気がないと判断される
あと、いちいちsep=""と書くのは面倒ではありませんか?
私はpaste0()を使います。
0007132人目の素数さん
2013/10/01(火) 00:18:59.84うまくいったのはこちらです。
doItAndPrint(paste("hanbetsu <- table(", ActiveDataSet(), "$", tclvalue(lhsVariable), ",", ActiveDataSet(), "$予測群)", sep=""))
コンマの後の空白をきちんと空けたのが良かったようです。ありがとうございました。
0008132人目の素数さん
2013/10/01(火) 09:42:04.68> コンマの後の空白をきちんと空けたのが良かった
違うと思う。 >>5 はsepの前にあるべきコンマが抜けていたから。
0009132人目の素数さん
2013/10/01(火) 21:53:45.05比較するとそうですね。
ありがとうございます。勉強になりました。
0010132人目の素数さん
2013/10/12(土) 18:44:10.94フォントとか配置とかそういう感じの
0011あのこうちやんは始皇帝だった
2013/10/12(土) 19:13:14.79無職のクソガキども! 大変なコトになるな!
憲法改正だ! 96条を改正してから、9条を改正する。 そして、何条を改正するか?
18条だ! そうして、国家総動員法ができて、オマエたち、無職のクソガキどもは、真っ先に徴兵だ!
オマエたちは、頭デッカチの虚弱児・ひ弱だから、最下等兵! すぐ戦死だ!
アハハハハハハハハハハ!!!!!!!!!!!!!!!!!!!!
死にゆく、クソガキどもに、大伴家持の詩を贈ってやろう!
海行かば 水浸く屍 山行かば 草むす屍 大君の 辺にこそ死なめ かえりみはせじ!
0013132人目の素数さん
2013/10/13(日) 11:32:28.63質問の意味が分からないぞ。
TeXの書き方(ソースの書き方なら全くの自由だ)の規定と、
フォントの配置(TDSのことか?)がどう関係があるの?
Rのコーディング作法なら、Googleが提唱しているものがある。
ttp://google-styleguide.googlecode.com/svn/trunk/Rguide.xml
また、作法通りに整形し直してくれるパッケージもある。
001410
2013/10/13(日) 11:55:33.09すいません確かに意味不明でした
文章中に「TeX」と書くときは「全部大文字でEはTより下で・・・が本当の表記だけど出来ないならしょうがないからTeXと書くように」とか決まっていたと思います
Rも同様に書式の決まりがありますか?
というのも、文章で「R」ただ1字を書くとどうも可読性が悪い気がしてしまって、何かいい方法はないかと・・・フォントくらい変えた方がいいかと悩み中です
0015132人目の素数さん
2013/10/13(日) 12:48:58.90全く文意をくみ取れていなかったようだorz
¥TeX{}のR版を探しているといことだよね。
R界隈の論文を見れば分かると思うけど、*ない*です。
journal of statistical softwareのLaTeXクラスファイルに定義されていた気もするが、
標準化されていない。
スライドなど少々の遊びが許される場合で、Rの可読性を高めるたいなら、
「全ての解析は¥includegraphic[with=1.5zw]{Rlogo-4.png} ver.3.01で行いました。」
などと、ロゴを使えばどうか。
ttp://developer.r-project.org/Logo/
001610
2013/10/13(日) 13:16:07.80なるほど、ロゴを使うというのは盲点でした
今度試してみます
ありがとうございました
0017132人目の素数さん
2013/10/22(火) 20:02:55.39表示されなくておかしくなる。そういうものなの?
0018132人目の素数さん
2013/10/22(火) 20:35:19.99おかしくなるも何も、負の値を含む積み上げって、
どういう図を期待しているんだ。
> barplot(matrix(c(1:3, -1, 4:5),3))
予想通りの図になるが、これがおかしいということ?
0019132人目の素数さん
2013/10/22(火) 21:02:15.43サンクスwそのグラフで俺の頭がおかしかった事に気がついたw
0020132人目の素数さん
2013/10/25(金) 00:01:31.530021132人目の素数さん
2013/10/27(日) 23:06:08.310022132人目の素数さん
2013/10/28(月) 05:58:06.04ヨーロッパサマータイムあるのに意味分からん。
0023132人目の素数さん
2013/10/28(月) 06:58:08.95EDT指定してもできなかったがAmerica/New_Yorkにしたらできたわ。イミフだわ。
0024132人目の素数さん
2013/10/28(月) 09:18:36.85MC法が何か勉強してから、もう1度来なさい。
ttp://ebsa.ism.ac.jp/ebooks/node/1264
>>22-23
意味不明。POSIXt()の引数が期待通りでなかったってこと?
New YorkならEST5EDTじゃないの?
0025132人目の素数さん
2013/10/28(月) 11:13:49.49引数にEDT入れたらそんなのありませんって言われたw
EST5EDTって入れればいいのかな?まぁ"America/New_York"って入れたらできたから解決したけど。
ちなみにBSTイギリス夏時間もだめだった。でもWET西ヨーロッパ夏時間はちゃんと認識した。
できたりできなかったりよくわからんわ。
0026132人目の素数さん
2013/10/31(木) 08:57:31.37層別ランダム割付という手法があるというところまでは調べられました。
Rでランダム割付が可能と聞いたのですが、やり方を解説しているサイトなどありませんか?
またはご存知の方いらっしやいませんか?
0027132人目の素数さん
2013/10/31(木) 21:11:36.63Stratified Randomizationって、実際にはBlock Randomizationの方法で実現するわけだから、
Block Randomizationのパッケージblockrandを使えばよいと思うよ。
ttp://cran.r-project.org/web/packages/blockrand/
オレは使ったことがないけどね:-p
002827
2013/10/31(木) 21:28:55.98cranの中を探したら、他にもいろいろあるみたいだ。
全文検索システムのnamazuでいろいろと検索してみてください。
ttp://search.r-project.org/cgi-bin/namazu.cgi
あと、↓充実した説明で助かるね!
ttp://en.wikipedia.org/wiki/Randomized_block_design
0029132人目の素数さん
2013/11/09(土) 14:18:52.90ar(データ)
データ$aic
では、相対的なAICの値しか表示されないため、最適な次数はわかってもAICの値がわかりません。
また、arima(データ, order=c(x,0,0))
で行うと定数項が含まれているため純粋なARモデルのAICを求める事が出来ません。
ARモデルのAICを求める方法、教えてください。
0030132人目の素数さん
2013/11/09(土) 15:32:47.80> ar(lh)$aic
0 1 2 3 4 5 6
18.3066645 0.9956542 0.5380214 0.0000000 1.4903597 3.2127890 4.9932119
7 8 9 10 11 12 13
6.4694960 8.4625678 8.7411958 10.7408834 12.5338637 14.4847850 16.4617958
14 15 16
18.0437158 17.4398358 19.3449467
> library(timsac)
> unimar(lh)$aic
[1] -34.34604 -46.87367 -47.40513 -46.86175 -44.86637 -43.20116 -41.34344
[8] -40.37922 -38.39713 -41.00437 -39.38885 -37.39977 -35.53922 -33.63709
0031132人目の素数さん
2013/11/09(土) 16:34:03.27ありがとうございます。
無事できました。
0032132人目の素数さん
2013/11/10(日) 17:33:34.060033132人目の素数さん
2013/11/10(日) 19:25:09.00例えば(E:\R)となりこのままではsetwd("E:\R")と行うことができません。
いつもはsetwd("E:\\R")やsetwd("E:/R")に手で修正しています。
何かもっと簡単な方法はないでしょうか?
0034132人目の素数さん
2013/11/11(月) 00:01:41.40Windowsをやめると幸せになれます
>>32
人による。
なお、コーディングはひたすら他人のコードを読むのが上達の近道。
0035132人目の素数さん
2013/11/11(月) 09:34:32.91"E:\R"を"E:\\R"や"E:/R"に自動置換してsetwd()に渡すオレ様関数を書けばよいのでは。
my.setwd <- function(p) setwd(nomalizePath(p))
こんな感じかな。こちらはWindowsじゃないので未検証。
ちなみに、文化の違いだと思うけど、
私は、対象ディレクトリに移動して、
ごにょごにょ作業や確認をしてからRを起動するので、
setwd()が必要な場面に出会わない。
0036132人目の素数さん
2013/11/11(月) 18:55:03.91何をやりたいかによる。
しかし確実に言えるのは、日本人(含在日)の本は全てダメ。
0037132人目の素数さん
2013/11/11(月) 22:23:05.34文系で、あまり高度でない実験結果や計量分析のまとめなど、普通はSPSSとかでやる人が多いことをRでやるばあいは?
0038132人目の素数さん
2013/11/12(火) 00:05:48.49Excel使ってろよ
0039132人目の素数さん
2013/11/12(火) 00:30:43.010040132人目の素数さん
2013/11/12(火) 08:17:12.09R Cookbook (邦訳あり)で忘れたことを参照したり、
R Graphics Cookbook でグラフの書き方を学んだら?
あとは、reshape や plyr の使い方を作者の論文で勉強しておくと便利
0041132人目の素数さん
2013/11/12(火) 09:08:54.40> R in Action
おぉ、これは初めて知った。
講義に使えそう。
0042132人目の素数さん
2013/11/13(水) 21:18:08.570043132人目の素数さん
2013/11/13(水) 23:09:37.07par(mfrow=c(5,5))
0044132人目の素数さん
2013/11/14(木) 00:27:16.43plot(〜〜)を何度もする場合は確かにそれでなりますが、今は一回のplot(〜〜)で
「クリックまたはENTERキーを押すと次のページに移ります」って出て
エンターを押すたびに次のグラフがプロットされるようなものなので出来ません。
0045132人目の素数さん
2013/11/14(木) 06:22:47.170046132人目の素数さん
2013/11/14(木) 09:56:30.46ask=TRUEになっていても、mfrow=c(1,1)でなければ、
一度に描画されると思うが。
>>44は何か勘違いをしていないか。
具体的に再現できるコードを示して。
0047132人目の素数さん
2013/11/14(木) 10:20:09.41library(vars)
data(Canada)
plot(VAR(Canada))
などです。
0048132人目の素数さん
2013/11/14(木) 10:40:11.97どんだけ特殊なケースを持ち出すんだよ。
plot.varest()って、ここまで変態な関数にはびっくりだ。
vars:::plot.varest を見たら分かると思うけど、layout()を使っている時点で、
mfrowで制御できないし、
if (nv > 1)
par(ask = TRUE)
ってハードコーディングされているから、関数のオプションでどうにかなるものでもない。
結論は、あきらめろ。
0049132人目の素数さん
2013/11/14(木) 12:26:28.31なるほど
難しいことはわかりませんがどうにもならないということだけはわかりました
別々に保存して並べて貼るぐらいで我慢します
ありがとうございます
0050132人目の素数さん
2013/11/14(木) 12:38:30.96厳密に言うと、どうにもならないこともないんだけど、
必要な労力は、その目的にペイしないと思う。
pdf(file="hoge.pdf")
plot(VAR(Canada))
dev.off()
ってして、3ページになっているhoge.pdfをぐりぐりスクロールして見るのはだめなの?
3つをきちんと並べて1枚の図にしなくてはいけないの?
0051132人目の素数さん
2013/11/14(木) 23:29:34.23一つの場合はカンマを取って変換を行えば良いとわかるのですが、
文字列の数が200あるのといくつかの文字列の小数点の位置が僅かに異なるため、効率よく行う方法が知りたいです。
0052132人目の素数さん
2013/11/14(木) 23:56:07.42それ専用の関数を見たことがあるが、どのパッケージだったか覚えていない。
5000パッケージなんて数が増えすぎ。
まぁ、普通に置換すれば良いと思うが。
> a <- "123,456,789.123"
> options(digits = 15)
> as.numeric(gsub(',','',a))
[1] 123456789.123
0053132人目の素数さん
2013/11/15(金) 00:04:31.57先回りするが、文字列の数がいくつあろうが、
小数点の位置が異なろうが、>>52の提案はそのまま通用する。
> A <- rep(a, 10)
> A[5] <- paste0(A[5], "4")
> A[6] <- "9.1"
> A
[1] "123,456,789.123" "123,456,789.123" "123,456,789.123" "123,456,789.123"
[5] "123,456,789.1234" "9.1" "123,456,789.123" "123,456,789.123"
[9] "123,456,789.123" "123,456,789.123"
> as.numeric(gsub(",","",A))
[1] 123456789.1230 123456789.1230 123456789.1230 123456789.1230 123456789.1234
[6] 9.1000 123456789.1230 123456789.1230 123456789.1230 123456789.1230
0054132人目の素数さん
2013/11/15(金) 00:54:39.62あぁこれは確かに楽でなかなかいい感じだなー
管理するにしてもこっちの方がよさそう
0055132人目の素数さん
2013/11/15(金) 00:55:31.21ご丁寧にありがとうございます。
無事できました。
0056狸 ◆BvcplLXSGo
2013/11/15(金) 01:55:03.29○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○
○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○
○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○
○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○
○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○
○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○●○
0057132人目の素数さん
2013/11/18(月) 05:16:45.180058132人目の素数さん
2013/11/18(月) 14:19:17.46そんな小中学生みたいな反応は好きにすればよいが、
REXPじゃなくて何でSEXPなんだろうかと疑問に思ったまま幾数年。
0059132人目の素数さん
2013/11/19(火) 23:40:18.38難易度は高いですか?というかできますか?
0060132人目の素数さん
2013/11/20(水) 01:21:25.57出来ます。
難易度は人によりますが、
そのような質問をする人には無理だと思います。
0061132人目の素数さん
2013/11/20(水) 12:44:19.25ありがとう。できることがわかれば、時間をかければなんとか、、。
0062132人目の素数さん
2013/11/20(水) 14:01:24.55やる気があるなら、ヒントを追加。
読むべきドキュメント: ttp://cran.r-project.org/doc/manuals/R-exts.html
手順としては、そのDLLとRを仲介するインターフェイスをCで書く。
その際、>>57 の型を使う。
たぶん、20-50行程度ですむような気がする。
MinGWを含むRtoolsをインストールして、書いたCソースをコンパイル。
Rから、インターフェイスをロードして、使えるかどうかチェック。
デバッグしながら、Cソースを直して、再度チェック、その繰り返し。
0063132人目の素数さん
2013/11/20(水) 23:38:43.40tmp <- sample(1:150, 100)
のtmpって何を表してるんですか?
参考書のどこにも説明がなくて困ってます
0064132人目の素数さん
2013/11/21(木) 10:16:15.79何を表しているのかという問いに対する答えはRオブジェクトです。
tmpという文字列はRオブジェクトにつける名前で、
ユーザが任意に決めます。
0065132人目の素数さん
2013/11/21(木) 23:52:37.83ヒントありがとうございました。MinGWですか、、VC++で無理目だったらMinGWでアタックしてみます。
時間はあるんで、いろいろ勉強していきます。
0066132人目の素数さん
2013/11/26(火) 21:31:29.060067132人目の素数さん
2013/12/10(火) 07:27:48.64result <- lm(Sepal.Length ~ ., data=iris)
とでもして、result$coefficientsを取り出したいとき、
result$coe
でも出ちゃうんですが、この補完機能(?)は切れないのでしょうか?
ちょっとスペルが足りなくてもエラーがでないのでいつか問題が起きそうな気が
してしまうのですが、それとも心配しすぎでしょうか
0068132人目の素数さん
2013/12/10(火) 09:41:58.44逆に、プログラムの内部で、
result$coefficientsの代わりにresult$coeとコーディングしているものがあれば、
プログラムが動かなくなるけど、そういう副作用はいいの?
一意の場合は省略可能というルールがある限り、そのルールでRが動いているのだから、
それでよいのでは?
0069132人目の素数さん
2013/12/11(水) 01:32:30.36http://readwrite.jp/archives/2534
0070132人目の素数さん
2013/12/11(水) 07:27:37.57http://blogs.computerworld.com/big-data/23204/python-really-supplanting-r-data-work
http://blog.revolutionanalytics.com/2013/12/r-and-python.html
0071132人目の素数さん
2013/12/11(水) 10:31:49.73クラスタリングベクトルを出した後、その結果を元のデータフレームに結合して
それをもとに条件抽出し該当データフレームを抽出したいのですが、クラスタリングベクトルの数値を条件にすることはできないのでしょうか
たとえば、
SEX HEIGHT WEIGHT
1 F 158 51
2 F 162 55
3 M 177 72
4 M 173 57
5 M 166 64
とあったとき
SEX HEIGHT WEIGHT CLUSTER
1 F 158 51 1
2 F 162 55 2
3 M 177 72 3
4 M 173 57 3
5 M 166 64 2
というように結合してCLUSTERの数値をもとに抽出を行いたいです
0072132人目の素数さん
2013/12/11(水) 11:19:27.24両方使ってるけどね
0073132人目の素数さん
2013/12/11(水) 16:01:23.35> (a <- data.frame(sex=factor(c("F","F","M","M","M")), height=c(158,162,177,173,166), weight=c(51,55,72,57,64)))
sex height weight
1 F 158 51
2 F 162 55
3 M 177 72
4 M 173 57
5 M 166 64
> a$sex <- as.numeric(a$sex)
> cl <- kmeans(as.matrix(a), 3)
> (b <- cbind(a, cluster=cl$cluster))
sex height weight cluster
1 1 158 51 1
2 1 162 55 1
3 2 177 72 2
4 2 173 57 3
5 2 166 64 3
3だけ抽出
> b[b$cluster == 3, ]
sex height weight cluster
4 2 173 57 3
5 2 166 64 3
こういうこと?ちなみに、cbind()で結合する必要はないよ。
0074132人目の素数さん
2013/12/14(土) 16:20:31.15整形はExcelでやって、統計解析だけRを使うのは異端なのか?
0075132人目の素数さん
2013/12/14(土) 16:28:21.090076132人目の素数さん
2013/12/14(土) 19:08:13.080077132人目の素数さん
2013/12/14(土) 21:05:34.56そんなことはないし、Excelでも何でも使えるなら使えば良いと思う。
でも、世の中のデータはそんな単純なデータばかりじゃない。
0078132人目の素数さん
2013/12/14(土) 23:12:19.65RExcelとか使うでしょ。
他にも
「RとRubyによるデータ解析入門」とか
「R&JavaScriptによるデータ解析と視覚化テクニック」
とか言う本が出ているくらいだから、お察し。
ただ、最近は、R使わずに全部Pythonでやっちゃえとかいう Python好きが居て、
それはそれでうっとおしい。
0079132人目の素数さん
2013/12/15(日) 00:21:48.74コマンド一つで処理できれば言語はどうでもいい。適当なのを使えばいいだけ。
0080132人目の素数さん
2013/12/15(日) 01:35:28.58俺のことか?
0081132人目の素数さん
2013/12/19(木) 15:45:13.08t.test()だと、T検定の平均値ほかいくつもの結果が表示される。
他のプログラムからRの計算結果(信頼区間の下限値)だけを取り出したいのだが。
良い方法ありますか?
0082132人目の素数さん
2013/12/19(木) 16:11:17.73よく分からないな。
信頼区間の下限値を取り出せばよいのでは?
例えば、t.test()はhtestクラスのlistを返す。そのlistにはconf.intという名前の要素があり、
それは数値ベクトル(要素数は2)だ。その1つめの要素が下限。
他のプログラムって何?javaやpythonなど専用のインファーフェイスがあるよ。
探してみれば?
パイプで渡したいなら、パイプで渡せば良い。
パイプで渡すならこんな感じ?
$ Rscript -e 't.test(1:100)$conf.int[1]' |sed 's/¥[.¥]//g'
44.74349
0083132人目の素数さん
2013/12/19(木) 18:57:49.90をつけて解決しました。
ありがとうございます。
他のプログラムというのは、CのDLLです。Rccpを利用するか悩みどころです。
0084132人目の素数さん
2013/12/19(木) 19:33:06.33それ、下限じゃなくて上限では?
> 他のプログラムというのは、CのDLLです。Rccpを利用するか悩みどころです。
またしても意味不明瞭。よく分からないな。
Rの中からCプログラムを呼び出すのか、Cプログラムの中でRを呼び出したいのか。
なぜ、exeじゃなくてdllと言うのか。「CのDLL」という表現ならWindows限定なのか。
Windows限定ならRと通信する方法がもっと別にあるのじゃないだろうか。
0085132人目の素数さん
2013/12/19(木) 23:40:49.36すいません。$conf.int[1]で下限ですね。
>またしても意味不明瞭。よく分からないな。
>Rの中からCプログラムを呼び出すのか、Cプログラムの中でRを呼び出したいのか。
Cプログラムの中でRを呼び出したいです。
これはきちんと説明せねば。少し長くなりますが、、
MT4という為替取引(いわゆるFX)を支援するアプリがあり、
このアプリには自由に取引のアルゴリズムを作れるよう独自のプログラム作成機能があります。
その言語がC言語に似たmqlと呼ばれるものです。
通常は、mqlファイルを専用のコンパイラでコンパイルしてMT4で実行します。
ただ、MT4で実行されるものはメモリや実行速度において弱い部分があり、
その為、MT4に利用できる.dllをC言語などで作成し、dll上でアルゴリズム計算をさせMT4に返す
という方法をとる人もいます。というか自分がそういう状態です。
MT4(mql) → my.dll
記述的にはmqlファイルにmy.dllをimportさせます。
このdllから、Rに対して統計的な計算をさせその結果を得たいと思案して先の質問となりました。
t.test()で表示される内容は解っていたのですが、そこから数値だけをどうすれば返すのか、わからなかったのです。
0086132人目の素数さん
2013/12/19(木) 23:42:24.49どうやら、Rcppを使えば良いかも?というレベルです。
ただし、MT4において、mt4R.dllというフリーのライブラリがあり、それを用いると
簡単な記述でMT4とRを連携させることができます。それは当方も確認済みです。
下のような流れです。
MT4(mql) → mt4R.dll → R
さて、自分は my.dllを作成していますが、mt4R.dllを利用してRを計算するには、
MT4(mql) → my.dll → MT4(mql) → mt4R.dll → R
という手順を踏まないといけません。MT4(mql) ⇔ my.dllとの配列の扱いも実は面倒な仕様があり、できれば
MT4(mql) → my.dll → R
のように直接my.dllからRを呼び出し計算させその答えが得たらいいなと思います。
とりあえず、t.test()から知りたい統計結果だけをとりだせたのでまずは一歩すすみました。
Rcppを持ちいるほかに良い方法があるようでしたら、教えてくだされば幸いです。
0087132人目の素数さん
2013/12/20(金) 00:14:58.570088132人目の素数さん
2013/12/20(金) 00:41:08.46このあたりを読むか、
RCOMのようなものを使うか
ttp://sunsite.univie.ac.at/rcom/
0089132人目の素数さん
2013/12/20(金) 11:49:32.67よく読んで参考にさせていただきます。
0090132人目の素数さん
2013/12/20(金) 17:05:17.550091132人目の素数さん
2013/12/20(金) 17:10:08.260092132人目の素数さん
2013/12/21(土) 10:17:02.43参考になる意見だな
0093132人目の素数さん
2013/12/22(日) 19:47:07.69http://d.hatena.ne.jp/yutakikuchi/20120730/1343605481
kabu_data_close = as.ts( scan( "/home/yuta/work/R/kabu/data/kabu_ar_training_close.txt" ) )
ar_predict_result <- matrix()
arima_predict_result <- matrix()
j <- 1
for( i in 123:136) {
training_kabu_data <- kabu_data_close[1:i]
#ARModel
ar_data_close <- ar( training_kabu_data )
ar_predict_close <- predict( ar_data_close, n.ahead = 1 )
#ARIMAModel
arima_data_close <- arima( training_kabu_data, order=c(1,0,1) )
arima_predict_close <- predict( arima_data_close, n.ahead = i )
ar_predict_result[j] <- ar_predict_close$pred[1]
arima_predict_result[j] <- arima_predict_close$pred[1]
j <- j+1
}
scanでよみこんだtxtはデータの数が123こあります。なのにfor文は123:136で
<- kabu_data_close[1:i]となっています。123以降はkabu_data_closeには入ってないのではないのでしょうか??
というか違うデータでですがError in na.fail.default(as.ts(x)) : missing values in object
とでます
0094132人目の素数さん
2013/12/22(日) 21:29:08.90エスパー募集ですか?
さすがに、kabu_data_closeの構造を秘密にされたら答えようがない。
str()ぐらい示そうよ
ちなみに、
> hoge <- as.ts(1:100)
> str(hoge)
Time-Series [1:100] from 1 to 100: 1 2 3 4 5 6 7 8 9 10 ...
> hoge[101:110]
[1] NA NA NA NA NA NA NA NA NA NA
という仕様。
0095132人目の素数さん
2013/12/22(日) 23:07:53.72返信ありがとうございます。
>>93のkabu_data_closeとは違いますが
> kabu_data_close = as.ts( scan( "C:/Users/root/Documents/kabu_ar_training_close.txt" ) )
Read 120 items
> ar_predict_result <- matrix()
> arima_predict_result <- matrix()
> j <- 1
> for( i in 120:133) {
+
+ training_kabu_data <- kabu_data_close[1:i]
以下同文
で
Error in na.fail.default(as.ts(x)) : missing values in object
> str(kabu_data_close)
Time-Series [1:120] from 1 to 120: 10688 10599 10508 10579 10653 ...
とでます
009693
2013/12/23(月) 00:09:31.23したいことは一回一回学習して予測することです。
+ j <- j+1
kabu_data_close[i+1]<-ar_predict_result[j]
}
を加えてみましたが
Error in `[<-.ts`(`*tmp*`, i, value = NA_real_) :
only replacement of elements is allowed
とでます。
009793
2013/12/23(月) 01:17:20.89サイトのコメント欄に同じ質問がありました。。。
0098132人目の素数さん
2013/12/23(月) 07:48:48.61そういうときは、どういう風に解決したかをまとめて、ここにも貼るものでしょ!
0099132人目の素数さん
2013/12/23(月) 08:53:02.60株価予測は株価だけしか使わないのが当たり前になってるのが不思議。
010093
2013/12/23(月) 09:00:50.98普通にfor文の136までのデータを使ってるようでした;;
技術的な問題じゃないので申し訳ないのですが
予測するデータは2012年7月以降、学習データは2012-01-04〜予測の前日
このサイトの流れから予測の前日というのが7月の前日まで
と勘違いしていました。;
0101132人目の素数さん
2013/12/23(月) 09:37:21.10■ このスレッドは過去ログ倉庫に格納されています