Hola,
He realitzat un petit anàlisi en dos punts temporals de la diversitat del Fedivers quant a comptes per node i quantitat de nodes.
EDIT: la publicació original contenia un error i situava el primer punt temporal el 09 de Març de 2023 quan en realitat és de 03 de Setembre de 2023.
Les dades que he utilitzat les ha recopilat el fedizen @spla@mastodont.cat. Li agraeixo molt l’ajuda!
Ara sí, entrem a l’anàlisi en si.
Data | n Servidors | Comptes | Comptes Actius | Comptes/Servidor | Actius/Servidor |
---|---|---|---|---|---|
2022/09/03 | 8673 | 5046306 | 634561 | 581.8409 | 73.16511 |
2023/05/17 | 21099 | 9181234 | 1397236 | 435.1502 | 66.22285 |
El primer que podem observar és que han crescut tant el número de servidors, el número de comptes i el número de comptes actius al Fedivers. Quina bona notícia!
Nota: el número de comptes actius només l’he tingut en compte als servidors que tenen instal·lat el programari Mastodon, ja que no està tant extès en la resta de programari fediversal.
Si ens fixem, tot i haver-hi més comptes, el ratio de comptes per servidor i de comptes actius per servidor ha disminuit, el que ja suggereix major diversitat entesa com una distribució més equitativa dels comptes entre els servidors.
Però aquests ratios són mitjanes. Hi ha indicadors de diversitat més globals que s’utilitzen en el camp de l’ecologia i de la immunologia (per analitzar la clonalitat de cèl·lules T i B) que ens poden ser útils en aquest estudi. En concret he utilitzat:
- Índex de Shannon: és una forma de medir la uniformitat de les espècies en una comunitat. El terme uniformitat es refereix a com de semblants són les abundàncies de diferents espècies en la comunitat. En aquest cas les espècies són els servidors. Font.
- Índex de Simpson: mesura de la diversitat d’una comunitat. Valor que va de 0 a 1 sent 1 la major diversitat. Font.
Mesurem aquests índex a les dades i aquest és el resultat:
Data | Shannon I. - Comptes | Simpson I. - Comptes | Shannon I - Actius | Simpson I. - Actius |
---|---|---|---|---|
2022/09/03 | 4.375168 | 0.9401716 | 3.599674 | 0.9095200 |
2023/05/17 | 5.176178 | 0.9693727 | 5.022663 | 0.9600337 |
Veiem que tots els indicadors donen suport a la tesi d’un increment en la diversitat al Maig respecte al Setembre de 2022. Tant a nivell de comptes totals com de comptes actius, veiem un increment en la diversitat i en la uniformitat entre els servidors.
Finalment, creem una representació que ens ajuda a visualitzar aquest increment de diversitat. En el següent gràfic representem la distribució dels 10 servidors més grans i la resta agrupats en l’etiqueta Altres.
Una vegada més, el resultat suggereix que la diversitat ha augmentat. O el que és el mateix: tot i que els nodes principals creixen en número absolut de comptes, sembla que el Fedivers s’està descentralitzant.
És una gran notícia! Seria interessant anar seguint la dinàmica per veure com evoluciona.
A continuació publicaré el codi en llenguatge R utilitzat per a l’anàlisi:
library(tidyverse)
library(ggsci)
Fedi<-rbind(
read.csv("FediversData_20220903.csv") %>% select(server, users, mau, alive, software) %>% add_column(Time="2022/09/03"),
read.csv("FediversData_20230517.csv") %>% select(server, users, mau, alive, software) %>% add_column(Time="2023/05/17")
)
Fedi.users<-Fedi %>%
filter(alive == "t") %>%
group_by(Time) %>%
arrange(desc(users)) %>%
mutate(server=case_when(
server %in% server[1:10] ~ server,
T~"Altres"
)) %>%
group_by(server, Time) %>%
summarise(users=sum(users), mau=sum(mau)) %>%
group_by(Time) %>%
mutate(users.perc=users*100/sum(users)) %>%
arrange(desc(users.perc))
Fedi.users.serv<-
Fedi.users %>% ungroup() %>% arrange(desc(users.perc)) %>% filter(server != "Altres") %>% pull(server) %>% unique()
Fedi.mau<-Fedi %>%
filter(alive == "t" & software == "mastodon") %>%
group_by(Time) %>%
arrange(desc(mau)) %>%
mutate(server=case_when(
server %in% server[1:10] ~ server,
T~"Altres"
)) %>%
group_by(server, Time) %>%
summarise(users=sum(users), mau=sum(mau, na.rm=T)) %>%
group_by(Time) %>%
mutate(mau.perc=mau*100/sum(mau)) %>%
arrange(desc(mau))
Fedi.mau.serv<- Fedi.mau %>% ungroup() %>% arrange(desc(mau.perc)) %>% filter(server != "Altres") %>% pull(server) %>% unique()
Fedi.servers<-unique(c(Fedi.users.serv, Fedi.mau.serv))
Fedi.users$server<-factor(Fedi.users$server, levels=c("Altres", rev(Fedi.servers)))
Fedi.mau$server<-factor(Fedi.mau$server, levels=c("Altres", rev(Fedi.servers)))
colors<-c("white", pal_igv("default")(length(Fedi.servers)))
names(colors)<-c("Altres", Fedi.servers)
g.users<-ggplot(Fedi.users, aes(Time, users.perc, fill=server))+
geom_bar(stat="identity", color="grey30")+
scale_fill_manual(values=colors, drop=F)+
labs(y="% de comptes", title="Distribució de comptes", fill="Servidor", x="")
g.mau<-ggplot(Fedi.mau, aes(Time, mau.perc, fill=server))+
geom_bar(stat="identity", color="grey30")+
scale_fill_manual(values=colors, drop=F)+
labs(y="% comptes actius (MAU)", title="Distribució de comptes actius\n en servidors de Mastodon", x="")
ggpubr::ggarrange(
g.users,
g.mau,
nrow=1, common.legend = T, legend = "right", align = "h"
)
merge(
Fedi %>% group_by(Time) %>% summarise(n.servidors=n()),
Fedi %>% group_by(Time) %>% summarise(comptes=sum(users, na.rm=T), comptes.actius=sum(mau, na.rm=T))
) %>% rename(Data=Time) %>% mutate(`comptes/servidor`=comptes/n.servidors, `actius/servidor`=comptes.actius/n.servidors)
## Diversity analysis
divers<-data.frame(
"Data"=c("2023/03/09","2023/05/17"),
ShannonIndex.Comptes=c(vegan::diversity(Fedi %>% filter(Time == "2022/09/03") %>% filter(users >= 0) %>% pull(users), index="shannon"),
vegan::diversity(Fedi %>% filter(Time == "2023/05/17") %>% filter(users >= 0) %>% pull(users), index="shannon")),
SimpsonIndex.Comptes=c(vegan::diversity(Fedi %>% filter(Time == "2022/09/03") %>% filter(users >= 0) %>% pull(users), index="simpson"),
vegan::diversity(Fedi %>% filter(Time == "2023/05/17") %>% filter(users >= 0) %>% pull(users), index="simpson")),
ShannonIndex.Actius=c(vegan::diversity(Fedi %>% filter(Time == "2022/09/03" & software == "mastodon") %>% filter(mau >= 0) %>% pull(mau), index="shannon"),
vegan::diversity(Fedi %>% filter(Time == "2023/05/17"& software == "mastodon") %>% filter(mau >= 0) %>% pull(mau), index="shannon")),
SimpsonIndex.Actius=c(vegan::diversity(Fedi %>% filter(Time == "2022/09/03"& software == "mastodon") %>% filter(mau >= 0) %>% pull(mau), index="simpson"),
vegan::diversity(Fedi %>% filter(Time == "2023/05/17"& software == "mastodon") %>% filter(mau >= 0) %>% pull(mau), index="simpson"))
)
divers