Advertisement
Guest User

Giant Meteor 2025

a guest
Jun 13th, 2025
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 2.60 KB | Money | 0 0
  1. library(tidyr)
  2. library(data.table)
  3. library(ggplot2)
  4. library(lubridate)
  5.  
  6. # Regarding polymarket
  7. # https://polymarket.com/event/5kt-meteor-strike-in-2025/5kt-meteor-strike-in-2025?
  8.  
  9. #  https://cneos.jpl.nasa.gov/fireballs/
  10. dt = fread("cneos_fireball_data.csv")
  11.  
  12. cols = c(date = "Peak Brightness Date/Time (UT)",
  13.   kt = "Calculated Total Impact Energy (kt)")
  14.  
  15. setnames(dt, cols, names(cols))
  16. dt[lubridate::yday(date)>163]
  17. dt |>
  18.   mutate(yday = lubridate::yday(date)) |>
  19.   mutate(month = lubridate::month(date)) |>
  20.   mutate(year = lubridate::year(date)) -> dt
  21.  
  22. # obs even over months
  23. table(dt$month)
  24. #  1  2  3  4  5  6  7  8  9 10 11 12
  25. # 89 92 88 90 83 77 86 75 77 96 87 83
  26.  
  27. ggplot(data=dt, aes(x=month)) +
  28.   geom_histogram(bins=12,fill=NA, color='black') +
  29.   theme_minimal() + labs(title="Counts of any meteor by month")
  30.  
  31. # Obs sparse before ~1996 to 2000 ish... call it good in 2000
  32. table(dt$year)
  33. # 1988 1990 1991 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
  34. #    1    1    1    2   13   21   33   21   13   30   37   22   29   37   39   45   37   23   37   34   36
  35. # 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025
  36. #   31   37   24   33   45   33   29   39   42   41   32   41   34   32   18
  37.  
  38. today = as.POSIXct("2025-06-12")
  39. today_day_of_year = lubridate::yday(today)
  40. first_good_day = as.POSIXct("2000-01-01")
  41. last_good_day = as.POSIXct("2025-06-01")
  42.  
  43. # Arrival fraction of 5kt meteors by year
  44. ggplot(dt[, .(fract = .SD[kt>=5, .N]/.N), year],
  45.        aes(x=year, y = fract)) +
  46.   geom_point() + theme_minimal() +
  47.   labs(title= "Arrival fraction of 5kt meteors by year")                                    
  48.  
  49. # Counts by month seem a little mal distributed
  50. ggplot(data=dt[kt>=5 & date >=first_good_day], aes(x=month)) +
  51.   geom_histogram(bins=12,fill=NA, color='black') +
  52.   theme_minimal() + labs(title="Counts of >=5kt by month")
  53.  
  54. # Are the monthly counts poisson? Sure. Why not
  55. table(table(dt[kt>=5 & date >=first_good_day, month]))
  56. table(dt[kt>=5 & date >=first_good_day, month])
  57. # 1 2 4 5
  58. # 5 3 2 1
  59.  
  60. arrival_rate_per_any_kt = dt[date >= first_good_day & date <= last_good_day, .SD[kt>=5, .N]/.N]
  61.  
  62. # 0.00258565
  63. arrival_rate_per_day_5kt = dt[kt>=5 &
  64.                                 date >= first_good_day &
  65.                                 date <= last_good_day,
  66.                               .N/as.integer(last_good_day - first_good_day)]
  67. ######################################
  68. # At least one arrival left: 40.7%!
  69. arrive_at_least_once = 1-(1-arrival_rate_per_day_5kt )^(365-today_day_of_year)
  70. arrive_at_least_once
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement