|
| template<typename Value_ , typename Index_ , typename Group_ , typename Output_ > |
| void | direct (const Value_ *ptr, Index_ num, const Group_ *group, std::size_t num_groups, const Index_ *group_size, Output_ *output_means, Output_ *output_variances, bool skip_nan, Index_ *valid_group_size) |
| |
| template<typename Value_ , typename Index_ , typename Group_ , typename Output_ > |
| void | direct (const Value_ *value, const Index_ *index, Index_ num_nonzero, const Group_ *group, std::size_t num_groups, const Index_ *group_size, Output_ *output_means, Output_ *output_variances, Index_ *output_nonzero, bool skip_nan, Index_ *valid_group_size) |
| |
| template<typename Value_ , typename Index_ , typename Group_ , typename Output_ > |
| void | apply (bool row, const tatami::Matrix< Value_, Index_ > &mat, const Group_ *group, std::size_t num_groups, const Index_ *group_size, Output_ **output, const Options &sopt) |
| |
| template<typename Output_ = double, typename Value_ , typename Index_ , typename Group_ > |
| std::vector< std::vector< Output_ > > | by_row (const tatami::Matrix< Value_, Index_ > &mat, const Group_ *group, const Options &sopt) |
| |
| template<typename Output_ = double, typename Value_ , typename Index_ , typename Group_ > |
| std::vector< std::vector< Output_ > > | by_column (const tatami::Matrix< Value_, Index_ > &mat, const Group_ *group, const Options &sopt) |
| |
Functions for computing dimension-wise grouped variances.
template<typename Value_ , typename Index_ , typename Group_ , typename Output_ >
| void tatami_stats::grouped_variances::direct |
( |
const Value_ * | ptr, |
|
|
Index_ | num, |
|
|
const Group_ * | group, |
|
|
std::size_t | num_groups, |
|
|
const Index_ * | group_size, |
|
|
Output_ * | output_means, |
|
|
Output_ * | output_variances, |
|
|
bool | skip_nan, |
|
|
Index_ * | valid_group_size ) |
Compute the mean and variance from a dense objective vector. This uses the standard two-pass algorithm with naive accumulation of the sum of squared differences; thus, it is best used with a sufficiently high-precision Output_ like double.
- Template Parameters
-
| Value_ | Type of the input data. |
| Index_ | Integer type of the matrix indices. |
| Group_ | Integer type of the group assignments. |
| Output_ | Type of the output data. |
- Parameters
-
| [in] | ptr | Pointer to an array of values of length num. |
| num | Length of the objective vector, i.e., length of the array at ptr. |
| [in] | group | Pointer to an array of length num, containing the group assignment for each entry of ptr. Entries of group should lie in \([0, N)\) where \(N\) is the number of unique groups. |
| num_groups | Number of groups, i.e., \(N\). |
| [in] | group_size | Pointer to an array of length num_groups, containing the size of each group. This can be obtained by calling tabulate_groups() on group. |
| [out] | output_means | Pointer to an array of length num_groups. This is filled with the per-group mean on output. Values may be NaN if there are not enough (non-NaN) values in a group. |
| [out] | output_variances | Pointer to an array of length num_groups. This is filled with the per-group variances on output. Values may be NaN if there are not enough (non-NaN) values in a group. |
| skip_nan | See Options::skip_nan. |
| [out] | valid_group_size | Pointer to an array of length num_groups. This is used to store the number of non-NaN entries. Only used if skip_nan = true. |
template<typename Value_ , typename Index_ , typename Group_ , typename Output_ >
| void tatami_stats::grouped_variances::direct |
( |
const Value_ * | value, |
|
|
const Index_ * | index, |
|
|
Index_ | num_nonzero, |
|
|
const Group_ * | group, |
|
|
std::size_t | num_groups, |
|
|
const Index_ * | group_size, |
|
|
Output_ * | output_means, |
|
|
Output_ * | output_variances, |
|
|
Index_ * | output_nonzero, |
|
|
bool | skip_nan, |
|
|
Index_ * | valid_group_size ) |
Compute the mean and variance from a sparse objective vector. This uses the standard two-pass algorithm with naive accumulation of the sum of squared differences; thus, it is best used with a sufficiently high-precision Output_ like double.
- Template Parameters
-
| Value_ | Type of the input data. |
| Index_ | Integer type of the matrix indices. |
| Group_ | Integer type of the group assignments. |
| Output_ | Type of the output data. |
- Parameters
-
| [in] | value | Pointer to an array of length num_nonzero, containing the values of the structural non-zeros. |
| [in] | index | Pointer to an array of length num_nonzero, containing the indices of the structural non-zeros. All indices should be non-negative and less than the length of the objective vector. |
| num_nonzero | Number of structural non-zeros. |
| [in] | group | Pointer to an array of length equal to the length of the objective vector, containing the group assignment for each vector element. Entries of group should lie in \([0, N)\) where \(N\) is the number of unique groups. |
| num_groups | Number of groups, i.e., \(N\). |
| [in] | group_size | Pointer to an array of length num_groups, containing the size of each group. This can be obtained by calling tabulate_groups() on group. |
| [out] | output_means | Pointer to an array of length num_groups. This is filled with the per-group mean on output. Values may be NaN if there are not enough (non-NaN) values in a group. |
| [out] | output_variances | Pointer to an array of length num_groups. This is filled with the per-group variances on output. Values may be NaN if there are not enough (non-NaN) values in a group. |
| [out] | output_nonzero | Pointer to an array of length num_groups. On output, this is filled with the number of structural non-zeros in each group. |
| skip_nan | See Options::skip_nan. |
| [out] | valid_group_size | Pointer to an array of length num_groups. This is used to store the number of non-NaN entries. Only used if skip_nan = true. |