**********************************;
**********************************;
/* Legen Sie den Zufallsstartwert für die Reproduzierbarkeit fest */
Daten _null_;
rufe streaminit(1234) auf;
laufen;

/* Anzahl der Simulationen */
%let Anzahl_Simulationen = 100000;

/* Anzahl der zu generierenden Zivilisationen */
%let Anzahl_Zivilisationen = 2364;

/* Galaktischer Radius und Höhe in Lichtjahren */
%let galaktischer_radius = 50000;
%let galaktische_höhe = 1300;

/* Place der Erde (angenommen bei 3/4 des galaktischen Radius) */
%let Erdposition_x = &galaktischer_Radius * 3 / 4;
%let Erdposition_y = 0;
%let earth_position_z = 0;

/* Einen Datensatz zum Speichern von Zivilisationspositionen erstellen */
Daten Zivilisationspositionen;
Länge Zivilisation 10 $;
Eingabe Zivilisation $ Position_X Position_Y Position_Z;
Datenleitungen;
Erde &Erdposition_x &Erdposition_y &Erdposition_z
;
laufen;

/* Zufällige Positionen für andere Zivilisationen generieren */
Daten Zivilisationspositionen;
Zivilisationspositionen festlegen;
mache i = 1 für &num_civilizations;
Position_X = rand(„Uniform“) * &galaktischer_radius;
Position_Y = rand(„Uniform“) * 2 * &galaktische_Höhe – &galaktische_Höhe;
Position_Z = rand(„Uniform“) * 2 * &galaktische_Höhe – &galaktische_Höhe;
Zivilisation = „Zivilisation “ || strip(put(i, 8.));
Ausgabe;
Ende;
ich fallen lassen;
laufen;

/* Berechnen Sie die Entfernung zwischen Zivilisationen und der Erde */
Daten Zivilisationsentfernungen;
Zivilisationspositionen festlegen;
Entfernung = Quadratwurzel((Position_X – &Erdposition_x)**2 + (Position_Y – &Erdposition_y)**2 + (Position_Z – &Erdposition_z)**2);
laufen;

/* Berechnen Sie die Mindestentfernung zur Erde für jede Zivilisation */
SQL-Prozedur;
Tabelle civilisation_min_distance erstellen als
Wählen Sie Zivilisation, Entfernung als Min_Distance
von civilisation_distances
Sortierung nach Entfernung;
aufhören;

/* Berechnen Sie die Wahrscheinlichkeit einer Begegnung mit Zivilisationen basierend auf der Entfernung */
Daten Wahrscheinlichkeit_Begegnung;
Zivilisations-Mindestdistanz festlegen;
Wahrscheinlichkeit = 1 / (1 + Min_Distance);
laufen;

/* Berechnen Sie die durchschnittliche Wahrscheinlichkeit für jedes Entfernungsband */
SQL-Prozedur;
Tabelle Average_Probability erstellen als
Fall auswählen
wenn Min_Distance <= 1000 dann ‚Schließen‘
wenn Min_Distance > 1000 und Min_Distance <= 3000 dann ‚Mittel‘
wenn Min_Distance > 3000 dann ‚Far‘
Ende als Distance_Band,
avg(Wahrscheinlichkeit) als Durchschnittswahrscheinlichkeit
von probability_encounter
nach Fall gruppieren
wenn Min_Distance <= 1000 dann ‚Schließen‘
wenn Min_Distance > 1000 und Min_Distance <= 3000 dann ‚Mittel‘
wenn Min_Distance > 3000 dann ‚Far‘
Ende;
aufhören;

/* Drucke das Ergebnis aus */
proc print information=durchschnittliche_Wahrscheinlichkeit;
laufen;

/* Wähle die der Erde am nächsten gelegene Zivilisation und die damit verbundene Wahrscheinlichkeit */
SQL-Prozedur;
Tabelle closest_civilization erstellen als
Wählen Sie Zivilisation, Min_Distance, Wahrscheinlichkeit
von probability_encounter
wobei Min_Distance = (wählen Sie min(Min_Distance) aus Wahrscheinlichkeitsbegegnung);
aufhören;

/* Drucke das Ergebnis aus */
proc drucke Daten=nächste_Zivilisation;
laufen;

/*Bayesianische Analyse der Wahrscheinlichkeit einer Begegnung mit Außerirdischen in der Vergangenheit oder Zukunft*/

/* Seed für Reproduzierbarkeit festlegen */
%let Anzahl_Iterationen = 100;

/* Bayesianischer Analysedatensatz erstellen */
Daten Bayesianische_Analyse;
rufe streaminit(123) auf;

/* Variablen für Posterior-Wahrscheinlichkeiten definieren */
Array posterior_past(&num_iterations);
Array posterior_future(&num_iterations);

mache i = 1 bis &num_iterations;
/* Stichproben für vorherige Wahrscheinlichkeiten und Wahrscheinlichkeiten für vergangene Begegnungen */
prior_past = rand(„Uniform“, 0.0001, 0.01); /* P(Frühere Begegnung) */
probability_past_encounter = rand(„Uniform“, 0.001, 0.1); /* P(Kein Kontakt | Vergangene Begegnung) */
probability_no_encounter_past = rand(„Uniform“, 0.8, 0.99); /* P(Kein Kontakt | Keine Begegnung) */

/* Berechnen Sie die Posterior-Wahrscheinlichkeit für vergangene Begegnungen mithilfe des Bayes-Theorems */
Zähler_Vergangenheit = vorherige_Vergangenheit * Wahrscheinlichkeit_einer_vergangenen_Begegnung;
Nenner_Vergangenheit = Zähler_Vergangenheit + (1 – vorherige_Vergangenheit) * Wahrscheinlichkeit_keine_Begegnung_in_der_Vergangenheit;
posterior_past(i) = zähler_vergangenheit / nenner_vergangenheit;

/* Stichproben für vorherige Wahrscheinlichkeiten und Wahrscheinlichkeiten für zukünftige Begegnungen */
prior_future = rand(„Uniform“, 0,001, 0,05); /* P(Zukünftige Begegnung) */
probability_future_encounter = rand(„Uniform“, 0.01, 0.1); /* P(Kein Kontakt | Zukünftige Begegnung) */
probability_no_encounter_future = rand(„Uniform“, 0.8, 0.99); /* P(Kein Kontakt | Keine Begegnung) */

/* Berechnen Sie die Posterior-Wahrscheinlichkeit für eine zukünftige Begegnung mithilfe des Bayes-Theorems */
Zähler_Zukunft = vorherige_Zukunft * Wahrscheinlichkeit_zukünftiger_Begegnung;
Nenner_Zukunft = Zähler_Zukunft + (1 – vorherige_Zukunft) * Wahrscheinlichkeit_keine_Begegnung_in_Zukunft;
posterior_future(i) = zähler_zukunft / nenner_zukunft;
Ende;

/* Ergebnisse ausgeben */
mache i = 1 bis &num_iterations;
posterior_past_value = posterior_past(i);
posterior_future_value = posterior_future(i);
Ausgabe;
Ende;
Behalten Sie den posterior_past_value und den posterior_future_value;
laufen;

/* Zusammenfassende Statistik für die Posterior-Wahrscheinlichkeiten */
proc bedeutet Daten = Bayesianische Analyse Mittelwert Customary Min. Max.;
var hinterer_vergangener_Wert hinterer_zukünftiger_Wert;
laufen;

/* Verteilungshistogramme für die Posterior-Wahrscheinlichkeiten */
proc sgplot Daten=Bayesianische_Analyse;
Histogramm posterior_past_value / Transparenz=0,5 Füllzeichen=(Farbe=blau) Binärbreite=0,00001;
Titel „Verteilung der Posterior-Wahrscheinlichkeiten für vergangene Begegnungen“;
laufen;

proc sgplot Daten=Bayesianische_Analyse;
Histogramm posterior_future_value / Transparenz=0,5 Füllzeichen=(Farbe=grün) Binärbreite=0,0001;
Titel „Verteilung der Posterior-Wahrscheinlichkeiten für zukünftige Begegnungen“;
laufen;

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert