This model works exactly like original Dawid-Skene model based on EM Algorithm except for workers' error calculation
on M-step of the algorithm.

First the workers' skills are calculated as their accuracy in accordance with labels probability.

Let $e^w$ be a worker's confusion (error) matrix of size $K \times K$ in case of $K$ class classification,

$p$ be a vector of prior classes probabilities, $z_j$ be a true task's label, and $y^w_j$ be a worker's answer for the task $j$. Let $s_{w}$ be a worker's skill (accuracy).

Tasks' labels. A pandas.Series indexed by task such that labels.loc[task] is the tasks's most likely true label.

probas_

DataFrame

Tasks' label probability distributions. A pandas.DataFrame indexed by task such that result.loc[task, label] is the probability of task's true label to be equal to label. Each probability is between 0 and 1, all task's probabilities should sum up to 1

priors_

Series

A prior label distribution. A pandas.Series indexed by labels and holding corresponding label's probability of occurrence. Each probability is between 0 and 1, all probabilities should sum up to 1

errors_

DataFrame

Workers' error matrices. A pandas.DataFrame indexed by worker and label with a column for every label_id found in data such that result.loc[worker, observed_label, true_label] is the probability of worker producing an observed_label given that a task's true label is true_label

skills_

Series

workers' skills. A pandas.Series index by workers and holding corresponding worker's skill

Examples:

from crowdkit.aggregation import OneCoinDawidSkene