Reduce a DataArray by a weighted ``sum_of_squares`` along some dimension(s).
(
self,
da: T_DataArray,
dim: Dims = None,
skipna: bool | None = None,
)
| 255 | return sum_of_weights.where(valid_weights) |
| 256 | |
| 257 | def _sum_of_squares( |
| 258 | self, |
| 259 | da: T_DataArray, |
| 260 | dim: Dims = None, |
| 261 | skipna: bool | None = None, |
| 262 | ) -> T_DataArray: |
| 263 | """Reduce a DataArray by a weighted ``sum_of_squares`` along some dimension(s).""" |
| 264 | |
| 265 | demeaned = da - da.weighted(self.weights).mean(dim=dim) |
| 266 | |
| 267 | # TODO: unsure why mypy complains about these being DataArray return types |
| 268 | # rather than T_DataArray? |
| 269 | return self._reduce((demeaned**2), self.weights, dim=dim, skipna=skipna) # type: ignore[return-value] |
| 270 | |
| 271 | def _weighted_sum( |
| 272 | self, |
no test coverage detected