ClimMobTools: API Client for the ‘ClimMob’ platform in R

Overview

ClimMobTools is the API client for the ‘ClimMob’ platform in R. ClimMob is open-source software for decentralized large-N trials using the ‘tricot’ approach1,2. This approach facilitates the rapid assessment of technologies in target environments. Tricot turns the research paradigm on its head: instead of a few researchers designing complicated trials to compare several technologies in search of the best solutions, it enables many participants to carry out reasonably simple experiments that, taken together, can offer even more information.

Usage

The breadwheat dataset is a data.frame from crowdsourced citizen science trials of bread wheat (Triticum aestivum L.) varieties in India. This sample data is available on the ClimMob platform and can be fetched using the getDataCM() function from ClimMobTools, along with an API key from the ClimMob user’s account.

library("ClimMobTools")
library("PlackettLuce")

# the API key
my_key = "d39a3c66-5822-4930-a9d4-50e7da041e77"

dat = getDataCM(key = my_key,
                 project = "breadwheat",
                 userowner = "gosset")


names(dat) = gsub("firstassessment_|package_|lastassessment_|registration_", "",
                   names(dat))

Tricot data into rankings

The Plackett-Luce model is one approach to analyze the ClimMob data3. We coerce the farmers’ rankings into an object of class rankings from the package PlackettLuce using the function rankTricot().

R = rankTricot(dat, 
                items = c("item_A","item_B","item_C"), 
                input = c("overallperf_pos","overallperf_neg"))

mod = PlackettLuce(R)

summary(mod)
## Call: PlackettLuce(rankings = R)
## 
## Coefficients:
##           Estimate Std. Error z value Pr(>|z|)    
## CSW18       0.0000         NA      NA       NA    
## WR544      -2.7875     0.3098  -8.999  < 2e-16 ***
## PBW343     -0.2207     0.3111  -0.709 0.478083    
## HP1633     -2.8714     0.3103  -9.254  < 2e-16 ***
## HW2045     -2.8517     0.3112  -9.163  < 2e-16 ***
## DBW17      -1.1265     0.2987  -3.771 0.000162 ***
## HD2985     -1.6546     0.3059  -5.409 6.32e-08 ***
## DPW621-50  -1.8793     0.3096  -6.070 1.28e-09 ***
## HD2824     -2.8177     0.3152  -8.939  < 2e-16 ***
## RAJ4120    -2.7451     0.3161  -8.683  < 2e-16 ***
## PBW550     -2.7204     0.3075  -8.847  < 2e-16 ***
## K0307      -2.9835     0.3122  -9.558  < 2e-16 ***
## HI1563     -2.9342     0.3126  -9.386  < 2e-16 ***
## PBW502     -2.5704     0.3088  -8.325  < 2e-16 ***
## HD2932     -2.1726     0.3060  -7.099 1.26e-12 ***
## K9107       0.6579     0.3528   1.864 0.062260 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual deviance:  1339.1 on 1464 degrees of freedom
## AIC:  1369.1 
## Number of iterations: 20

Designing a new trial

randomise() allocates the items to the packages that each participant receives. The design is sequentially balanced, so it stays close to balanced when only the first packages are distributed or returned. Call set.seed() first to make the design reproducible, and keep the design with the project records.

set.seed(123)
design = randomise(npackages = 30,
                   itemnames = c("Var1", "Var2", "Var3", "Var4", "Var5", "Var6"),
                   ncomp = 3)

head(design)
##    item_A item_B item_C
##     <chr>  <chr>  <chr>
## 1:   Var6   Var4   Var2
## 2:   Var1   Var3   Var5
## 3:   Var2   Var5   Var6
## 4:   Var3   Var1   Var4
## 5:   Var2   Var6   Var1
## 6:   Var5   Var4   Var3
# each variety is tested the same number of times
table(unlist(design))
## 
## Var1 Var2 Var3 Var4 Var5 Var6 
##   15   15   15   15   15   15

Use availability to cap the number of packages for items with limited seed, and props to test some items more often than others.

For more analytical insights, please visit the documentation of the gosset package.

References

1.
van Etten, J., Beza, E., Calderer, L., Van Duijvendijk, K., et al. First experiences with a novel farmer citizen science approach: crowdsourcing participatory variety selection through on-farm triadic comparisons of technologies (tricot). Experimental Agriculture 55, 275–296 (2019).
2.
de Sousa, K., van Etten, J., Manners, R., Abidin, E., et al. The tricot approach: An agile framework for decentralized on-farm testing supported by citizen science. A retrospective. Agronomy for Sustainable Development 44, (2024).
3.
Turner, H. L., Etten, J. van, Firth, D. & Kosmidis, I. Modelling rankings in R: the PlackettLuce package. Computational Statistics (2020). doi:10.1007/s00180-020-00959-3