2018-01-01から1年間の記事一覧

PythonのRequestsライブラリのデフォルトの証明書のパス

ここで requests/utils.py at c501ec986daa4961cd9dee370b5d45ff2e524b37 · requests/requests · GitHub 設定されてて、こいつは調べると requests/certs.py at c501ec986daa4961cd9dee370b5d45ff2e524b37 · requests/requests · GitHub にあるように certif…

Spark DataFrameに新しい列を追加する

下記のようにUDF使うか, mapでDataFrameごと新しくするか、なのか? import spark.implicits._ import org.apache.spark.sql.functions._ // Example data val df = Seq( (1, 2), (3, 4), (5, 6) ).toDF("x", "y") // Define function val hoge = udf({(x: I…

sum_{i=1}^{N}(標準正規分布×標準正規分布) = 標準正規分布×自由度Nのカイ分布

なんでこうなるかの数式の証明はまだ読み切れてないんだが、とりあえずコード書いて検算したのとLINKのメモ。確かにヒストグラムがほぼほぼ重なる… #自由度とサンプルサイズ df <- 10 size <- 10^4 # 標準正規分布×自由度dfのカイ分布(カイ二乗分布に従う乱…

rlangと戯れて気が付いたこやつとの私的正しい付き合い方

掲題の件、Tidy Evalというかrlangパッケージを、下記の記事をはじめいろいろ使いこなそうと試行錯誤してきた。 いい加減、俺なりの楽なやり方が見つかったのでまとめておく。 eval(parse(text=...))をモダンに書きたい - My Life as a Mock Quant 全ての引…

”関数の引数になってる変数名を取得する”を新旧の書き方で書く

前も書いた気がするんだが一応。 rlangのほうがモダンなやつ > f1 <- function(x){rlang::expr_text(rlang::enexpr(x))} > f2 <- function(x){deparse(substitute(x))} > a <- 123 > f1(a) [1] "a" > f2(a) [1] "a"

パッケージ開発中に依存パッケージインストールするにはdevtools::install_deps()

とりあえず開発してるPackageをRStudioあたりで開いておいて、以下を叩けばOKだって。 devtools::install_deps(dependencies = TRUE) なるほどね~ - https://www.rdocumentation.org/packages/devtools/versions/1.13.6/topics/install_deps

DataExplorer packageでデータを大雑把に把握する

R

「データを大雑把にとらえるために何も考えずにこれに突っ込む」みたいな感じで使えてよい。 あと、BLOG移転したい。(パッケージは別途インストール済として)たった↓だけのコードで library("DataExplorer") create_report(iris) こういう結果がでる。repo…

あれば環境変数からとる、なければGlobal環境からとる

R

掲題の件がやりたいので、こんな関数をかいた。 get_from_env_or_global_env <- function(x){ if(Sys.getenv(x) != ""){ Sys.getenv(x) } else if(exists(x)){ eval(parse(text = x), envir=.GlobalEnv) } } #環境変数からとる > get_from_env_or_global_env…

bitFlyer LightningのAPI経由でRからBitcoinを買う

R

すっかり放置していたbitFlyer LightningのAPIをRから使う - My Life as a Mock Quantの続き。 POST系のメソッドをやろうとして昔失敗して放置していたのだが、なんか今日やったらうまくいった。 こんなんでRからBitcoinを指値で発注できます(そして2018年6…

ワンライナー(1行)でYAMLを捌いてpretty print

こんなん python -c 'import yaml,sys;print(yaml.dump(yaml.load(sys.stdin)))' < hoge.yml

Batch処理用のCodeの書き方

適当な.jlファイル(hoge.jl)に対して cd("path-to-source-code") push!(LOAD_PATH, pwd()) workspace() ... great code... と三行程度のおまじないを書いたうえで、 julia> include("path-to-souce-code/hoge.jl")するのが楽そうか。 workspace()はなんかモ…

N個の独立な一様乱数(-1, 1)の和の標準偏差は1/3√N

手計算で確認&ボケ防止にRでチェック。 sizes <- 2**(1:15) y <- numeric(length(sizes)) for(i in seq_along(sizes)){ x <- numeric(10**3) for(j in seq_len(10**3)){ x[j] <- sum(runif(sizes[i], min=-1, max=1)) } y[i] <- sd(x) } plot(sizes, y) lin…

glue::glue()をちょっと便利に使う

R

glueパッケージのglue()は、いわばPythonでいう .format() を使えるようにするパッケージなわけで、以下のようにテンプレートの文字列 (ここでは"a is {a}" )を、その”傍にある”*1 変数で勝手に埋めてくれるので便利に使えるわけです。 > a <- 123 > glue::g…

Juliaでlogsumexp

何も考えずにできた。 function logsumexp(x) xmax = maximum(x) xmax + log(sum(exp(x - xmax))) end > x = [1,2,3,10] > log(sum(exp(x))) > logsumexp(x) > 10.001369815771387 Syntaxハイライトが効かないので、そろそろBLOG引越しの機運か。

purrr::map_dfr = lapply + dplyr::bind_rows

そういうことなんだよな〜シミュレーション系でよく使うのでメモ。 > dplyr::bind_rows(lapply(1:3, function(x){head(iris, 1)})) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 5.1 3.5 1.4 0.2 setosa 3 5.1 3.…

fillは shallow copy (浅いコピー)作るので危険

めちゃハマったのでメモ。 julia> mutable struct Hoge x::Int end julia> xs = fill(Hoge(10), 2) 2-element Array{Hoge,1}: Hoge(10) Hoge(10) julia> xs[1].x = 333 333 julia> xs[2].x 333 内包表現(でいいのか?)使うならおk。 julia> xs = [Hoge(10…

Sys.getenv()の結果をdata.frameとして扱いたい

Dlistというクラスのオブジェクトになっていて使いにくい。 > x <- Sys.getenv() > class(x) [1] "Dlist" しょうがないんで、これをdata.frameとして返却する関数を書いた。 get_env <- function(x=NULL) { env <- Sys.getenv(x) class(env) <- NULL env <- …

R MarkdownでTwo Column(2列)なレポートを作りたい

R

将来的にオレオレJulia v.s. Rチートシートを作るための礎。 主にこちらのStackoverflowを見て適当にCSSコピペった。以下のMarkdownが のような形でHTMLになる。 この左右どちらかをJuliaのengineに帰ればHTML版のチートシートは作れるぞと。 --- title: "Tw…

Windows Subsystem for LinuxにJuliaを入れる

諸事情により手を出す&マシン新調予定なのでメモ。 今はWSLっていって、もうBash on Windowsって名前じゃなくなってたんだな。WindowsのBashからhttps://julialang.org/downloads/のGeneric Linux Binaries for x86をwgetして、解凍して、名前変えておしま…

外国債券(為替ヘッジなし)のリスクは、ほとんど為替から来るという話

掲題の件、ちゃんと数式にしておく。 以下、使うものの定義 (お持ちになられている)外国債券の時点tでの現地通貨建て価格(面倒なのでUSD仮定): (お持ちになられており、日々一喜一憂しているであろう)外国債券の時点tでの円建て価格: 時点tでのUSDJPYレート…

paste0()を捨てたい

R

文字列を結合するときに使う paste0()を捨てたくて、 `%+%` <- function(x, y){paste0(x, y)} を定義してみた。 こんな感じで使う。 > "hoge" %+% "moge" [1] "hogemoge" うれしい・・・かな? tidyverseあたりに出てきてもよさそうな機能なんだが、出てきた…

bitFlyer LightningのAPIをRから使う

R

"何でもRでやるおじさん日本代表(タヒチ在住)"として、いい加減書いておかねばならないと思った。 まずは、APIキーを頑張って以下から取得してください。 https://lightning.bitflyer.jp/developer そして、その情報とbitFlyerのURLをなんでもいいんだけど…

全ての引数の名前と値をlistとして取得したい

R

この前教えてもらったのから察するに、こんなんでいいっぽい。 三連ドット(...)的に全部の引数が取れればもっと楽そうだが・・・ > f <- function(x=NULL, y=1){ + purrr::map(rlang::set_names(c("x", "y")), ~ rlang::eval_tidy(rlang::sym(.x))) + } > f…