Thực hiện các thí nghiệm xác suất trong Mathicala
Mathematica cung cấp một khung rất thoải mái để làm việc với xác suất và phân phối và - trong khi vấn đề chính về các giới hạn phù hợp đã được giải quyết - tôi muốn sử dụng câu hỏi này để làm rõ hơn và có thể hữu ích như một tài liệu tham khảo.
Chúng ta chỉ cần làm cho các thí nghiệm có thể lặp lại và xác định một số tùy chọn cốt truyện để phù hợp với sở thích của chúng ta:
SeedRandom["Repeatable_151115"];
$PlotTheme = "Detailed";
SetOptions[Plot, Filling -> Axis];
SetOptions[DiscretePlot, ExtentSize -> Scaled[0.5], PlotMarkers -> "Point"];
Làm việc với các bản phân phối tham số
Bây giờ chúng ta có thể định nghĩa phân phối tiệm cận cho một sự kiện là tỷ lệ của những người đứng đầu trong ném một đồng xu (công bằng):nπn
distProportionTenCoinThrows = With[
{
n = 10, (* number of coin throws *)
p = 1/2 (* fair coin probability of head*)
},
(* derive the distribution for the proportion of heads *)
TransformedDistribution[
x/n,
x \[Distributed] BinomialDistribution[ n, p ]
];
With[
{
pr = PlotRange -> {{0, 1}, {0, 0.25}}
},
theoreticalPlot = DiscretePlot[
Evaluate @ PDF[ distProportionTenCoinThrows, p ],
{p, 0, 1, 0.1},
pr
];
(* show plot with colored range *)
Show @ {
theoreticalPlot,
DiscretePlot[
Evaluate @ PDF[ distProportionTenCoinThrows, p ],
{p, 0.4, 0.6, 0.1},
pr,
FillingStyle -> Red,
PlotLegends -> None
]
}
]
Điều này cho chúng ta âm mưu phân bố tỷ lệ rời rạc:
Chúng tôi có thể sử dụng phân phối ngay lập tức để tính xác suất cho và :Pr[Pr [0,4 ≤ π≤ 0,6|π~ B ( 10 , 12) ]Pr [0,4 < π< 0,6|π~ B ( 10 , 12) ]
{
Probability[ 0.4 <= p <= 0.6, p \[Distributed] distProportionTenCoinThrows ],
Probability[ 0.4 < p < 0.6, p \[Distributed] distProportionTenCoinThrows ]
} // N
{0,65625, 0,246094}
Làm thí nghiệm Monte Carlo
Chúng ta có thể sử dụng phân phối cho một sự kiện để liên tục lấy mẫu từ nó (Monte Carlo).
distProportionsOneMillionCoinThrows = With[
{
sampleSize = 1000000
},
EmpiricalDistribution[
RandomVariate[
distProportionTenCoinThrows,
sampleSize
]
]
];
empiricalPlot =
DiscretePlot[
Evaluate@PDF[ distProportionsOneMillionCoinThrows, p ],
{p, 0, 1, 0.1},
PlotRange -> {{0, 1}, {0, 0.25}} ,
ExtentSize -> None,
PlotLegends -> None,
PlotStyle -> Red
]
]
So sánh điều này với phân phối lý thuyết / tiệm cận cho thấy mọi thứ khá phù hợp với:
Show @ {
theoreticalPlot,
empiricalPlot
}