-
Notifications
You must be signed in to change notification settings - Fork 304
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
Implementation of graph data #507
Comments
If the connections are time-varying, sure. Each entry in an adjacency matrix represents an edge weight, so these are your variables. OTOH, if your variables are note intensities, you can see the fit coefficient matrix as a directed adjacency matrix. For linear SINDy, it's a graph, for quadratic SINDy or higher it's a hypergraph, etc. |
I am dealing with the dataset having 20 station points (have 20 latitudes and longitudes) and each station has CO2 concentration. I wanted to see:
In the first case, the feature library is getting big, around 500 features with 1 degree polynomial and 1st order derivatives. And if I increase the number of stations, let's say 200, then it'll be even bigger. My goal for the first task is to see local transport. So in this case creating spatiotemporal grid is having some issues as the grids are not uniform and all stations are connected to each other. Do I need to provide an adjacency matrix as a spatiotemporal grid in shape (time, 20, 20) with zero when there's no connection (will this even work)? I am thinking SINDy can remove redundant stations, not sure. I don't want each 20 equations to have all the features terms. Moreover, if the number of stations are 200, then creating clusters will help otherwise the feature library would be too big. I am just not sure how the SINDy will work in this case. For the 2nd task, I don't need to define the spatial grid so this seems pretty doable. Right now I am stuck with task 1. |
SINDy isn't good at doing things like d(station1)/d(station2). It is better at d(station1)/dt = f(station1, station2). You very keenly pointed out that you can do something like the former in pysindy with spatial derivatives, as d(station1)dx = k * station 2 is equivalent to d(station1)/d(station2) = k. This particular example could potentially be handled by an ODE, however. For the PDE library, you only need a spatial grid, whereas for the WeakPDELibrary, you need a spatiotemporal grid, but in both, only uniform grids are supported. For larger numbers of coordinates/stations, yes, clustering could help. Have you tried just a plain linear library and a (time, stations) data matrix? Ordering of terms is (*spatial terms, time, coordinate/feature) |
My code:
Output: Output: Similarly, I am getting 25 equations, for 25 stations. "(*spatial terms, time, coordinate/feature)" is showing index error. I wanted to improve this, as the number of terms are getting too big for each discovered equation. OTOH, accuracy is good, around 93%-97%. |
|
Hello, Thank you for the quick reply.
This is for 3 stations using STLSQ: Using SR3 (L0): Output: With SR3 (l2): SSR model: SSR (metric = model residual) model: |
If you are using The line:
simply says |
Can we implement SINDy on non-uniform data, similar to how Graph Neural Networks utilize an adjacency matrix? Is there a way to incorporate an adjacency matrix in this context?
The text was updated successfully, but these errors were encountered: