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.
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.
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
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
##
## 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.