Gilles Colling
GillesColling@fosstodon.org
Posts
-
Post #3266151
Relative abundance went up 30%. Sounds like good news — until you realize the focal species stayed flat and everything else crashed. A ratio can't tell you which side moved. numdenom models numerator and denominator jointly so you actually know. #rstats
-
Post #3266150
80% of eBird checklists in Austria are within 500m of a parking lot. That species gradient you're mapping? It's a gradient of where people stop their cars. #ecology
-
Post #3266149
left_join() with relationship = "many-to-many" suppresses the warning. But a warning you can silence isn't a contract. join_strict() makes cardinality explicit: 1:1, 1:many, many:many. State what you expect. Get a hard error when it's violated. #rstats
-
Post #3266148
VIF says drop temperature. But there are 23 valid subsets of uncorrelated variables — and temperature survives in 19 of them. VIF picked one subset and hid the other 22. corrselect enumerates ALL of them. You choose. #rstats
-
Post #3266147
New alien plant species per decade in Austria: 1950s → 14 2010s → 47 No plateau. The rate itself is accelerating. #biodiversity
-
Post #3266146
Square grid cells at the equator are 2x the area of cells at 60°N. Bigger cells capture more observations — and if a spatial process spans more than a few degrees of latitude, that area distortion might mess up ALL the downstream statistics. hexify uses the Snyder equal-area projection — a polyhedral projection that tiles the Earth into hexagons where every cell has the SAME area regardless of latitude. C++ backend, scales from 10 km² field plots to 7,774 km² continental grids. #rstats
-
Post #3266145
Relative abundance went up 30%. Which part moved — focal species increased, or everything else decreased? A ratio collapses two biological processes into one number. Can't tell which drove it. numdenom fits numerator and denominator as a joint model with shared random effects. Sites that are good for the focal species tend to be good overall — the model captures that correlation instead of collapsing it. The ratio becomes interpretable again. #rstats
-
Post #3266144
5 km apart: 73% species overlap. 50 km: 31%. 200 km: 8%. Fitting the decay curve takes five minutes. But the residuals are where it gets interesting — pairs at the same distance that are consistently more or less similar than predicted. That means something beyond distance is structuring composition. Barriers, soil transitions, land-use boundaries. spacc compares a spatial accumulation curve against a random-permutation null. 1/2
-
Post #3266143
Puzzle: how many copies does x$a[1] <- 99L trigger on a data.frame? TWO. One value changed, two full copies made. A data.frame is a list of column vectors. The list and each column are separate objects with separate reference counts. Modify one column and R copies the column AND the container. What felt like O(1) is O(n). Put that inside a loop. 500MB frame, 100 iterations — 50GB of silent temporary allocations. 1/2
-
Post #3266142
Third use-after-free in a month. Only triggers above 4 million points — never shows up in testing. Rewrite the backend in Rust. The borrow checker catches out-of-bounds errors at COMPILE time that would've been segfaults weeks later. Not warnings — compilation refuses to proceed until the memory access pattern is fixed. Trade-off is real: Rust toolchain plus rextendr adds build complexity that Rcpp doesn't have. Rcpp is still excellent for tight numerical loops with simple data s...
-
Post #1022121
I fell in love with the R ecosystem during my PhD. Thousands of open source packages, all free. I never had to depend on Microsoft or a university license to do science. Now I write ecology packages and put them on CRAN. Independent tools for independent science. #rstats