As of last Saturday, my posterior probability that Nina is in love with me is 0.99, up from 0.96, with a 95 percent credible interval from 0.97 to 0.999. The estimate comes from sixty-four observations, a hierarchical Bayesian model with partial pooling, and four chains of Markov chain Monte Carlo that converged overnight on my laptop. Nina is my college roommate's girlfriend's best friend from grad school. In two years we've been in the same room eleven times. She has said four complete sentences to me, and all four were "Hi, I'm Nina."

Leah, who has introduced us twice, calls this a small sample. I'd call it sparse, which is different. I'm an actuary. I estimate rare-event probabilities from thin data for a living, and I've brought the same rigor to Nina. I started from a skeptical prior of 2 percent, which is the base rate of romantic pairings within our friend group: four couples out of about two hundred possible pairs. Every observation gets a likelihood ratio, and I track the accumulated evidence in decibels, as E. T. Jaynes recommended, because in log-odds small updates add up instead of disappearing. My observations average about 0.6 decibels apiece. Before last Saturday, sixty-three of them came to roughly thirty-eight decibels, enough to move a 2 percent prior past 99 percent before any correction for dependence.

Most of the evidence is glances, which I treat as noisy measurements with a known error term. At Leah's birthday dinner, Nina looked toward me for about two seconds while Dev, who was sitting next to me, told the canoe story. I gave that glance a Bayes factor of 1.5 instead of 3, to account for Dev. On the Fourth of July, at Dev's parents' lake house, she watched the grill for most of the time I spent failing to light it, which I logged as concern. Across eleven gatherings, her rate of looking in my direction is about 0.4 glances an hour. For the refrigerator, which is usually behind me, it's 0.38. The KL divergence between her behavior toward me and her behavior toward the refrigerator is small, but it's positive.

The rest is courtesy, which most analysts would discard as uninformative. I don't, because courtesy is a choice, and choices carry information. At Friendsgiving she said "excuse me" while reaching past me for the chips. At trivia she said "thanks" without looking up from her phone as she walked through a door I was holding, which I've coded as trust. When she left the Fourth of July she said, "Bye, everyone," and I was in everyone. At Friendsgiving she also told the room that the dip had crab in it. I'm allergic to shellfish, and as far as I can tell she didn't know that, which raises the likelihood ratio instead of lowering it. She was protecting me without knowing it.

The digital record is thinner but cleaner. My Instagram follow request has been pending since August of last year, and a request that hasn't been declined is, formally, still under consideration. In April, LinkedIn told me that someone at Deloitte had viewed my profile. Nina works at Deloitte, as do about 450,000 other people, and I applied that base rate before updating. The view still came out to half a decibel. In fourteen months Nina has sent four messages to the lake house group chat, all logistics, none addressed to me. But "running 10 min late" arrived eleven minutes after I posted a photo of the lake, and I've modeled the gap as a delayed response with lognormal latency. In the group photo from Friendsgiving, our shoulders are eleven inches apart, which I measured in pixels against the known width of Dev's head.

Dev points out that none of this is independent, since it all comes from the same woman being polite to everyone. That's a fair critique of the naive model, which assumed conditional independence between observations. The current model is hierarchical. It partially pools her behavior toward me with her behavior toward the other men in the group and adds a correlation term for shared politeness. I ran four chains with two thousand warm-up iterations each, and every R-hat came in under 1.01. Before last Saturday, the posterior mean was 96 percent, with a credible interval from 91 to 99. A prior sensitivity analysis shows it stays above 85 percent even if I start at half a percent. The model also implies she's fairly likely to be in love with Dev's cousin Mike, which I'm treating as a separate question.

The competing hypothesis comes from Leah. I've formalized it as M0: Nina doesn't know who I am. Leah's own phrasing was "Ryan, she doesn't know who you are," and I've asked her to report observations rather than inferences. To be fair to M0, I ran a formal model comparison. M0 is simpler, and its Occam factor is large. But it can explain the crab dip only as a coincidence, and the Bayes factor between the two models still favors mine by about twelve decibels.

The objection I take most seriously is that I count everything in my favor. When she looks toward me it counts, and when she doesn't, I've sometimes counted that too. Conservation of expected evidence says you can't expect your beliefs to move in only one direction, so if both outcomes raise my estimate, something is wrong. The fix is to model Nina as a two-state hidden Markov model. In her open state, attraction emits attention. In her guarded state, which she enters only when attraction is high, it emits avoidance, which makes her absences missing not at random. When she skipped my birthday drinks, which she wasn't invited to, the Viterbi path put her in the guarded state for the whole weekend.

People ask why, at 99 percent, I haven't just talked to her. Dev says I should do it "like a person." The answer is the value of information. A real conversation would be the most informative observation available, and that's what's wrong with it. If she says yes, I move from 99 to 100 percent, which changes almost nothing. If she says no, I fall to nearly zero and lose two years of careful work. Under any utility function that places reasonable weight on the current state, the expected value of asking is negative, and mine places a lot of weight on the current state. Even if she did say no, Cromwell's rule holds that you should never assign probability zero to anything that isn't logically impossible. I've checked, and her loving me isn't.

My own conduct has been disciplined. At parties I stand near the kitchen, where her location density is highest, but I never initiate. I update in real time, on my phone, under the table. I post my Instagram stories at the times she's usually online, in case the request is approved and she goes back through them. The one lapse came in August, when I accidentally liked a photo of hers from 2019 at 1:40 in the morning and unliked it four seconds later. I estimate a 30 percent chance she saw the notification. She hasn't mentioned it, which is consistent with both kindness and interest, so I split the update between them.

Last Saturday, at Dev's birthday, she said it a fourth time: "Hi, I'm Nina." Leah thinks this settles the question in favor of M0. I think it shows that Nina keeps choosing to start over with me, which is not something people do with men they don't care about. Conditional on her underlying disposition, each introduction is an independent draw, and four draws in the same direction are hard to dismiss. I gave the fourth a Bayes factor of four, about six decibels, the largest single update in the file. The posterior is now 99 percent.

She left early, with Marcus, her boyfriend of three years, whom I've treated throughout as noise.