0 Daumen
298 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.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community