HN user

wosk

185 karma

Joseph Lemaitre Researches epidemic modeling, forecasting and control. Assistant Professor at UNC Chapel Hill

josephlemaitre.com

Posts2
Comments22
View on HN

This is easier to say as Fable is good (even SOTA). But people have been were saying this continuously for the current model and for now the improvement are still coming.

A better question is would you settle for o3 now or pay 20$ or 200$/month for fable ? Because o3 quality is available OSS.

It is like the new IPhone, in some sort. At some point come a feature many would like to have, despite diminishing returns.

We will see how long labs can keep up and what the scaling curve look like, but I would be more worried into losing sota status to Chinese companies than letting them take the open non-sota approach.

I always starts with students by explaining how our intuition breaks in high-dimensions (spikiness, volumes,...) and how that carries when fitting/training models or searching optimization space.

It's a very important fundamental for modern data-science, to give one intuition about stochastic gradient descent, high-dimensional models, ... And this book starts with just that. I'm hooked. Thanks for sharing.

See this older hacker news thread as well: https://news.ycombinator.com/item?id=45116849 A Random Walk in 10 Dimensions (2021)

yes exactly, it's a conditional forecast. I intended: P(Rain tomorrow | my model is right) = 0.7 p(my model is right) = .8 p(my model is wrong) = .2 p(rain tomorrow | my model is wrong) = something_you_believe_about (= 0.1 in my example) 0.80.7 + 0.2 0.1 = 0.58

you may replace "my model is wrong" by e.g " my certainty that no one is using cloud-activation technology".

Now, I'm not native in English and I see how someone (especially with a math background) might find this sentence confusing:

you are predicting something (e.g rain tomorrow), then if you believe it will rain with probability 0.7 but you are 80% sure of your belief, you won’t say 0.7; you will say something else: 0.8 × 0.7 + 0.2 × something_you_believe = 0.58. Coherence forces you to collapse your uncertainty into your probability at each forecast.

Turns out it's very hard about math non-formally for generalist audience and might not have done the best job about it. It should read

you are predicting something (e.g rain tomorrow), then your model believe it will rain with probability 0.7 but you are 80% sure of your model, then you won’t report 0.7; you will report : 0.8 × 0.7 + 0.2 × something_you_believe = 0.58. Coherence forces you to collapse your uncertainty into your probability at each forecast.

I think due do this comment and other, they renamed it to app.logseq.com. But your point still hold, if you don't have sync (self-hosted or by paying), it is only local.

yes and in my example the ending point of the calculation is 0.58.

I make an intermediate step explicit in this derivation because it is important for the understanding of the problem.

This kind of intermediate step happens a lot in forecasting competitions, where participants are asked for their forecasts and their confidence in their forecasts. I want to show here that you need to include that in your forecast (all you belief) and not keep it separated.

What does this even mean...?

You are making the same point that I did, if you read the rest. 0.7 at 80% is an intermediate step in formulating a forecast, and the point is to show that you cannot stop there and have to include everything in your number, like you have said. In your words, the intermediate steps are what you list (trust in weather forecasts, past experience,…).

The \pi_i in the paper is not the estimate of a latent parameter. It is the predictive probability of the event, which is a single number by necessity in a binary challenge. It's the integration of a distribution function which can contains very complex distributions: in my example something_you_believe can be a probability distribution.

So everything in the paper is distribution and when you forecast for a binary event, you give a number which is the expectation of that distribution. This is a probabilistic forecast.

If you were to give a probabilistic forecast for a continuous quantity, then yes you would give in a distribution, as in section 4.2

It took me a while, but here’s what I gather about this (I’m pretty sure it’s correct, but I’m not an expert).

A calibrated forecast means that if you say there is a 20% chance of rain, then it actually rains 20% of the time. It’s a desired feature, but not the only one (e.g. you could be calibrated by stating: Chick-fil-A is open every day except Monday, but your forecast will always be wrong on Sunday and Monday).

So if

1. you are Bayesian (you state your beliefs)

2. and coherent (the laws of probability apply, so e.g. if P(A) = 0.4, then P(not A) cannot be anything other than 0.6):

and you are predicting something (e.g rain tomorrow), then if you believe it will rain with probability 0.7 but you are 80% sure of your belief, you won’t say 0.7; you will say something else: 0.8 × 0.7 + 0.2 × something_you_believe = 0.58. Coherence forces you to collapse your uncertainty into your probability at each forecast.

This theorem shows that, over many forecasts, in your belief system you are certain to be producing a calibrated forecast: your current beliefs assign probability 1 to the proposition that your future forecasts will be calibrated.

But that can’t be, which is the paradox. So Bayesianism is too strong compared to how scientists reason, because scientists always think their model can have an error.

ChatGPT enable memories by default I think, so it keeps some things about you across all chats. It adds something on my visa in all its message to me like "your visa is not a problem to cook this recipe as these ingredients are readily available in stores".

this thing is better disabled because it's not ready.

EDIT: your message is unclear if your friend use your chat or his, in the later, I don't know

You might want to try this new logseq though, if the devs have not burned all your goodwill. You can use it with a markdown mirror (it's a feature under settings) so you keep you same notes in markdown as well.

It's open-source, really well designed, local, you can even self-host sync...

But: the devs make questionable decisions that makes the development roadmap quite bumpy. It should ease up.

there is a CLI that gets installed when you install logseq, I just past the documentation (https://github.com/logseq/logseq/blob/master/docs/cli/logseq...) and codex knows what to do. Then I can summarize my journals over months and all.

I do version control by exporting the .edn (a serialized file that contains all nodes) and using git.

All of that is very alpha (to be honest, I don't understand them releasing a beta now). You need to hang in the discord from time to time to make sure you do not miss a thing. I think my note app being open-source is pretty important to me that I still deal with that.

Though because of this tagging thing, it seems very "AI-ready" in the sense that queries are naturals as some block have an identity.

An example: I have a tag called job-application which has a status (like a checked box) for applied, in-process, awaiting-input, discarded, ... and I have a tag for the pages that corresponds with my research projects, with status (published, chased, forgotten, ...) and some information (GitHub, collaborators, ...).

there are views that summarize this (all projects, all jobs application)

When I mention a person in my journal, it's very easy to see how my last meeting with them went and all.

I don't use sync, I've been told it works really well.

EDIT: I forgot to say you can enable a markdown-mirror and have one way sync (DB->MD) which is very convenient for agent, or if you like markdown.

I've been using Logseq DB (this new version, as a nightly, for a year) and it's a really great concept, way better than anything I tried for notes and organisation. You can apply tags to blocks, which make them a kind of thing (a project, an author, a quote, a thought). It is very fast, and easy to learn.

I switched to it from Apple Notes + Obsidian (I've used logseq MD in the distant past). I have to say though that there are still some rough edges in the current developments and many concepts are still half-baked (Assets, Library).

I still use it because with it, I take more notes and retrieve them better, which is really convenient. The barrier to jotting something down is very low. I think the dev have really hit a sweet spot so I hope they can polish this application as it should be.

We are also looking for visualization ideas beyond curve/time series.

* Does a comparison with last year help (flu activity is 10% more than last year)? * Should we remove the median from the display? * How hard should it be to check multiple models?

Otherwise, this is a preset link to see the ensemble (the consensus of most models) and our model (influpaint, a diffusion model) and flusion (avery good model by UMass) performance last year:

https://www.respilens.com/?view=flu_projs&flu_dates=2024-11-...

Very cool, that's an interesting and useful visualization. I work in infectious disease forecasting, and I wanted to give it a try already. However, the csv columns are `State,County Name,x,y,Color,...,Largest City,County Full,State Full` whereas our US model outputs are expressed using census geoids[1] (5-digits for county), and I believe that would also be the case for other potential users. In that case one would need to merge with the county dataframe[2]

[1] https://www.census.gov/programs-surveys/geography/guidance/g... [2] https://www2.census.gov/geo/docs/reference/codes/files/natio...

I did not read the paper, so I cannot comment on the "solid grasp of class inclusion", but regarding the capacity that you described in your comment, I have a 2-year-old and it's been a long while since she has mastered this (book vs this book, toy vs toy, fruit vs an apple and so on). As far as I know, most two year old have already acquired this concept.

(EDIT I see the other comment says something similar and you have replied)

I highly recommend going for the beta version which features a (game-changing) built-in pdf reader[1], with annotations (searchable and synced with the beta iPad app) and many more improvements.

Zotero is an amazing tool and I could not imagine writing papers without it. For collaborative writing, it syncs the bibliography with overleaf[2] and google docs. The browser add-on allows to build your library with one click while browsing, and it parses wonderfully meta-data from all (most) publishers and pre-print servers. Then my unique bibfile (symlinked in every project) is continuously updated to reflect new items or manual changes.

But I use it even for non-publishing side of research: one can save webpages (with snapshots) and write notes with formatting around them. My personal research workflow involves note-taking with the markdown app Zettlr[2], from which I can cite my Zotero library using simply `@[Author:Title:Year]`. I can then build notes from a twitter thread and stats.stackexchange.com answers, then connect it with papers and blog posts that way, and a specific chapter of a book with my annotation on the cloud. It not always straightforward as a workflow but it works wonders.

And the team is very responsive on the forum and on twitter. If one of the dev is ready this, thank you so much for making researchers life way easier !

EDIT: I just realised I can share my libraries online. A bit ashamed because it is very messy, but in case you are wondering what a Zotero library looks like, here is the link to mine [4] (without the notes and the embedded pdf and data files because I cannot share all of them. Moreover, I don't use the folder structure anymore so its very messy).

[1] https://www.zotero.org/support/pdf_reader_preview

[2] I recommend the BetterBibTex extension for anything related to tex, it'll save you a lot of time

[3] https://zettlr.com, another great app.

[4] https://www.zotero.org/wosk/library

This came to my mind as a recent outrage in genomics[1].

Indeed there are some wonderful contributed papers and some members use it responsibly. I also concur with with everything you said, just adding that even in laudable cases (struggling grad, ...), there is some injustice and it'll always be misleading.

Thanks for the precisions and the mention of eLife.

[1] https://twitter.com/arambaut/status/1248387395201847296?s=19

Tangentially related, a glimpse into academia.

The paper[1] was contributed in PNAS, the Proceedings of the National Academy of Sciences of the United States of America. PNAS is a very well regarded, and high impact journal.

Members of National Academy of Science, usually proeminent professors, have the possibility to "contribute" their work. They can choose reviewers, and the paper will be accepted by the editors (an important step for such a journal). When you are in this position, finding reviewers that will not reject you is really easy: academia is a small world with a few really powerful individuals.

I think the reason for this is that NAS members performs a lot of editorial works for the Academy, and they are very good scientist hence their contribution should be valued, and fast.

This has been the source of a lot of outrage (I was maintaining a list but I can't find it). Some NAS members used this process to rapidly publish when timing was important (such as covid-19 research), scooping the work of researchers that don't have such a convenient outlet. It is especially problematic when a professor is a member of the NAS for his work in some field, but uses "contributed" papers to push mediocre or naive work in another field (s)he doesn't know at all (such as physicist in epidemiological modeling). A lot of very bad quality work ended up in the news because it was in PNAS.

To mitigate these issues, I think it's now limited to two papers per year. Moreover, the paper mentions "contributed by" and the name of the reviewers. But if you go and check some google scholar page, some people made a career out of it. For any idea, you get an audience and tons of credibility for free.

[1] https://www.pnas.org/content/118/21/e2105968118

True. We estimated seroprevalence for cantons ("states" of Switzerland, ranging from small to very small). As you says, there is some quite some difference (Fig. 5): Tessin (border with Italia) and French-speaking cantons (Geneva, Vaud) have a much higher seroprevalence than the rest of the country.

The same has been found by other groups on France.

I'm an author of this study (and long time lurker), happy and surprised to see it posted here.

Some findings HN readers might find interesting, I'm referring to figures in the manuscript[1] and it's appendix.

- R0 has started to decrease before the government measures (Fig 2). It even reaches 1 simultaneously to the main "lockdown" measure.

- Mobility (from google mobility reports) also started to decrease before the measures (Fig. 3), but R0 also started to decrease before even mobility (Fig. 3).

- People awareness seemed to rise before government measures and mobility decrease, consistent with google trends (Appendix Fig. 14). Might explain why R0 starts to decrease so early.

- The appendix contains an interesting data analysis of hospitalization processes, with data on env. 1'000 patients. The length of stay in ICU are incredibly long. To answer the question: How long ?, we performed a survival analysis. It's necessary as estimates (such as the mean) are biased towards shorter stays.

- A serology study is conducted at the moment in Geneva. It seems that our estimates of seroprevalence (Fig. 5: only 3% country wide by April 24) are consistent with the study (Appendix Fig. 7). We were quite proud of that, as these results were unknown to us at the time.

- Method wise: There is different way of estimating R0 given hospitalization, death, cases:

(i) Most estimates are done with methods "deconvoluting" the data using the distributions (Cori et al, Wallinga and Teunis, implemented in the EpiEstim R package). It can works very well, but it's tricky to have unbiased estimates (see [2]).

(ii) Other methods involve choosing a breakpoint and calibrating to R0: before and after breakpoint. Variations of this method involve calibrating the breakpoint date, choosing a shape (e.g spline) and calibrating all the parameters. These method rely on some assumptions on the decrease. A incorrect assumption leads to biased estimates. E.g it would seem reasonable to assume R0 to decrease on the day of the government measures. But from what we estimated it wasn't the case in Switzerland. So your estimate of R0 post-measure would be lower than what it is really (to catch-up).

The method used here uses the full timeserie and no assumptions. First we built an hidden-markov model of COVID-19 transmission and hospitalization (see diagram Appendix Fig. 4). We performed frequentist inference (using [3]) of relevant parameters. Last, we "filter" R0 as a state of our model: R0 is a random walk, with calibrated variance and using particle filter we keep only R0 timeseries that support the underlying data. Therefore we impose no assumption on R0.

[1] https://smw.ch/article/doi/smw.2020.20295 and Appendix

[2] https://github.com/keyajoshi/Pan_response

[3] https://en.wikipedia.org/wiki/Iterated_filtering