eQuate It CAS UDFs — Discrete Probability (TI-Nspire CAS) ============================================================ 1. binomsolve(k, p, threshold) — Trials for target probability ------------------------------------------------------- Define binomsolve(k, p, threshold) = Prgm Local n, prob n := k While true prob := binomCdf(n, p, k, n) If prob >= threshold Then Disp "n = ", n Disp "P(X >= ", k, ") = ", approx(prob) Return n EndIf n := n + 1 If n > 10000 Then Disp "No solution found within 10000 trials" Return -1 EndIf EndWhile EndPrgm 2. dcondpr — Discrete conditional probability ------------------------------------------------------- (Binomial version) Define dcondpr(n, p, c1, c2) = Prgm Local pC1, pC2, pBoth, result Disp "P(C1 | C2) for Binomial(", n, ",", p, ")" pC2 := binomCdf(n, p, 0, c2) pBoth := binomCdf(n, p, 0, min(c1, c2)) result := pBoth / pC2 Disp "Result = ", approx(result) EndPrgm 3. binominfo(n, p) — Binomial distribution information ------------------------------------------------------- Define binominfo(n, p) = Prgm Local ev, var, sd, sev, ssd ev := n * p var := n * p * (1 - p) sd := sqrt(var) sev := p ssd := sqrt(p * (1 - p) / n) Disp "E(X) = ", ev Disp "Var(X) = ", var Disp "SD(X) = ", approx(sd) Disp "Sample E(p-hat) = ", sev Disp "Sample SD(p-hat) = ", approx(ssd) EndPrgm 4. hypergeocdf(n, N, K, lo, hi) — Hypergeometric CDF ------------------------------------------------------- Define hypergeocdf(n, bigN, bigK, lo, hi) = Prgm Local prob, i, p prob := 0 For i, lo, hi p := nCr(bigK, i) * nCr(bigN - bigK, n - i) / nCr(bigN, n) prob := prob + p EndFor Disp "P(", lo, " <= X <= ", hi, ") = ", approx(prob) EndPrgm 5. hypergeopdf(n, N, K, k) — Hypergeometric PMF ------------------------------------------------------- Define hypergeopdf(n, bigN, bigK, k) = Prgm Local prob prob := nCr(bigK, k) * nCr(bigN - bigK, n - k) / nCr(bigN, n) Disp "P(X = ", k, ") = ", approx(prob) EndPrgm 6. invbinomial(n, p, prob) — Inverse binomial ------------------------------------------------------- Define invbinomial(n, p, prob) = Prgm Local k, cumprob k := 0 cumprob := 0 While cumprob < prob cumprob := cumprob + binomPdf(n, p, k) If cumprob >= prob Then Disp "k = ", k Disp "P(X <= ", k, ") = ", approx(cumprob) Return k EndIf k := k + 1 EndWhile EndPrgm 7. prtable(outcomes, probs) — Probability table statistics ------------------------------------------------------- Define prtable(outcomes, probs) = Prgm Local ev, ex2, var, sd, i ev := 0 ex2 := 0 For i, 1, dim(outcomes) ev := ev + outcomes[i] * probs[i] ex2 := ex2 + outcomes[i]^2 * probs[i] EndFor var := ex2 - ev^2 sd := sqrt(var) Disp "E(X) = ", ev Disp "E(X^2) = ", ex2 Disp "Var(X) = ", var Disp "SD(X) = ", approx(sd) EndPrgm 8. samplebinom(n, p) — Sample distribution for binomial ------------------------------------------------------- Define samplebinom(n, p) = Prgm Local ev, sd ev := p sd := sqrt(p * (1 - p) / n) Disp "Sample proportion distribution:" Disp "E(p-hat) = ", ev Disp "SD(p-hat) = ", approx(sd) Disp "Approx Normal(", ev, ", ", approx(sd^2), ")" EndPrgm 9. samplebinompr(n, p, lo, hi) — Sample binomial probability ------------------------------------------------------- Define samplebinompr(n, p, lo, hi) = Prgm Local sd, result sd := sqrt(p * (1 - p) / n) result := normCdf(lo, hi, p, sd) Disp "P(", lo, " < p-hat < ", hi, ") = ", approx(result) EndPrgm 10. samplehypergeo(n, N, K) — Sample hypergeometric distribution ------------------------------------------------------- Define samplehypergeo(n, bigN, bigK) = Prgm Local p, ev, var, sd p := bigK / bigN ev := p var := (p * (1 - p) / n) * ((bigN - n) / (bigN - 1)) sd := sqrt(var) Disp "p = K/N = ", approx(p) Disp "E(p-hat) = ", approx(ev) Disp "Var(p-hat) = ", approx(var) Disp "SD(p-hat) = ", approx(sd) EndPrgm 11. samplehyppr(n, N, K, lo, hi) — Sample hypergeometric probability ------------------------------------------------------- Define samplehyppr(n, bigN, bigK, lo, hi) = Prgm Local p, sd, fpc, result p := bigK / bigN fpc := sqrt((bigN - n) / (bigN - 1)) sd := sqrt(p * (1 - p) / n) * fpc result := normCdf(lo, hi, p, sd) Disp "P(", lo, " < p-hat < ", hi, ") = ", approx(result) EndPrgm