🦋
高校数学における統計の未来
この記事は日曜数学 Advent Calendar 2024 の25日目の記事となります。
この記事はJulia Advent Calendar 2024 (シリーズ2)の25日目の記事となります。
この記事はTypst Advent Calendar 2024 (シリーズ2) の25日目の記事となります。
Xへのポスト
問題
数研出版の教科書の問題をWilsonのP値関数・信頼区間に変更してみます。
答えとコード
コードはjulia
です。
WilsonのP値関数のグラフをかいてみよう。
using Distributions
using StatsPlots
# WilsonによるP値関数
function pvalue_wilson_f(k,p,n)
p̂ = k/n
2ccdf(Normal(),
abs(p̂ - p) / √(p*(1-p)/n))
end
k , n = 200 , 400
plot(p->pvalue_wilson_f(k,p,n),label="wilson",xlim=(0,1))
p の値を点推定してみよう。
Wilsonの95%信頼区間を求めてみよう。
# Wilsonの信頼区間
function confint_bin_wilson(k; n, α)
z = cquantile(Normal(0,1), α/2)
p̂ = k/n
a, b, c = 1 + z^2/n,
p̂ + z^2/(2n), p̂^2
sqrtD = √(b^2 - a*c)
(b - sqrtD)/a, (b + sqrtD)/a
end
k , n , α = 100 , 200 , 0.05
confint_bin_wilson(k; n, α);
(0.4313608596038919, 0.5686391403961081)
- ちなみに,Waldの信頼区間は
[0.451 , 0.549]
p = 0.7 であると仮説を立てる。閾値を α=0.05 とすると,この仮説とデータの相性は良いか?それとも悪いか?
k , p , n = 100 , 0.7 , 200
pvalue_wilson_f(k,p,n)
6.737436018932825e-10
なので,仮説
元の問題(数研出版 数学B 教科書)
typst + jlyfish
少し前に,typstのjlyfishのパッケージでjulia のコードを実行できることを知ったので,このパッケージを用いて,pdfを作り直してみました。
1223.typ
#set page(
paper: "a4",
height: 297mm,
width: 210mm,
margin: (x: 1.5cm, y: 1.5cm),
)
#set par(
justify: true,
leading: 1em,
)
#set text(
font: ("New Computer Modern","BIZ UDPMincho")
)
#set text(lang: "ja")
#set enum(numbering: "(1)",)
#import "@preview/colorful-boxes:1.2.0": *
#import "@preview/jlyfish:0.1.0": *
#read-julia-output(json("1223-jlyfish.json"))
#let my_block(back_color, frame_color, title_color, content_color, title, content) = {
block(width:auto,radius: 4pt, stroke: back_color + 3pt)[
#block(width: 100%,fill: back_color, inset: (x: 20pt, y: 5pt), below: 0pt)[#text(title_color,font: ("New Computer Modern","BIZ UDPMincho"))[#title]]
#block(radius: (
bottom: 3pt,
),width: 100%, fill: frame_color, inset: (x: 20pt, y: 10pt))[#text(content_color)[#content]]
]
}
#my_block(olive,luma(240) , white, black, [数研出版の教科書の問題をWilsonのP値関数・信頼区間に変更してみる], [
ある県の高校3年生から無作為に400人を選び、むし歯がある生徒を数えたところ,200人であった。 この県の高校3年生のむし歯の保有率を $p$ とする。
+ WilsonのP値関数のグラフをかいてみよう。
+ $p$ の値を点推定してみよう。
+ Wilsonの95%信頼区間を求めてみよう。
+ $p = 0.7$ であると仮説を立てる。閾値を $α=0.05$ とすると,この仮説とデータの相性は良いか?それとも悪いか?
])
#columns(2)[
+ #jl(code:true,
```jl
using Distributions
using StatsPlots
# WilsonによるP値関数
function pvalue_wilson_f(k,p,n)
p̂ = k/n
2ccdf(Normal(),
abs(p̂ - p) / √(p*(1-p)/n))
end
k , n = 200 , 400
plot(p->pvalue_wilson_f(k,p,n)
,label="wilson",xlim=(0,1))
```)
+ $ display(p =100/200 = bold(0.5))$
+ #jl(code:true,```jl
# Wilsonの信頼区間
function confint_bin_wilson(k; n, α)
z = cquantile(Normal(0,1), α/2)
p̂ = k/n
a, b, c = 1 + z^2/n,
p̂ + z^2/(2n), p̂^2
sqrtD = √(b^2 - a*c)
(b - sqrtD)/a, (b + sqrtD)/a
end
k , n , α = 100 , 200 , 0.05
confint_bin_wilson(k; n, α);
```)
ちなみに,Waldの信頼区間は $[0.451 , 0.549]$
+ #jl(code:true,
```jl
k , p , n = 100 , 0.7 , 200
pvalue_wilson_f(k,p,n)
```)
$ 6.737436018932825 times 10^(-10 )< 0.05 $
なので,仮説 $p = 0.7$ とデータの相性は悪い。
#v(1cm)
<元の問題>
#image("mathB.png",width:100%)
]
Julia
のコードを実行しながらTypst
でpdfを作成できるのはちょっと嬉しいですね。
Discussion