#統計

標本のばらつきの指標として
分散を採用する必然性は__ない__。
中央値との差の絶対値の加法平均も
立派なばらつきの指標である

という話は繰り返ししている。
しかも、Laplace分布モデルとの関係まで言及している。

繰り返し言及していることの証拠↓
twilog.org/genkuroki/sear…
#統計

標本平均と標本分散の計算
=正規分布モデルによる最尤推定

標本の中央値との中央値との差の絶対値の平均の計算
=Laplace分布モデルによる最尤推定

こういう関係。

「標本の代表値としてどれを重用するか」と
「どのような統計モデルで推定するか」の間には
上のような関係がある。
#統計 モデルが現実に合ってなければ捨てられるのはモデルの側なのに、実質正規分布モデルによる推定になっている「代表値としての分散の採用」にまるで必然性があるかのような説明をしようとしている場合が結構あるように見える。

大学の先生でもこの点はかなりひどいのでは?
#統計 学部レベルの統計学入門の教科書の最大の問題は

本当はモデルを使って考えていてかつ、
モデルが現実に適合している保証が
通常ない場合の議論をしているのに、
まるで何も心配する必要がないかのように
解説が進んで行くこと

である。これは不正直で極めて非科学的な態度である。
#統計 例えば「正規分布の仮定」は現実の通常の統計分析では保証されていないのに、「正規分布の仮定」に基いて計算した信頼区間が信頼できることが当然であるかのように解説が進む。

正規分布モデルで現実がうまく近似できていない場合には、正規分布モデルに基く信頼区間は信頼できなくなります。
#統計 モデルと現実を区別して、

 モデルが現実に合っている保証がなければ、
 そのモデルを使った統計分析の結果は
 信頼できないものになる

というような当たり前の話が統計学入門の教科書には書かれていない。

そういう伝統を作った人達は「科学の敵」扱いされるべきだと私は思います。
#統計 「統計学はお墨付きを得るための道具ではない」と強調されるべき。

統計学を使うことはギャンブルを行うことであり、原理的にお墨付きが得られたとみなされるような結果は統計学からは決して得られないという事実を強調するべき。

ギャンブルを他人に勧める人はその危険性を正直に言うべき。
#統計 私はギャンブルが好きです(笑)
#統計 中央値の特徴付けの証明などについては、今まで複数回紹介して来たはずの

nbviewer.jupyter.org/github/genkuro…

を参照。添付動画はLaplace分布モデルによる推定の例。テストサンプルはガンマ分布で生成している。

真の分布とモデルの分布は違っていてもよいが、誤差がどれだけ増えるかが問題になる。
#統計 所得の分布はガンマ分布っぽい形をしており、記述統計では中央値がよく使われる。中央値を代表値とすることはLaplace分布モデルによる最尤推定とほぼ同じなので、添付動画のようなことをしていることになる。

もっと誤差が小さな推定を行うためには、より適切な統計モデルを探す必要がある。
#統計 中央値の周辺の話はそれだけですでに相当に面白い話になっている。
#統計 添付動画解説

ガンマ分布のサンプルサイズnを増やしながら、Laplace分布モデルによる最尤推定の様子を可視化した。

左半分:サンプルのヒストグラムと最尤推定で得たLaplace分布

右半分:サンプルから決まるLaplace分布モデルの尤度。台が小さくなって行き、推定が収束している。
#統計 i.i.d.サンプルでの最尤推定では、モデルがサンプルを生成した真の分布を含んでいなくても、モデルがシンプルな場合には、そこそこ緩やかな条件のもとで、サンプルサイズ→∞で尤度函数の台は1点に「収束」する。

しかし、収束先のモデルの分布と真の分布の間の違いは当然残る(添付動画!)
#統計 i.i.d.サンプルの最尤推定ではなく、i.i.d.サンプルのベイズ統計であれば、最尤法ではサンプルサイズ→大での推定結果の収束が保証されない場合でも、予測分布の収束が証明されています(渡辺澄夫さんの仕事)。

ベイズ統計については非科学的なトンデモ解説の方が世界的に主流なので要注意。

• • •

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

9 Oct
#Julia言語 【ネタ】tuple processing language

S式っぽいタプルでJuliaの式を与えると、それを解釈して実行してくれるマクロ(笑)

空行とコメントを合わせても33行しかありません。続く

gist.github.com/genkuroki/b410… Image
#Julia言語 タプル式でsin(π/6)を計算してみましょう。

(:call, :sin, (:call, :/, π, 6))

を実行すれば sin(π/6) を計算できます。:call を省略して

(:sin, (:/, π, 6))

でも同じ結果が得られるようにしてあります。続く Image
#Julia言語 タプル式で函数も定義できます。

(:(=), (:call, :f, :x), (:call, :sin, :x))

で f(x) = sin(x) と定義できます。In[4]ではそのようにして定義した f(x) を使って f(π/6) を計算しています。続く Image
Read 8 tweets
9 Oct
#Julia言語 リンク先のリンク先のブログ記事に言及している人が多い!私が書いたんじゃないけど、なんかうれしい。

細かいケアレスミスがあってもそういうのは本質ではなくて、おもろいネタで長文を書きまくっていて楽しそうな点が秀逸!

JuliaとLispのマクロの話がウケるというのもすごい話!
#Julia言語 Juliaのマクロを理解するために役に立つ情報(ネタ)

S式風のタプル式

(:call, :sin, (:call, ;/, π, 6))

をJuliaの式

Expr(:call, :sin, Expr(:call, ;/, π, 6))

に変換して実行するマクロ。これは :(sin(π/6)) に等しい。

この辺の知識があるとJuliaのマクロを理解し易くなる。
Read 31 tweets
9 Oct
#Julia言語 「最初のプロットの遅延問題」は有名な欠点で、nightly buildで大きな改善されています。

遅いのは「最初のプロット」だけなので、プロット用のコードを書いたfoo.jlについて毎回

julia foo.jl

としていなければ大した問題にはならないです。

juliaは再起動の回数を減らして使いたい。
#Julia言語 REPL、Jupyter、Juno、VSCode内でJuliaを使い、コードを書き始める前に、

using Plots
plot(sin)

を実行しておいて、その後にプロット用のコードを書いて実行すれば実質的に待ち時間はゼロ。
#Julia言語 公式ドキュメントの

docs.julialang.org/en/v1/manual/w…

の方法:Jupyter

github.com/JuliaLang/IJul…

を使ったり、Revise.jl

github.com/timholy/Revise…

を使って、

julia> using Revise
julia> includet("foo.jl")
julia> plot_foo()
失敗→foo.jlを編集→編集結果が自動反映
julia> plot_foo()
Read 4 tweets
9 Oct
#Julia言語 nightly build で、パッケージA.jlの中のXをYという名前で使いたい場合に

using A: X as Y

とできるようになっていますね。

github.com/JuliaLang/juli…

添付画像はすでにIを使ってしまっているので、

using LinearAlgebra: I as E

としている場合。

gist.github.com/genkuroki/d812…
#Julia言語 個人的には

import LinearAlgebra as linalg

として

A = randn(100, 100)
fac = linalg. lu(A)
e = linalg. eigen(A)

のように、「わざわざ」もしくは「必然性不明の短縮」で至る所 linalg. を付けて書くようなスタイルを使う人が

増えないで欲しいな

と思います。
#Julia言語 Pythonという特殊で一般性に欠けた世界の1つで普通になっている方法で import as を使う人が増えるのは、私も不快。

このスレのトップで紹介したように「すでにIを使っているので、LinearAlgebra.jlのIをEという名で使うため」に、

using LinearAlgebra: I as E

とできるのは便利。
Read 5 tweets
9 Oct
Re: RT #数楽

Bernoulli多項式を「特殊値」として持つゼータ函数はHurwitzのゼータ函数である。(その特別な場合がRiemannのゼータ函数)

問題:それと同様の意味でHermiteの多項式を「特殊値」として持つゼータ函数に類似はあるか?

答え:ある‼️↓
nbviewer.jupyter.org/github/genkuro…
#数楽 区間[0,1]上の一様分布の分配函数(=モーメント母函数)の

Z(β) = ∫_0^1 e^{-βx} dx = (e^{-β} - 1)/(-β)

の逆数とベルヌイ数の母函数は本質的に一致し、統計力学の意味での[0,1]上のカノニカル分布

e^{-βx}/Z(β) = (-β)e^{-βx}/(e^{-β} - 1)

はベルヌイ多項式の母函数に本質的に一致する。
#数楽 Hurwitzのゼータ函数は[0,1]上の一様分布のカノニカル分布のMellin変換に本質的に一致する。

これを、ℝ上の(適当な条件を満たす)任意の確率分布のカノニカル分布のMellin変換に一般化すれば、一般化されたHurwitzのゼータ函数が定義される。
Read 6 tweets
8 Oct
#Julia言語 以前も書いたが、配列uを繰り返し更新するためにループの内側に

u = f(u, param)

と書くと、配列uの分のメモリ割当が毎回発生する。配列uの中身を書き換える函数 f!(u, param) を用意して

f!(u, param)

の形式で配列uを更新するのが、現時点での定跡(in-place計算)。
#Julia言語 公式ドキュメントを見ると、

y = f(x)

の形で使う返り値が配列の函数の多くについて、すでに用意された配列 y の成分を書き換えるスタイルの函数

f!(y, x)

が存在することが分かる。コードが少し分かりにくくなる犠牲を払って使う価値があるかどうかを考えることになる。
#Julia言語 函数fの中で使う作業用配列変数tmpが欲しければ

struct F{T}
tmp::Vector{T}
end
function (f::F)(x)
tmp = f.tmp
作業用配列tmpを使った計算
end

functin g(x, N)
tmp = Vector{eltype(x)}(undef, N)
f = F(tmp)
函数fを使う計算
end

のように書ける。続く
Read 10 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!