# The mean of 3-d EmsembleSolution from StochasticDelayDiffEq

This post was temporarily hidden by the community for possibly being off-topic, inappropriate, or spammy.

I can’t reproduce your problem. If I make a 3d array with `sol = rand(2,4412,1000)`, then `mean(sol, dim=2)` gives a `MethodError` because the keyword is spelled `dims`, not `dim`. If I use the correct spelling, it works fine:

``````julia> using Statistics

julia> sol = rand(2,4412,1000);

julia> mean(sol, dims=3)
2×4412×1 Array{Float64, 3}:
[:, :, 1] =
0.488939  0.483749  0.499478  0.502813  …  0.494693  0.50745   0.482576
0.522986  0.515288  0.510555  0.492776     0.486172  0.493854  0.508768
``````

Are you using some other implementation of `mean` than the one in the `Statistics` standard library?

1. Don’t post screenshots, post quoted code.

2 Likes

Yes I’m using the mean in the Statistics Library.

I changed the “dim” to “dims” and the result still like this… ``````# using Pkg

using DifferentialEquations, StochasticDelayDiffEq, Plots, Statistics

function f(du, u, h, p, t)
M_A, M_B = u;
tau, mu, n, P0, b, sigma_A, sigma_B = p;
hist_A = h(p, t-tau);
hist_B = h(p, t-tau);
du = -mu*M_A + (1+b)*(1/(1+(hist_B/P0)^n));
du = -mu*M_B + (1/(1+(hist_A/P0)^n));
end

function g(du, u, h, p, t)
tau, mu, n, P0, b, sigma_A, sigma_B = p;
du = sigma_A;
du = sigma_B;
end

h(p, t) = zeros(2);

tau = 100; lag = [tau];
P0 = 0.1; n = 5;
mu = 0.03; b = 0.01;
sigma_A = 0.003; sigma_B = 0.003; # only sigma < 0.07 show realiable staeady states
p = (tau, mu, n, P0, b, sigma_A, sigma_B);
tspan = (0, 50000);
u0 = [0, 0];

prob = SDDEProblem(f, g, u0, h, tspan, p; constant_lags = lag);

# single trajectory
# sol = solve(prob, RKMil());
# plot(sol)

# small multiple trajectories

# multiple trajectories
ensembleprob = EnsembleProblem(prob);
sol = solve(ensembleprob, RKMil(), EnsembleThreads(), trajectories = 1000);
# summ = EnsembleSummary(sol, 0:1:50000);
# plot(summ)

m_sol = mean(sol ,dims = 3)

# plot(sol[1, :, 1], sol[2, :, 1], xlabel = "mRNA in cell A", ylabel = "mRNA in cell B")
``````

Sorry for posting screen shot.
This is the code

And also the “sol” is not a matrix. It’s an EnsembleSolution. Is it because its a EnsembleSolution so I can’t use “mean”?

Thank you

typeof(sol) is an EmsembleSolution.

I wanted to plot the average trajectory. I should use EnsembleSummary(sol) to get its average trajectories then plot(…, :).

1 Like