#Julia言語 値の集合から確率を指定してサンプルを1つ抽出する方法

using StatsBase
a = sample([2, 3, 5], ProbabilityWeights([0.2, 0.3, 0.5]))

using Distributions
a = rand(DiscreteNonParametric([2, 3, 5], [0.2, 0.3, 0.5]))

複数取り出す場合は添付画像。

github.com/genkuroki/publ…
#Julia言語 Juliaでappend!は配列に配列を追加するために使うことが普通で、配列に要素を追加するために普通使うのはpush!です。REPLで

julia> ?
help?> append!

julia> ?
help?> push!

を確認してみてください。REPLに ? で質問すると沢山のことが分かります。続く
#Julia言語 Pythonから来た人達がよくやっている失敗は

a = []
for i in 1:n
xを計算
push!(a, x)
end

というコードで長さnの1次元配列を作ること。

このaのeltype(a)はAnyになるので、aを使う計算が数十倍遅くなる。

具体的に他のどのような書き方が適切であるかはケースバイケース。続く
#Julia言語 多くの人がよくやってしまう失敗は、計算速度向上を目指しているのに、グローバル変数を函数の引数を経由せずに使ってしまうことです。計算が数十倍遅くなります。

函数として書いていないコードを実行すると大抵そうなります。(let ~ end で囲んでいる場合は例外的)
#Julia言語 Fortranから来た人は主にグローバル変数の問題を気にしていれば何とかなり易いという印象あり。もともと数値計算に慣れている点も大きい。

しかし、Pythonから来た人は、Pythonが特殊で風変わりであることに気付いていないと、Juliaで(実際には他でも)失敗するパターンが非常に多い。
#Julia言語 特にPythonから来た人は

docs.julialang.org/en/v1/manual/p…
Performance Tips

を最初に読んでおくと、計算を遅くする多くの失敗を事前に防ぐことができて、時間の無駄を省けると思う。

私自身はこの文書の存在を気付いたとき「最初にこれの存在を教えてくれよ😭」と泣きが入りました。
多分、需要が大きいのは、

 Pythonから #Julia言語 への翻訳例



docs.julialang.org/en/v1/manual/p…
Performance Tips

の要求をすべて守っているもので注意するべきことの解説付きのものの集まり。

クラスを使っている部分の翻訳の仕方も含まれる。

誰か頑張って書くと良いと思う。かなり大変そう!
「Pythonから #Julia言語 への翻訳で注意するべきこと」はものすごく多いので、個人的には普通の人間には大変すぎる仕事になるような気がします。

あと、ユーザー数が巨大でお客さんの立場で論評し易いPythonの世界と、全然そうではないJuliaの世界の違いを最初に認識することも大事だと思う。
#Julia言語 っぽい書き方については

v1.6以下
github.com/genkuroki/publ…

v1.7以上
github.com/genkuroki/publ…

を参照。

扱っている題材は一様重力下での質点の投げ上げなので中学校レベル。地球と月の場合を計算している。
#Julia言語 できるだけFloat64とかInt64のような具体的な型名を書かない方針になっていることにも注目。

Float64とかInt64のような具体的な型名を書かない代わりに、Problemタイプの定義で型パラメータG, Y0, V0, TSを使っている。

v1.7以上でのコード
github.com/genkuroki/publ…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 黒木玄 Gen Kuroki

黒木玄 Gen Kuroki Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @genkuroki

14 Sep
#Julia言語 『数値計算の常識』という有名な本があって第5章のタイトルが「逆行列よさようなら」です。

Juliaでは計画行列Xによるバックスラッシュ演算

β̂ = X \ y

の一発で最小二乗法も計算できます。

github.com/genkuroki/publ…
#数楽 Xが縦長の行列で、β, y が縦ベクトルのときの、βの成分に関する連立一次方程式

Xβ = y

は一般に解を持たないのですが、Xβとyのユークリッド距離を最小にするようなβをβ̂と書いて、「解」とみなすのが最小二乗法の考え方です。その「解」を

β̂ = X \ y

と書くことは記号法的に自然です。
#Julia言語 Juliaがバックスラッシュ二項演算子で最小二乗法も可能にしていることの背景には以上のような数学が隠れています。
Read 13 tweets
13 Sep
#統計 #数楽 この短い動画も非常にためになるし楽しめる。

「変分ベイズ」「変分推論」のように呼ばれる方法は、計算が大変な真の分布φ(w)を特別な形の分布ψ(w)でφ(w)から最も出て来やすいもので近似する方法。続く
#統計 Kullback-Leibler情報量 D(ψ||φ) は、Sanovの定理より、「分布φのサンプルの分布として分布ψに近いものの出て来やすさ」を意味する。

もしも分布ψの台が分布φの台よりも真に大きいならば、そのはみ出した部分の値はφから出て来ないので、D(ψ||φ) = ∞ となる。

続く
#統計 D(ψ||φ) < ∞ ならばψの台はφの台に含まれる。

固定されたφに対して、特別な形のψを動かして、D(ψ||φ) を最小化すると(変分推論!)、分布ψは分布φよりも狭い部分に集中した感じの分布になり易い。

以下のリンク先の場合には実際に概ねそうなっているように見える。
Read 16 tweets
12 Sep
素晴らしいスレッドだったので大量にRTしました。

しかし、最後に「立式」という聴き慣れない有害で特殊な意味を持つ算数教育用語を使ってしまっている点は、人権問題に発展するかもしれないので注意が必要だと思いました。😝

「式  答え 」のスタイルそのものが子供を悪しき枠にはめている。
多くの人が誤解していることですが、「立式」という用語は国語辞典にも載っていない用語で、単に「式を作る」というようなニュートラルな意味を持つ無害な用語ではありません。

子供を害するちょー算数の中核部分と関係している極めて有害な用語なので取り扱い注意です。
「立式」という特殊な用語が歴史的にどのように使われていたかについては、以下のスレッドを参照。

「立式の意図」を以下のリンク先の意味で子供に問う行為は、人権問題に発展する恐れが十分にあります。😝
Read 6 tweets
12 Sep
東京大学出版会の『統計学入門』を運悪く「真面目」に読んでしまい、それに従って、「確率ではなく、割合だ」というスタイルで「信頼区間警察」をやっている側が狼藉之義也の「ヒャッハー」達だという問題。

へたをするとこれが高校数学にも伝搬する恐れがある。
最近の例では

tjo.hatenablog.com/entry/2021/07/…
渋谷駅前で働くデータサイエンティストのブログ
2021-07-16
95%信頼区間の「95%」の意味

がひどい。

教科書に書いてあるという事実は正しいことの証拠にはなりません。
#統計 正しい考え方

* 信頼区間の計算では通常パラメータを持つモデル(例えば正規分布モデルや二項分布モデルなど)が使われる。

* 95%信頼区間の95%はそのモデル内での標本分布で測った確率(の近似値)になる。

* 使用したモデルが現実において妥当でなければ、信頼区間は信頼できないものになる。
Read 22 tweets
12 Sep
一般に印象操作に一所懸命な変な人の意見は適当にスルーした方がよいと思いました。
一般に、難しいことを理解できない人たちで周囲を固めている人の観測範囲内でそれが受け入れられていないことと、それが実際に有用であるか否かは無関係。
大学で統計学が専門じゃないのに統計学の講義を受け持つことになった人にとって、カイヤンさんが説明してくれていることの多くが参考になると思います。

ついつい「流行っている」という理由でベイズ統計の話題に触れるときに、注意するべきことがあります。「主義」に関わる話題は本当に要注意。
Read 6 tweets
11 Sep
#Julia言語 1万人に一人あたり100万円配って、その後ランダムに誰かから1万円を取り上げて(破産していたら取るのを諦める)、別の誰かに配ることを繰り返したときの、保有金額の分布の推移のアニメーション。

分布の収束先は不平等な指数分布。

これは「税額一定」の場合。

github.com/genkuroki/publ…
#Julia言語 不平等な指数分布になった後に、今度はランダムに誰かを選んで保有金額の5%の税金を徴収して別の誰かに配ることを繰り返すとこうなる。

分布の収束先はかなり平等的なガンマ分布。

証明は知らない。誰か教えて!(笑)

(((わざと真剣に考えていない)))

github.com/genkuroki/publ…
#Julia言語 ここからが真に面白い話になる。

さて、ついさっき税額ではなく、税率を一定にしたランダムな富の分配で平等に近付けることができることを紹介した。

税率は5%だった。

問題:税率を50%に上げるとさらに平等になるか?
Read 21 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(