Solving Noisy Weather Sensor Probability: Day 5 Sunny

  • Thread starter Thread starter carllacan
  • Start date Start date
  • Tags Tags
    Sensor Weather
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 1K views
carllacan
Messages
272
Reaction score
3

Homework Statement



An imperfect sensor measures the weather (which can only be either sunny, cloudy or rainy) in a fixed place. Suppose we know the weather on the first day was sunny. In the following days we obtain the measurements cloudy, cloudy, rainy, sunny.

What is the probability that the weather at day 5 is indeed sunny as our sensor says?

Homework Equations



The noise of the sensor is given by a known stochastic matrix:

[itex] S_{ij} = p(z_n = j | x_n = i)[/itex]

where [itex]z_n[/itex] refers to a measurement and [itex]x_n[/itex] to the real state at day n, and [itex]i[/itex] and [itex]j[/itex] refer to the possible weathers (sunny, cloudy, rainy).

The Attempt at a Solution



I just tried to find a general formulation, as I saw that I would probably need it later.

By straightforward application of Bayes Rule I've found the expression:

[itex] p(x_n = i | z_n = j) = \frac{p(z_n = j | x_n = i)p(x_n = i)}{p(z_n = j)}[/itex]

Now, here is where I have trouble. How can I find out the real probability that one day had a certain weather?

In a previous exercise I was presented with a similar situation and was given a stochastic matrix that described the probability of weather on a certain day based on the weather of the previous day. I am not sure that it applies also to this exercise. Is there any way to solve it with the given data?
 
Last edited:
Physics news on Phys.org
I had misread the statement of the problem. I have update the info now. Can someone help me?
 
I've worked out this code for the Bayes Filter, would you mind telling me if I've done it right?
Code:
function newx = posterior(z, x0, transmat, sensmat)
  if size(z)(2) = 0
    newx = x0
  end
  
  prior = posterior(z(1:end-1), x0, transmat, sensmat)*transmat(:,x)	
  norm = sensmat*prior   
  newx = sensmat(x)(z)* prior / norm
endfunction
 
Last edited: