タイトル未定(Blog)

By Kaoru Babasaki

Advent of Code 2023 Day 1

明けましておめでとうございます。 昨年の年末、とある理由で2023 のAdvent of Code をちょっとずつ解いていたので、自分の解答や、ちょっとしたメモを残していこうと思います。 なお、全部pythonで書いています。 全部解き終わったタイミングで、まとめてgithubにあげようかなと考えていますが、いつになるかはわかりません。 それでは、早速Day 1 の解答を書いていきます。 Part a 問題の概要 数字と文字が混ざった文字列が与えられる。 この文字列のそれぞれの行に含まれる最初の数字と最後の数字を取り出し、それらを結合した数値を求める。 例: 1abc2 → 12 pqr3stu8vwx → 38 a1b2c3d4e5f → 15 treb7uchet → 77 課題は、与えられた入力ファイルの全ての行について、この方法で校正値を求めて合計することである。 この例では、4つの行の校正値(12 + 38 + 15 + 77)を合計すると142になる。 My solution from fastcore.utils import L, first, last, groupby from aocd import get_data, submit import fastcore.all as fc, re, math, itertools, functools, numpy as np, typing ,dataclasses, matplotlib.pyplot as plt, collections, regex from regex import findall def get_calibration_value(x:str): digits = re....

January 7, 2025 · 1 min · Kaoru Babasaki

『Pythonではじめる時系列分析入門』のorg version repoを作ったよ

最近、 馬場 真哉 (著) 『Pythonではじめる時系列分析入門』という本を読みました。 この本はpythonのコードを手で動かしながら時系列分析の基礎を学ぶことができる本で、とてもためになりました。 特にsktimeという、トレンド・季節性の除去などの前処理や予測モデルをsklearnのように簡単にpipeline化できるライブラリを知ることができた点がよかったです。 馬場先生はこの本の公式リポジトリを公開されているのですが、pythonコードがjupyter notebook形式で書かれているため、heavy emacserの私としてはどうしてもorg-modeを使いたくなってしまいました。 そこで、この本のコードをorg-mode形式に変換したリポジトリを作成しました。 リポジトリのリンク このリポジトリを使って、emacsユーザーの方々がこの本を読む際に、jupyter notebookを使わずにorg-modeでコードを実行できるようになればと思います。 特にないと思いますが、このリポジトリを使って何か問題が発生した場合は、pull requestやissueを送っていただけると助かります。 時系列分析勉強中のemacsユーザーは私に感謝したうえで今年のクリスマスは家族と過ごしてください。 読んでいただきありがとうございました。

December 22, 2024 · 1 min · B.Kaoru

emacsをupgradeしたらankiの数式が汚くなったので直した

導入 こんにちは。 私は日頃からanki-editor を使ってAnkiのカードを作成しているのですが、 Emacsをupgradeすると、数式が汚く表示されるようになってしまいました。 症状としては、 デスクトップ版のAnkiのBrowserで各Fieldのプレビューで数式が数式として表示されない (plain latex codeとして表示される) 数式がpng画像として表示される (もともとはMathJax inlineで表示されていた) というものでした。 デスクトップ版のAnkiでcardを編集することはほぼないので、1の症状についてはまだ許容範囲でしたが、 2のほうについては、数式の解像度だけ低くなったり、他の文字とのサイズが合わなくなったりして、かなり気になりました。 解決策 以下を config.org に追加することで解決しました。 (use-package! anki-editor :after org :init (setq-default anki-editor-latex-style 'mathjax)) この解決策に至った背景 anki-editor でpushされたカードは、HTMLに変換された状態でカードとして保存されます。 うまく数式が表示されるカードのHTMLを見ると、数式は以下のように anki-mathjax というタグで囲まれていました。 <anki-mathjax block="true">1 + 1 = 3</anki-mathjax> 一方、今回の問題が発生したカードのHTMLを見ると、数式は以下のように p タグと [$$] で囲まれていました。 <p>[$$] 1 + 1 = 3 [/$$]</p> したがって、anki-editorがorgテキストをHTMLに変換する部分で、問題が発生していることがわかりました。 anki-editor.el の中を見てみると、以下のように anki-editor-latex-style という変数によって、latexのスタイルを変更できるようになっており、今回の解決策に至りました。 (defun anki-editor--translate-latex-env (latex-code) (setq latex-code (replace-regexp-in-string "\n" "<br>" (org-html-encode-plain-text latex-code))) (cl-ecase anki-editor-latex-style (builtin (concat "[latex]<br>" latex-code "[/latex]")) (mathjax (concat "\\[<br>" latex-code "\\]")))) 読んでいただきありがとうございました。...

November 24, 2024 · 1 min · Kaoru Babasaki

Hoff/標準ベイズ 演習問題 10-4

導入 Answers of exercises on Hoff, A first course in Bayesian statistical methods (標準ベイズ統計学の演習問題の解答例) を更新(10-4を追加)したので、このブログでもその内容をほんの少しだけ触れようと思います。 まず、この問題と教科書本文の関係について簡単に説明します。 以前 Hoff/標準ベイズのM-Hアルゴリズムがworkすることの証明でつまずいた話 という記事を書きましたが、Hoff (2009) では10章でM-Hアルゴリズムがうまくいくことの-証明を以下のステップで行っています。 M-Hアルゴリズムは、 irreducible (非可約), aperiodic (非周期的), positive recurrent (正再帰的) なマルコフ連鎖を生成する。 Ergodic Theoremより、\(s \to \infty\)で \(\mathrm{Pr}(x^{(s)} \in A) \to \pi(A)\) for any set \(A\); \(\frac{1}{S} \sum g(x^{(s)}) \to \int g(x) \pi(x) dx\). を満たす\(\pi\)が一意に存在する。 このような\(\pi\)は定常分布と呼ばれ、以下の性質を持つ If \(x^{(s)} \sim \pi\), and \(x^{(s+1)} \) is generated from the Markov chain starting at \(x^{(s)}\), then \(\mathrm{Pr}(x^{(s+1)} \in A) = \pi(A)\)....

November 19, 2024 · 2 min · Kaoru Babasaki

ox-htmlで\bmなどのlatexマクロを使う方法

問題 \bm{a} 上の数式を書いたorg fileは、latex(pdf)へのexportであれば \usepackage{bm} とセットで斜体太字になるところ、 ox-html で単にHTMLとして exportしただけではlatexマクロとして認識されなかったので、その対処法を解説します。 latexによる数式をHTML上で表示する場合、MathJaxというライブラリを使うことが一般的であり、今回の問題も \bm をMathJaxでマクロとして認識させることで解決できます。 このQiita記事がまさにそれをやっていたので、それを参考にまず以下の方法を試してみました。 最初に試した方法 以下のブロックをorg fileに追加しました。 #+BEGIN_EXPORT html <script> MathJax = { tex: { macros: { bm: ["\\boldsymbol{#1}", 1], }, } }; </script> #+END_EXPORT 結果、 \bm はうまく斜体太字になったが、 \eqref{} など他のlatexマクロが逆にうまく表示されなくなってしまうという問題が発生しました。 解決策 よく調べてみると、 ox-html の変数に、 org-html-mathjax-template というものがあり、そこにMathJaxの設定を書き込むことで、latexマクロをHTML上で認識させることができることがわかりました。 テコちゃんのconfigを参考に、以下の設定config.orgに追加することで解決しました。 (setq org-html-mathjax-template "<script> window.MathJax = { loader: { load: ['[tex]/mathtools'], }, tex: { ams: { multlineWidth: '%MULTLINEWIDTH' }, tags: '%TAGS', tagSide: '%TAGSIDE', tagIndent: '%TAGINDENT', packages: {'[+]': ['mathtools']}, macros: { RR: ['\\\\ifstrempty{#1}{\\\\mathbb{R}}{\\\\mathbb{R}^{#1}}', 1, ''], NN: ['\\\\ifstrempty{#1}{\\\\mathbb{N}}{\\\\mathbb{N}^{#1}}', 1, ''], ZZ: ['\\\\ifstrempty{#1}{\\\\mathbb{Z}}{\\\\mathbb{Z}^{#1}}', 1, ''], QQ: ['\\\\ifstrempty{#1}{\\\\mathbb{Q}}{\\\\mathbb{Q}^{#1}}', 1, ''], CC: ['\\\\ifstrempty{#1}{\\\\mathbb{C}}{\\\\mathbb{C}^{#1}}', 1, ''], bm: ['\\\\boldsymbol{#1}', 1], ;; <- ここに\bmの設定を追加 EE: '\\\\mathbb{E}', Lap: '\\\\operatorname{\\\\mathcal{L}}', Var: '\\\\operatorname{Var}', Cor: '\\\\operatorname{Cor}', E: '\\\\operatorname{E}', }, mathtools: { pairedDelimiters: { abs: ['\\\\lvert', '\\\\rvert'], norm: ['\\\\lVert', '\\\\rVert'], ceil: ['\\\\lceil', '\\\\rceil'], floor: ['\\\\lfloor', '\\\\rfloor'], round: ['\\\\lfloor', '\\\\rceil'], } } }, chtml: { scale: %SCALE, displayAlign: '%ALIGN', displayIndent: '%INDENT' }, svg: { scale: %SCALE, displayAlign: '%ALIGN', displayIndent: '%INDENT' }, output: { font: '%FONT', displayOverflow: '%OVERFLOW' } }; </script> <script id=\"MathJax-script\" async src=\"%PATH\"> </script>") これでどんなlatexマクロもHTML上で認譫させることができますね!...

November 18, 2024 · 1 min · Kaoru Babasaki

ox-hugoのreferenceがうまく表示されない問題

問題 Org Cite Citationsを使って #+print_bibliography: でreferenceを表示しようとしたが、“References"というヘッダのみが表示され、referenceのリストが表示されなかった。 content/ の中のmdファイルを見ると、htmlとして、referenceのリストが書き出されていたが、 public/ の中のhtmlファイルを見ると、referenceのリストが表示されていなかった。 よって、 org -> md -> html という変換の md -> html の部分で問題があると考え、調べてみると、同じ問題についてのissueが立っており、以下の解決策にたどり着いた。 解決策 config.tomlに [markup.goldmark.renderer] unsafe = true を追加することで解決できる 自分の場合はymlを使っていたので、以下のように設定した。 markup: goldmark: renderer: unsafe: true 解説 Goldmark — ox-hugo - Org to Hugo exporter で書かれているように、 Hugo v0.60.0以降、デフォルトのMarkdownパーサーはCommonMark準拠のGoldmarkに変更された。 以前のデフォルトパーサーであるBlackfridayは、仕様に準拠しておらず、多くのバグを抱えていたらしく、ox-hugoを使い続ける場合は、特別な理由がない限り、Goldmarkに移行することが推奨されている。 ただし、Goldmark/Hugoには、Blackfridayと比較してMarkdownのパース方法にいくつかの問題があり、 その一つが、今回の問題である、インラインHTMLがうまく表示されないというものっぽい。 この解決策によって、Markdown内でインラインHTML を使用できるようになるということらしい。

November 12, 2024 · 1 min · Kaoru Babasaki

Hoff/標準ベイズのM-Hアルゴリズムがworkすることの証明でつまずいた話

はじめに Hoff (2009)およびHoff et al. (2022) 10.4.2 Why does the Metropolis-Hastings algorithm work? (メトロポリス・ヘイスティングスアルゴリズムはなぜうまくいくのか) で行われている証明について、つまずいた点があったので自分の中の整理がてら書いてみます。 Hoffの証明の流れ Hoff (2009)およびHoff et al. (2022)では、 M-Hアルゴリズムによって生成されたマルコフ連鎖が目標分布\(p_0\)を近似できる理由の証明が以下の流れで行われています。 M-Hアルゴリズムは、 irreducible (非可約), aperiodic (非周期的), positive recurrent (正再帰的) なマルコフ連鎖を生成する。 Ergodic Theoremより、\(s \to \infty\)で \(\mathrm{Pr}(x^{(s)} \in A) \to \pi(A)\) for any set \(A\); \(\frac{1}{S} \sum g(x^{(s)}) \to \int g(x) \pi(x) dx\). を満たす\(\pi\)が一意に存在する。 このような\(\pi\)は定常分布と呼ばれ、以下の 性質 を持つ If \(x^{(s)} \sim \pi\), and \(x^{(s+1)} \) is generated from the Markov chain starting at \(x^{(s)}\), then \(\mathrm{Pr}(x^{(s+1)} \in A) = \pi(A)\)....

November 11, 2024 · 2 min · Kaoru Babasaki

修論+αの論文がarXivにアップロードされたよ

久しぶりの投稿です。(読んでくれてる人はおそらく一人ですが) 自分の修論にアップデートを加えたものが、arXivにアップロードされました。 論文: Babasaki, K., Sugasawa, S., McAlinn, K. and Takanashi, K. (2024). Ensemble doubly robust Bayesian inference via regression synthesis. (arXiv:2409.06288) この論文では、 マクリン先生が作ったBayesian Predictive Synthesis (BPS)というアンサンブル手法を因果推論、特に平均因果効果(ATE)推定の文脈で拡張し、doubly robust Bayesian regression synthesis という手法を提案してます。 詳しくは論文を読んでもらえるとありがたいです。 この論文を読むうえでは以下の論文を読むことをお勧めします。 McAlinn, K. & West, M. (2019). Dynamic Bayesian Predictive Synthesis in Time Series Forecasting. (Journal of Econometrics 210: 155-169) Sugasawa, S., McAlinn, K., Takanashi, K. and Airoldi, E. A. (2023). Bayesian causal synthesis for meta-inference on heterogeneous treatment effect....

October 5, 2024 · 1 min · B.Kaoru

ベイズの発表をしたよ

こんにちは。 大学のある授業で、中妻先生の名著『Pythonによる ベイズ統計学入門 (実践Pythonライブラリー)』 の 3.1 節までを友達のけいごくんと一緒にスライドにまとめて発表したので、そのスライドを公開します。 発表資料のリンク この資料は emacs の org-mode で作りました。 発表の内容とは関係なく、reveal.js や org-re-reveal の使い方を調べながら試行錯誤するのにとても時間がかかりました。 そのその甲斐あって、 1 番の目的であった、学部生に対してドヤ顔をかますことができました。 今度、暇なときに org-re-reveal の使い方や tips をまとめてみようと思います。 では、また今度。

April 23, 2023 · 1 min · B.Kaoru

Exercise 0.4.6

Prove Proposition 0.4.11 (Inverse image of intersection, union) 1 \( f^{-1} (A \cap B) = f^{-1} (A) \cap f^{-1} (B) \) Proof: 1 To show \(f^{-1}(A \cap B) \subset f^{-1} (A) \cap f^{-1} (B)\) \(x \in f^{-1}(A \cap B)\) を任意にとる。 すると、 \begin{align*} & f(x) \in A \cap B \qquad (\because \text{逆像の定義})\\ \Leftrightarrow & f(x) \in A \text{ and } f(x) \in B \\ \Leftrightarrow & x \in f^{-1}(A) \text{ and } x \in f^{-1}(B) \qquad (\because \text{逆像の定義}) \\ \Leftrightarrow & x \in f^{-1}(A) \cap f^{-1}(B) \quad \square \end{align*}...

April 5, 2023 · 2 min · B.Kaoru