<!--- Filename should be: topic_story_anwserformat.Rmd --->
<!--- st-ML-8-3b.Rnw -->
  
```{r data generation, echo = FALSE, results = "hide"}
library("exams")
library("exams.forge")
instruction <- NULL
ed <- exams:::.exams_get_internal("xexams_dir_exercises")
call <- exams2call()
## DATA GENERATION
x  <- 0:2
repeat {
  xi <- c(x, sample(x, size=sample(1:6, 1),replace=TRUE))
  n  <- table(xi)
  repeat {
    lp <- cbind(ddiscrete(runif(length(x))), ddiscrete(runif(length(x)))-ddiscrete(runif(length(x))))
    if (sum(abs(lp[,2])<1e-3)==1) break
  }  
  # colSums(lp) = c(1,0)
  Li  <- ifelse(abs(lp[,2])<1e-3, sprintf("%.1f^%.0f", lp[,1], n), 
                                  sprintf("(%.1f%+.1f \\cdot p)^%.0f", lp[,1], lp[,2], n))
  LLi <- ifelse(abs(lp[,2])<1e-3, sprintf("%.0f\\cdot\\log(%.1f)", n, lp[,1]), 
                                  sprintf("%.0f\\cdot\\log(%.1f%+.1f \\cdot p)", n, lp[,1], lp[,2]))
  DLi <- ifelse(abs(lp[,2])<1e-3, "0", sprintf("\\frac{%+.1f}{%.1f%+.1f \\cdot p}", n*lp[,2], lp[,1], lp[,2]))
  llp <- lp[abs(lp[,2])>1e-3,]
  lln <- (n*lp[,2])[abs(lp[,2])>1e-3]
  DLh <- sprintf("\\frac{%+.1f}{%.1f%+.1f \\cdot \\hat{p}}", lln, llp[,1], llp[,2])
  llp <- llp[rev(1:nrow(llp)),]
  Dep <- sprintf("+%.1f\\cdot(%.1f%+.1f \\cdot \\hat{p})", lln, llp[,1], llp[,2])
  Dep <- gsub("+-", "-", Dep, fixed=TRUE)
  cfp <- colSums(llp*as.vector(lln))
  ph  <- -cfp[1]/cfp[2]
  pn  <- ph*lp[,2]+lp[,1]
  if (all(pn>=0, pn<=1)) break
}
sx <- as_obs(xi, last=" und ")
```

Question
========

```{r, error=TRUE, child=instruction}
```
  
Für ein Fußballspiel gibt es 0 Punkte für eine Mannschaft, wenn sie verliert. Einen Punkt gibt es bei
einem Unentschieden und zwei Punkte beim Gewinn des Spiels. Der Trainer weiß, dass für die Mannschaften das  untenstehende Modell gelten soll:

```{r, results='asis', echo=FALSE}
PX <- ifelse(abs(lp[,2])<1e-3, sprintf("%.1f", lp[,1]), 
                         sprintf("%.1f%+.1f \\cdot p", lp[,1], lp[,2]))
m  <- cbind(x=math(as.character(x)), "P(X=x)"=math(PX))
rownames(m) <- rep("", nrow(m))
m  <- html_matrix_sk(m, "", fmt=c("%s", "%s"))
cat(toHTMLorLatex(m))
```

Für `r sum(n)` zufällig ausgewählte Spiele seiner Mannschaft erhielt er dann folgende Punktzahlen: `r sx`.

Bestimmen Sie den Maximum-Likelihood-Schätzwert von $\hat{p}$ aus dieser Stichprobe. 
Gehen Sie davon aus, dass die zweite Ableitung der Likelihood-/Log-Likelihood-Funktion nach $p$ 
an der Stelle von $\hat{p}$ negativ ist.

Runden Sie Ihr Ergebnis auf 4 Stellen nach dem Komma und benutzen Sie den natürlichen Logarithmus.

Solution
========
  
\begin{align*}
L(p)                                                 &= `r paste0(Li, collapse="\\cdot")`\\
\log(L(p))                                           &= `r paste0(LLi, collapse="+")`\\
\frac{d\log(L(p))}{d p}                              &= `r paste0(DLi, collapse="+")`\\
                 `r paste0(DLh, collapse="+")`      &=0\\
                 `r paste0(Dep, collapse="")`      &=0\\
                 `r sprintf("%.2f%+.2f\\cdot\\hat{p}", cfp[1], cfp[2])` &=0\\
                 \hat{p} & = `r round(ph,4)`
\end{align*}

und es ergibt sich:

```{r, results='asis', echo=FALSE}
m  <- cbind(x=math(as.character(x)), "P(X=x)"=math(round(lp[,1]+ph*lp[,2], 4)))
rownames(m) <- rep("", nrow(m))
m  <- html_matrix_sk(m, "", fmt=c("%s", "%s"))
cat(toHTMLorLatex(m))
```

Meta-information
================
extype: num
exsolution: `r round2(ph,4)` 
extol: 0.001
exname: `r if(exists("story")) story else knitr::current_input()`
