The probability for two people to provide identical answers on survey questions Here is the problem: A survey contains 7 binary questions (Yes/No responses). If two people are answering the survey, what is the probability for their answers on 4 or more of the questions to match? In other words, if we have four or more matching answers, we can consider the overall survey response to be similar for both people.
 A: I assume that the survey will be answered independently by the participants. First, you need estimates for the baseline probabilities $p_{i}$ that an answer $i$ will be answered "yes". The probability of two persons answering "yes" for question $i$ is then $p_{i}^{2}$. Likewise, the probability of two persons answering "no" for question $i$ is $(1-p_{i})^{2}$, hence the probability of agreement is $p_{i}^{2} + (1-p_{i})^{2}$.
If you assume that all $p_{i} = 0.5$, then you get the answer given by carlosdc since $0.5^{2} + (1-0.5)^{2} = 0.5$. If you allow the $p_{i}$ to vary, an answer can probably be given in closed form as well, but with only 7 questions, it's easy to simply enumerate all possibilities to get 4 or more agreements, and calculate the probability for each case.
> n <- 7            # number of questions
> p <- rep(0.5, n)  # probabilities p_i, here: set all to 0.5
# p <- c(0.4, 0.4, 0.4, 0.4, 0.1, 0.1, 0.1) # alternative: let p_i vary
> k <- 4:7          # number of agreements to check
# k <- 0:7          # check: result (total probability) should be 1

# vector to hold probability for each number of agreements
> res <- numeric(length(k))

# function to calculate the probability for an event with agreement on the
# questions x and disagreement on the remaining questions
> getP <- function(x) {
+     tf <- 1:n %in% x              # convert numerical to logical index vector
+     pp <- p[tf]^2 + (1-p[tf])^2   # probabilities of agreeing on questions x
+
+     # probabilities of disagreeing on remaining questions
+     qq <- 1 - (p[!tf]^2 + (1-p[!tf])^2)
+     prod(pp) * prod(qq)           # total probability
+ }

# for each number of agreements: calculate probability
> for(i in seq(along=res)) {
+     # all choose(n, k) possibilities to have k agreements
+     poss <- combn(1:n, k[i])
+
+     # probability for each of those possibilities, edit: take 0-length into account
+     if (length(poss) > 0) {
+         res[i] <- sum(apply(poss, 2, getP))
+     } else {
+         res[i] <- getP(numeric(0))
+     }
+ }

> res                # probability for 4, 5, 6, 7 agreements
[1] 0.2734375 0.1640625 0.0546875 0.0078125

> dbinom(k, n, 0.5)  # check: all p_i = 0.5 -> binomial distribution
[1] 0.2734375 0.1640625 0.0546875 0.0078125

> sum(res)           # probability for 4 or more agreements
[1] 0.5

The R code could certainly be simplified, also prod() might be worse in terms of error propagation with small numbers than exp(sum(log())), although I'm not sure on that one.
A: If for each question the probability of selecting the same answer is equal to 0.5, the answer is the following:
$$\sum_{i=4}^7{\binom{7}{i}p^i(1-p)^{7-i}}$$
where $p=0.5.$
In this case it is a binomial distribution.
