0 Daumen
1,3k Aufrufe

Frage:

Ich habe versucht, mit Mathematica (Version 12.1) eine t-Verteilungs-Tabelle selber auszurechnen. Mit n = 1, 2 oder 4 Freiheitsgraden kommt in vernünftiger Zeit eine Antwort, mit n = 3 oder 5 nicht.

Was kann ich besser machen?

Code:

Solve[
{1/Beta[n/2, n/2] * Integrate[t^(n/2 - 1) (1 - t)^(n/2 - 1),
  {t, 0, (t + Sqrt[t^2 + n])/(2 Sqrt[t^2 + n])}] ==
  975/1000 && n == 1}, {t, n}, Reals] // N

{{t → 12.7062, n → 1.}}


Bis jemand eine bessere Lösung hat: Vorderhand komme ich weiter mit:

Solve [
  Integrate [Gamma [ (n+1)/2]/
          (Sqrt[Pi *n] Gamma [n / 2] (1 + w^2 /n)^ ((n+1)/2)),
      {w, -Infinity, t}, GenerateConditions -> False] ==
  975/1000 && n == 3, {n, t}, Reals] //N

{{n → 3., t → 3.18245}}

Bis 100 Freiheitsgrade geht es, mit 150 Freiheitsgraden geht es nicht mehr.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Mathematica ist ein sehr leistungsfähiges Tool für symbolische und numerische Berechnungen. Wenn das Berechnen der t-Verteilung mit größeren Freiheitsgraden langsam ist oder nicht funktioniert, gibt es einige Optimierungsstrategien, die angewendet werden können.


1. Verwendung geeigneter Funktionen für t-Verteilung:
Die Funktion Quantile kann benutzt werden, um den kritischen Wert direkt zu berechnen.

2. Verwendung der StudentTDistribution-Funktion:
Mathematica hat eingebaute Funktionen zur Arbeit mit verschiedenen Verteilungen, einschließlich der Student-t-Verteilung. Dies wird viel performanter sein.

Hier ist der optimierte Code:

mathematica(* Definiere die Freiheitsgrade *)
freedomDegreesList = {1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100};
(* Berechne kritische t-Werte für die gegebene Wahrscheinlichkeit *)
prob = 0.975;
(* Verwende die eingebaute StudentTDistribution-Funktion *)
TableForm[
Table[
{n, Quantile[StudentTDistribution[n], prob]},
{n, freedomDegreesList} ],
TableHeadings
-> {None, {"n", "t"}}]



Erklärung des Codes:

1. freedomDegreesList: Dies ist eine Liste von Freiheitsgraden, für die du die t-Verteilungswerte berechnen möchtest.
2. prob: Die Wahrscheinlichkeit, die du zum Berechnen des Quantils verwendest (in diesem Fall 0.975, was dem 95%-Konfidenzintervall entspricht).
3. Quantile[StudentTDistribution[n], prob]: Berechnet das Quantil der Student-t-Verteilung für einen gegebenen Freiheitsgrad \( n \) und die gegebene Wahrscheinlichkeit.

Dieser Ansatz ist effizienter und sollte keine Probleme mit größeren Freiheitsgraden haben.

Für den genannten Fall (z.B., \( n = 150 \)), kannst du dies folgendermaßen lösen:

mathematica(* Berechne kritischen t-Wert für n = 150 *)
Quantile[StudentTDistribution[150], 0.975]

Dieser Befehl sollte schnell ausgeführt werden und das gewünschte Ergebnis liefern.

Zusammengefasst:
- Verwende Quantile und StudentTDistribution, um direkt und effizient die t-Verteilungswerte zu berechnen.
- Mathematica bietet robuste eingebaute Funktionen zur Handhabung statistischer Verteilungen, was die Berechnungen erheblich beschleunigt.

Avatar von

Lieber KI-Bot, die von Dir gefundene Funktion greift auf vorausberechnete Tabellen zu. Die können stimmen, oder nicht. Darum will ich es selber ausrechnen.

Ähnliche Fragen

Made by a lovely Community