, fill. . OP
fill 1 n_row n_col n_col m. , m , fill [max(n_row, n_col),n_row*n_col].
fill [max(n_row, n_col),n_row*n_col],
sd(colSums(m))/mean(colSums(m))
m , m fill 1 .
, m, m. , m , , . x, :
sd(x)/mean(x)
x [1, n_row] sum(x) fill.
, sum(x) fill, mean(x) x fill. , - sd(x) x.
x, x , , x. fill. , fill x, x . : fill fill + 1, x, ? , sum(x)=fill x , fill , x. x (.. x[i] <= n_row i [1,n_col]), : x , x. var(x):
var(x + dx) = var(x) + gradient(var(x)) %*% dx + 1/2 * t(dx) %*% Hessian(var(x)) %*% dx
dx - n_col , 1, 0 (.. ). var(x) x, . , dx , . :
gradient(var(x))[i] = 2*(x[i]-mean(x))/(n_col-1), for all i in [1,n_col]
Hessian(var(x))[i,i] = 2/n_col , for all i in [1,n_col]
, dx. , , x , , x. , i - x, x[i], x. x. i - x, x[i] < n_row. : x , x[i] < n_row, x.
, a fill x, x , dx, x fill + 1. , x, x, x fill + 1. . , x x fill + 1, x_1 fill dx_1 ,
var(x_1 + dx_1) > var(x + dx)
, x var(x) fill, x, :
var(x_1 + dx_1) = var(x_1) + gradient(var(x_1)) %*% dx_1 + 1/2 * t(dx_1) %*% Hessian(var(x_1)) %*% dx_1
<= var(x_1) + 2*(max(x_1)-mean(x_1))/(n_col-1) + constant
<= var(x) + 2*(max(x)-mean(x))/(n_col-1) + constant
= var(x + dx)
, , . :
- 1 - 2
dx_1 at x_1 , x_1 , , gradient(var(x_1)) %*% dx_1 <= 2*(max(x_1)-mean(x_1))/(n_col-1). , x dx fill, , constant. - 2- 3, ,
var(x_1) <= var(x) fill, (ii) gradient(var(x)) %*% dx = 2*(max(x)-mean(x))/(n_col-1) dx fill, (iii) max(x_1) <= max(x), , x fill. , x_-1 fill-1. x_-1 x x_1 - x_-1 . Taylor x_-1 , x_-1 , x, , x_1, var(x_1) <= var(x). max(x_1) <= max(x). fill-k >= max(n_row, n_col), fill, 1. , , x; x_1. ( ), , max(x_1) <= max(x).
, , , x - 1. var(x), x . dx x , . x + dx , x .
fill :
x.i - x[i] <- min(n_row, fill - (ncol_-i)). , (n_col-i) , , 1, n_row, .fill <- fill - x[i]
OP,
R :
foo <- function(n_col, n_row, fill) {
x <- rep(NA, n_col)
for (i in seq_len(n_col)) {
x[i] <- pmin.int(n_row, fill-(n_col-i))
fill <- fill - x[i]
}
sd(x)/mean(x)
}
, fill cumsum, :
foo <- function(n_col, n_row, fill) {
x <- pmin.int(pmax.int(cumsum(c(fill-n_col+1,rep(-n_row+1,n_col-1))),1),n_row)
sd(x)/mean(x)
}
, OP:
n_col=5
n_row=5
variability <- sapply(max(n_col,n_row):(n_col*n_row), function(fill) foo(n_col, n_row, fill))
print(variability)