-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generalize TransferOperator #434
base: main
Are you sure you want to change the base?
Conversation
is there any paper in the literature that has generalized the transfer operator like this? Among other outcome spaces? if not, perhaps you can consider making this a paper. |
At least I am not aware of any such paper. Would be a cool contribution for sure! |
@rusandris Thanks for the PR! I am super busy at the moment, so I'm not able to review this in detail yet. I'll try to get to it within the next couple of weeks.
I'll have to do a thorough review dig deeper to understand this issue. I'll ping you when I've tested this out a bit, @rusandris. |
Just to be clear: i have no capacity to be involved in such a paper, but it is worth discussing with your supervisor Andras. |
I looked inside julia> probabilities(TransferOperator(),op,x;N=5,tolerance=1e-12)
distribution = [0.28892942757860407 0.7110705724213959]
distribution = [0.7110705724213959 0.28892942757860407]
distance = 0.7778172853930047
distribution = [0.28892942757860407 0.7110705724213959]
distance = 0.7778172853930047
distribution = [0.7110705724213959 0.28892942757860407]
distance = 0.7778172853930047
distribution = [0.28892942757860407 0.7110705724213959]
distance = 0.7778172853930047
distribution = [0.7110705724213959 0.28892942757860407]
distance = 0.7778172853930047
Probabilities{Float64,1} over 2 outcomes
Outcome(1) 0.7110705724213959
Outcome(2) 0.28892942757860407 reveals of course that it works as it should. Since the transition matrix looks like this to.transfermatrix
2×2 SparseMatrixCSC{Float64, Int64} with 2 stored entries:
⋅ 1.0
1.0 ⋅ the iterative method keeps flipping the initial random values inside the distribution. This wouldn't converge, unless the initial distribution is already given as probabilities(RelativeAmount(),op,x)
Probabilities{Float64,1} over 2 outcomes
Outcome(1) 0.5
Outcome(2) 0.5 |
First draft PR. I tried to follow the design ideas mentioned here #424 .
TransferOperator
becomes aProbabilitiesEstimator
.First results:
which returns a
TransferOperatorApproximation <: ProbabilitiesEstimator
.OP example:
Most important field is the
transfermatrix
probabilities
function does work formally in that it gives an output:but for some reason, for this particular example, the iterative method used in
invariant_measure
does not converge.the correct probabs of course would be
[0.5,0.5]
as the eigenvector corresponding to eigenvalue 1 is[1,1]
. This might be a separate issue though.Let me know what you think.