In the beginning there weren't really enough missing values for it to be considered a problem. - - - - - -- .pull-left[ **In the 1960s/70s:**
 Development of multiple imputation ] ??? But by the 1960s there was so much data missing in the US census that something had to be done about it.  And, what is important to keep in mind is that during that period, analysing data must have been quite a bit different from what it is today. Not every researcher had a computer, and when they did, computers had very basic statistical software, and no functionality to handle missing values, and analysts were not trained in missing data methodology. - - - - - --
 .turqdkbox-50[ ⇨ fix the missing data problem once (centrally)
 ⇨ supply complete data to many analysts ] ??? And so a very central point of the solution to the missing data problem back then was that the data had to be analysed by researchers who only had very basic statistical tools at their disposal. --- ## Multiple Imputation * **uncertainty** about the missing value ??? The important issue in imputing missing values is that there is **uncertainty** about what the value would have been.  Also: some values are going to be more likely than others, and usually there is a relationship between the variable that has missing values and the other data that we have collected. - - - - -- .pull-left[ **⇨ missing values have a distribution**  ] ??? So, in statistical terms, we can say that missing values have a distribution, and that we need a model to learn how the incomplete variable is related to the other data. - - - - -- .pull-right[
 .turqdkbox[ Predictive distribution of the missing values given the observed values. `$$p(x_{mis}\mid\text{everything else})$$` ] ] ??? And this means that we can impute the missing values by sampling from this distribution conditional on the other data. --- ## A Simple Example .gr-left[

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 * `\(\mathbf y\)`: **response** * `\(\color{var(--turq)}{\mathbf x_1}\)`: **incomplete** covariate * `\(\mathbf x_2\)`, `\(\mathbf x_3\)`: **complete** covariates ] .gr-right[ **Predictive distribution:** `$$p(\color{var(--turq)}{\mathbf x_1} \mid \mathbf y, \mathbf x_2, \mathbf x_3, \boldsymbol\beta, \sigma)$$`
 {{content}} ] ??? Let's look at a simple example. Imagine, we have the following dataset, where we have a completely observed response variable `\(y\)`, a variable `\(x_1\)` that is missing for patient `\(i\)`, and two other covariates that are completely observed. And so the the predictive distribution that we need to sample the imputed value from, would be the distribution of `\(x_1\)`, given the response `\(y\)`, the other covariates, and some parameters. - - - -- For example: * Fit a model to the cases with observed `\(\color{var(--turq)}{\mathbf x_1}\)`: `$$\color{var(--turq)}{\mathbf x_1} = \beta_0 + \beta_1 \mathbf y + \beta_2 \mathbf x_2 + \beta_3 \mathbf x_3 + \boldsymbol\varepsilon$$` {{content}} ??? For example, we could think of this as fitting a regression model with `\(x_1\)` as the dependent variable, and `\(y\)` & the other covariates as independent variables. We can then fit this model to all those cases for which we have `\(x_1\)` observed,... - - - - -- * Estimate parameters `\(\boldsymbol{\hat\beta}, \hat\sigma\)`
 ⇨ define distribution `\(p(\color{var(--turq)}{x_{i1}} \mid y_i, x_{i2}, x_{i3}, \boldsymbol{\hat\beta}, \hat\sigma)\)` ??? ... in order to estimate the parameters, and to learn how the distribution of `\(x_1\)` conditional on the other data looks like. And then we can use this information to specify the predictive distribution for the cases with missing `\(x_1\)` and sample imputed values from this distribution. --- ## Multiple Imputation  ??? The idea behind multiple imputation is that, using this principle, we sample imputed values and fill them into the original, incomplete data to create a completed dataset. And in order to take into account the uncertainty that we have about the missing values, we do this multiple times, so that we obtain multiple completed datasets. Because all the missing values have now been filled in, we can analyse each of these datasets separately with standard statistical techniques. To obtain overall results, the results from each of these analyses need to be combined in a way that takes into account both the uncertainty that we have about the estimates from each analysis, and the variation between these estimates. --- ## In Practice .three-cols[
 Multivariate
Missingness

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)	 \(\ldots\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 <i class = "fas fa-check"	 	 	 <i class = "fas fa-check"	 \(\ldots\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 ] ??? In practice, we usually have missing values in multiple variables. -- .three-cols60[ **Most common approach:**
 MICE (multivariate imputation by chained equations)
 FCS (fully conditional specification)
 \begin{alignat}{10} \color{var(--turq)}{\mathbf x_1} &= \beta_0 &+& \beta_1 \mathbf y &+& \beta_2 \color{var(--turq)}{\mathbf x_2} &+& \beta_3 \color{var(--turq)}{\mathbf x_3} &+& \ldots &+& \boldsymbol\varepsilon \\ \color{var(--turq)}{\mathbf x_2} &= \alpha_0 &+& \alpha_1 \mathbf y &+& \alpha_2 \color{var(--turq)}{\mathbf x_1} &+& \alpha_3 \color{var(--turq)}{\mathbf x_3} &+& \ldots &+& \boldsymbol\varepsilon \\ \color{var(--turq)}{\mathbf x_3} &= \theta_0 &+& \theta_1 \mathbf y &+& \theta_2 \color{var(--turq)}{\mathbf x_1} &+& \theta_3 \color{var(--turq)}{\mathbf x_2} &+& \ldots &+& \boldsymbol\varepsilon \end{alignat}
 {{content}} ] ??? And the most common approach to imputation in this setting is MICE, short for **multivariate imputation by chained equations**, an approach that is also called **fully conditional specification**. The principle is an extension to what we've seen on the previous slides. We impute missing values using models that have all other data in their linear predictor. - - - --
 * iterative {{content}} ??? Because in these imputation models we now have incomplete covariates, we use an iterative algorithm. We start by randomly drawing starting values from the observed part of the data, and then we cycle through the incomplete variables and impute one at a time. - - - - - - -- * flexible model types ??? The models for the different variables can be specified according to the type of variable. Once we have imputed each missing value, we start again with the first variable, but now use the imputed values of the other variables instead of the starting values, and we do this a few times until the algorithm has converged. --- ## One-Size-Fits-All? In : ```r mice::mice(mydata) ``` ??? The MICE algorithm is available in most statistical programms. In R, it is part of the package called **mice**. And using this package, we could perform multiple imputation using just a single line of code. --
 Imputation strategy independent of * **type** of variables * **size** of the data * **analysis model** of interest ??? So it seems that MICE is an imputation strategy that works for * any **type of variable**: continuous, categorical, skewed, ..., because we can choose a different type of model for each incomplete variable * and it worksfor large or small datasets, both with respect to the number of variables and the number of observations in the data, * and is completely independent from the analysis that we want to perform. - - - - --
 .turqdkbox[ ⇨ MICE / FCS "works" in all settings!? ]
 ??? So it seems like MICE just works in all settings. One single approach that fits all of our missing data problems. **But does it really?** --- ## A Simple Example .pull-left[ **Implied Assumption:**
 Linear association between `\(\color{var(--turq)}{\mathbf x_1}\)` and `\(\mathbf y\)`: `$$\color{var(--turq)}{\mathbf x_1} = \beta_0 + \bbox[#E5E5E5, 2pt]{\beta_1 \mathbf y} + \beta_2 \mathbf x_2 + \beta_3 \mathbf x_3 + \boldsymbol\varepsilon$$`  ] ??? Let's go back to our simple example with missing values in just one covariate `\(x_1\)`. An assumption that we implicitly made during the imputation was that there is a linear association between the incompl. covariate and the outcome. - - - -- .pull-right[
 But what if `$$\mathbf y = \theta_0 + \bbox[#E5E5E5, 2pt]{\theta_1 \color{var(--turq)}{\mathbf x_1} + \theta_2 \color{var(--turq)}{\mathbf x_1}^2} + \theta_3 \mathbf x_2 + \theta_4 \mathbf x_3 + \boldsymbol\varepsilon$$`  ] ??? But what if we have a setting where the true association is non-linear, for example, quadratic? In that case our analysis model for the response `\(y\)` would also include the quadratic term `\(x_1^2\)`. --- ## Non-linear Associations .pull-left[ * true association: non-linear * imputation assumption: linear ] .pull-right[  }⇨   bias!  ]  ??? What happens when we have data with a non-linear association, but wrongly assume a linear association during imputation is that the imputed values will distort the true association between the incomplete variable and the response. --- count: false class: animated, fadeIn ## Non-linear Associations .pull-left[ * true association: non-linear * imputation assumption: linear ] .pull-right[ } ⇨  bias! ]  ??? And this will introduce bias, even if we analyse the imputed data with the correct model. --- ## Time-to-Event Outcomes
 **Proportional Hazards Model:** `$$h_i(t) = h_0(t) \exp(\color{var(--turq)}{x_i} \beta_x + \mathbf z_i^\top \boldsymbol \beta_z)$$` .pull-left[ * `\(\color{var(--turq)}{x_i}\)`: incomplete covariate * `\(\mathbf z_i\)`: vector of other covariates ] .pull-right[

\(h(t)\): hazard function

\(h_0(t)\): baseline hazard

\(\mathbf T\): observed event / censoring time

\(\boldsymbol\delta\): event indicator

 ] ??? Another setting that we encounter in many applications is that we have a time-to-event outcome, and we want to model this outcome using a proportional hazards model such as the Cox model. To simplify the notation a bit I assume here that we have * one incomplete covariate `\(x\)` * and some completely observed covariates `\(z\)`. For the rest we use the standard notation. The proportional hazards model is written with the hazard as the response, but to see the implication for imputation it is more convenient to look at the log likelihood. --- ## Time-to-Event Outcomes **Log-likelihood** `$$p(\mathbf T, \boldsymbol \delta \mid \color{var(--turq)}{\mathbf x}, \mathbf z, \boldsymbol\beta) = \boldsymbol\delta (\log h_0(T) + \color{var(--turq)}{\mathbf x} \beta_x + \mathbf z \boldsymbol\beta_z) - \int_0^T h_0(s)\exp( \color{var(--turq)}{\mathbf x} \beta_x + \mathbf z \boldsymbol\beta_z)ds$$` ??? And what we can see here is that the response, the observed event or censoring time `\(T\)` and the event indicator, has a non-linear association with the incomplete variable `\(x\)`. -- <br> * Proportional hazards models imply **non-linear** associations ??? So, proportional hazards models imply a non-linear association, ... - - - -- * Imputation with a model `$$\color{var(--turq)}{\mathbf x} = \theta_0 + \theta_1 \mathbf T + \theta_2 \boldsymbol\delta + \theta_3 \mathbf z_1 + \ldots$$` is <span style = "color: var(--pink); font-weight: bold;">wrong!</span> ??? But the imputation model that we might naively use for the incomplete variable `\(x\)` would assume that `\(x\)` has a linear association with event time and indicator, and we would get biased results when we impute our data this way.                       --- ## Multi-level Data .gr-left2[  ] .gr-right2[

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 ] ??? Another setting in which specification of the predictive distribution for a incomplete variable is not straightforward: **multi-level setting.** For example: * a response variable `\(y\)`: measured repeatedly over time in the same patient * in a multi-center study, where we need to take into account that patients from the same hospital are more similar to each other than patients from different hospitals ⇨ data in long format
 (multiple rows with information on the same patient "i") In this format:
 it does not matter if we have unbalanced data (different number of measurements, taken at different time points) --- ## Multi-level Data .gr-left[

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 ] .gr-right[ **(Linear) Mixed Model** `$$y_{ij} = \underset{\text{fixed effects}}{\underbrace{\mathbf x_{ij}^\top\boldsymbol\beta}} + \underset{\text{random effects}}{\underbrace{\mathbf z_{ij}^\top\mathbf b_i}} + \varepsilon_{ij}$$`
 * **level-1** variables:
repeatedly measured / time-varying * **level-2** variables:
baseline / patient specific / time-constant ] ??? For analysis: ⇨ typically use a mixed model * takes into account that the repeated measurements for a patient are not independent by extending the standard linear regression model with random effects terms Our data can be related to different levels of the data hierarchy. In a longitudinal study, for example, we would have * level-1 variables, which are the repeatedly measured values or time-varying variables * and level-2 variables, which are for example patient characteristics that are time-constant --- ## Imputation in Multi-level Data .gr-left2[ If `\(\color{var(--turq)}{\mathbf x_1}\)` is a **level-1** variable: `$$\color{var(--turq}{x_{1ij}} = \underset{\color{var(--lgrey)}{\text{fixed effects}}}{\color{var(--lgrey)}{\underbrace{\color{#000000}{\theta_0 + \theta_1 y_{ij} + \theta_2 x_{2ij} + \theta_3 x_{3ij}}}}} + \underset{\color{var(--lgrey)}{\substack{\text{random}\\\text{effects}}}}{\color{var(--lgrey)}{\underbrace{\color{#000000}{\mathbf u_i \mathbf z_i(t)}}}} + \varepsilon_{ij}$$` ] .gr-right2[

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 \(i\)	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 ] ??? If the incomplete variable `\(x_1\)` was a level-1 variable (i.e. time-varying) we could use a mixed model as the imputation model. - - - -- .raisebox150[ But if `\(\color{var(--turq)}{\mathbf x_1}\)` is a **level-2** variable? {{content}} ] ??? Things get interesting when we have missing values in a baseline covariate:
 because the repeated values of a level-2 variable should not just be correlated, but **identical at different time points**. -- * The above would result in different `\(\color{var(--turq)}{\mathbf x_1}\)` over time. * So would a standard GLM (applied to long-format data). {{content}} ??? If we impute a level-2 variable with the mixed model shown here, the imputed values at different time points would not be identical. And when we use a standard GLM, like we would usually do for a time-constant variable, would then treat the rows that belong to the same patient as independent and again get values for `\(x_1\)` that vary between those rows. - - - - -- ** ⇨ Imputation in wide format?** ??? It seems that we have a problem to correctly impute level-2 variables when our data is in long format. So the question is, can we transform our dataset to wide format, so that we only have one row per patient, and have data from different time points as separate variables. --- ## Imputation in Wide Format  ??? When we look at this example, it becomes quite clear that for very unbalanced data it is not possible to convert our data to wide format. --- count: false class: animated, fadeIn ## Imputation in Wide Format  ??? In the wide format we would have to put our data into a grid. For example, by creating time intervals. But with unbalanced data, patients have multiple measurements in some intervals, and no measurement in others. --- ## Imputation in Wide Format  ??? Or we could think about making a variable for the first observations, the second, and so on. But you can see here, where I have highlighted the first and second observations for each patient, that the observations are at very different time points so that they will probably have to be interpreted differently. - - - - For this reason, longitudinal variables are sometimes excluded from the imputation, or very simple summaries are used, like taking the first value or the mean over the repeated values. But when we do not fully include the longitudinal response and other longitudinal variables into the imputation model, we lose important information and could introduce considerable bias. --- ## Imputation of Missing Covariates Specifying the **correct imputation** model `$$p(\color{var(--turq)}{\mathbf x_{mis}} \mid \text{everything else})$$` directly is **not straightforward** for * GLMs with **non-linear associations** * **time-to-event** outcomes * **multi-level** settings  ??? So, in summary, we have seen that specifying the correct imputation model for the incomplete variables is not always straightforward, and in some settings even not possible, specifically in settings with non-linear associations, when we have a time-to-event outcome or in multi-level settings. - - - --
 .nord0box[ **⇨ We need another approach in these settings.** ] ??? But the "classic" FCS / MICE approach does require us to specify the imputation models directly, and so in these settings we do need alternative approaches. --- ## Joint Model Multiple Imputation **Idea:**
 Approximate `\(p(\color{var(--turq)}{\mathbf x_{mis}} \mid \text{everything else})\)` with a known multivariate distribution.
 (usually multivariate normal) ??? One such alternative approach is joint model multiple imputation. This is not a new approach, actually, it was the approach suggested when multiple imputation was first developed. When there are missing values in multiple variables and the variables are of different type, for example continuous and binary, then the joint distribution does not have a closed form which makes it difficult to work with. The idea of joint model MI is to approximate this multivariate distribution with a known distribution that is easy to work with. And in practice this is often the multivariate normal distribution. - - - - --
 ⇨ each variable is assumed to be (latent) normally distributed  ??? This means that we assume for each incomplete variable, that it is normally distributed, or has a latent normal distribution. So, even when a variable has a skewed distribution, we treat it as if it had a normal distribution. And for categorical variables we assume that there is an underlying, normally distributed variable, and when that underlying value is less than a certain cut-off, we observe a particular category, and when it is above the cut-off we observe the next category. --- ## Joint Model Multiple Imputation .gr-left[

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)	 \(\mathbf X_{obs}\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 	 	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 ] ??? It is possible to use Joint Model MI also in simpler settings, but I will focus here on the multi-level setting. Say we have the following data situation, where we have missing values in 3 variables, `\(x_1\)` is time-varying, `\(x_2\)` and `\(x_3\)` are baseline covariates, and we have a bunch of other variables that are completely observed. - - - - -- .gr-right[ `\begin{align*} \boldsymbol y &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_y + \mathbf b_y \mathbf Z_y + \boldsymbol\varepsilon_y\\ \color{var(--turq)}{x_1} &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_1 + \mathbf b_1 \mathbf Z_1 + \boldsymbol\varepsilon_1\\ \color{var(--turq)}{x_2} &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_2 + \boldsymbol\varepsilon_2\\ \color{var(--turq)}{x_3} &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_3 + \boldsymbol\varepsilon_3 \end{align*}` ] ??? In Joint Model MI we would then specify a linear mixed model for the longitudinal response `\(y\)` and the longitudinal incomplete variable `\(x_1\)`, and standard linear regression models for the other two incomplete variables. In these models, we only use the completely observed variables as covariates. --- count: false ## Joint Model Multiple Imputation .gr-left[

 	 \(\mathbf y\)	 \(\mathbf x_1\)	 \(\mathbf x_2\)	 \(\mathbf x_3\)	 \(\mathbf X_{obs}\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 	 	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 \(i\)	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 <i class = "fas fa-check"	 \(\ldots\)

 	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)	 \(\vdots\)

 ] .gr-right[ <svg width="35" height="190" style = "position: absolute; right: 318px; top: 170px;"> <rect width="100%" height="100%" rx = "3" style="fill:rgba(58,79,146,0.3);" /> </svg> <svg width="35" height="95" style = "position: absolute; right: 215px; top: 170px;"> <rect width="100%" height="100%" rx = "3" style="fill:rgba(58,79,146,0.3);" /> </svg> `\begin{align*} \boldsymbol y &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_y + \mathbf b_y \mathbf Z_y + \boldsymbol\varepsilon_y\\ \color{var(--turq)}{x_1} &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_1 + \mathbf b_1 \mathbf Z_1 + \boldsymbol\varepsilon_1\\ \color{var(--turq)}{x_2} &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_2 + \boldsymbol\varepsilon_2\\ \color{var(--turq)}{x_3} &= \color{var(--turqdk}{\mathbf X_{obs}^\top} \boldsymbol\theta_3 + \boldsymbol\varepsilon_3 \end{align*}` <br> $$ `\begin{pmatrix} \color{var(--blue)}{\mathbf b_y}\\ \color{var(--blue)}{\mathbf b_1}\\ \color{var(--blue)}{\mathbf \varepsilon_2}\\ \color{var(--blue)}{\mathbf \varepsilon_3} \end{pmatrix}` \sim N(\mathbf 0, \mathbf V) \qquad `\begin{pmatrix} \color{var(--blue)}{\mathbf \varepsilon_y}\\ \color{var(--blue)}{\mathbf \varepsilon_1} \end{pmatrix}` \sim N(\mathbf 0, \mathbf W) $$ ] ??? And to connect these models, to take into account that the imputed values are not independent from each other and from the response `\(y\)`, the random effects `\(b\)` and error terms `\(\varepsilon\)` are modelled together using multivariate normal distributions. One drawback, however, is that this connection between the models implies linear associations, so this approach is not appropriate if we had non-linear associations between incomplete covariates and the response. --- ## Bayesian Analysis of Incomplete Data **Imputation:** `$$p(\color{var(--turq)}{\mathbf x_{mis}} \mid \text{everything else})$$` ??? Another alternative to MICE is to perform a fully Bayesian analysis. The idea that missing values have a distribution, which I talked about in the beginning of this presentation, is essentially a Bayesian idea. And so it makes sense to think about analysing incomplete data in the Bayesian framework. When MI was developed 50 years ago the theoretical knowledge to use Bayesian methods for missing data was there, but because Bayesian models are often computationally intensive, they were just not feasible at the time.  When we perform a sBayesian analysis we determine the posterior distribution of the unknown parameters, given the data. --
 **⇨ simultaneous analysis and imputation** `$$p(\color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma \mid \text{observed data})$$` ??? And so, in a setting where we have incomplete data, in Bayesian analysis we can combine the estimation of the parameters with the imputation of the missing values. --- ## Bayesian Analysis of Incomplete Data **Bayes Theorem:** `$$\underset{\text{posterior}}{\underbrace{p(\boldsymbol\beta, \sigma \mid \text{data})}}\propto \underset{\substack{\text{likelihood}\\\text{(analysis model)}}}{\underbrace{p(\text{data}\mid \boldsymbol\beta, \sigma)}}\;\;\underset{\text{prior}}{\underbrace{p(\boldsymbol\beta, \sigma)}}$$` ??? To obtain the posterior distribution, Bayes theorem is applied, which that tells us that the posterior is proportional to the product of likelihood of the data given the parameters, and our prior assumption about the parameters. - - - -- **For missing covariates:** `$$p(\color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma \mid \underset{\color{var(--lgrey)}{\mathbf y, \mathbf x_{obs}}}{\underbrace{\text{observed data}}})\propto p(\text{observed data}\mid \color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma)\;\;p(\color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma)$$` ??? In the case of missing covariate values, this formulation now slightly changes. We are interested in the posterior distribution of the parameters **AND** the missing values, conditional on the observed data. The observed data consists of the response variable `\(y\)` and the completely observed covariates. --- count: false class: animated, fadeIn ## Bayesian Analysis of Incomplete Data **Bayes Theorem:** `$$\underset{\text{posterior}}{\underbrace{p(\boldsymbol\beta, \sigma \mid \text{data})}}\propto \underset{\substack{\text{likelihood}\\\text{(analysis model)}}}{\underbrace{p(\text{data}\mid \boldsymbol\beta, \sigma)}}\;\;\underset{\text{prior}}{\underbrace{p(\boldsymbol\beta, \sigma)}}$$` **For missing covariates:** `$$p(\color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma \mid \underset{\color{var(--lgrey)}{\mathbf y, \mathbf x_{obs}}}{\underbrace{\text{observed data}}})\propto p(\text{observed data}\mid \color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma)\;\;\underset{\underset{\substack{\text{imputation}\\\text{part}}}{{p(\color{var(--turq)}{\mathbf x_{mis}} \mid \boldsymbol\beta, \sigma)}}\;\underset{\text{prior}}{{p(\boldsymbol\beta, \sigma)}}}{\underbrace{p(\color{var(--turq)}{\mathbf x_{mis}}, \boldsymbol\beta, \sigma)}}$$` ??? The last term here, the joint distribution of the missing values and parameters can be split up into the distribution of the missing values given parameters and the prior distribution of the parameters. --- ## Bayesian Analysis of Incomplete Data

posterior
distribution

\(\propto\)

analysis
model

covariate
models

priors

 ??? This means that in the setting with incomplete covariates, in order to obtain the posterior distribution, we need to specify the analysis model, a model for the covariates, and prior distributions for all parameters. Compared to a Bayesian analysis of complete data, we have to additionally specify models for the incomplete covariates. - - - --
 ⇨ Numeric estimation via MCMC sampling ??? In most cases, the posterior distribution will not have a closed form and so we won't be able to derive it analytically. Instead, Markov Chain Monte Carlo methods are used to create a sample from the posterior distribution. The results from the Bayesian analysis are then presented as summary measures of this sample, usually the mean and the 2.5% and 97.5% quantiles, which form the 95% credible interval. Since, in the Bayesian framework, the result is given in terms of the probability distribution of the unknown parameters conditional on the data that was observed, these results have a more intuitive interpretation than frequentist results. --
 **For example:** $$\text{Survival:}\qquad \text{posterior} \propto p(\mathbf T, \boldsymbol\delta \mid \mathbf x, \boldsymbol\theta)\; p(\mathbf x\mid \boldsymbol\theta)\; p(\boldsymbol\theta) $$ ??? As an example of how the Bayesian model formulation looks like, I show the model structure, the elements that have to be specified, for a proportional hazards model with incomplete covariates. --- ## Bayesian Proportional Hazards Model **Analysis model** `$$p(\mathbf T, \boldsymbol\delta \mid \mathbf x, \boldsymbol\theta) = h(\mathbf T \mid \mathbf x, \boldsymbol\theta)^{\boldsymbol\delta} \exp\left\{-\int_0^{\mathbf T}h(s\mid \mathbf x, \boldsymbol\theta) ds\right\}$$` ??? The analysis model has the known formulation of the likelihood of a proportional hazards model, where the hazard consists of a population baseline hazard and a linear predictor of covariates. But contrary to the classic Cox model we cannot leave the baseline hazard unspecified. Typically we would model it flexibly, for example using splines. --
 **Covariate models:**  for `\(\mathbf x = (\mathbf x_1, \mathbf x_2, \mathbf x_3, \mathbf x_{obs})\)`  `\begin{align*} p(\color{var(--turq)}{\mathbf x_1}, \color{var(--turq)}{\mathbf x_2}, \color{var(--turq)}{\mathbf x_3}, \mathbf x_{obs} \mid \boldsymbol\theta) = & p(\color{var(--turq)}{\mathbf x_1} \mid\color{var(--turq)}{\mathbf x_2}, \color{var(--turq)}{\mathbf x_3}, \mathbf x_{obs}, \boldsymbol\theta) & \color{var(--lgrey)}{\text{e.g., normal}}\\ & p(\color{var(--turq)}{\mathbf x_2} \mid \color{var(--turq)}{ \mathbf x_3}, \mathbf x_{obs}, \boldsymbol\theta)& \color{var(--lgrey)}{\text{e.g., binomial}}\\ & p(\color{var(--turq)}{\mathbf x_3} \mid \mathbf x_{obs}, \boldsymbol\theta) &\\ & \color{var(--lgrey)}{p(\mathbf x_{obs}\mid\boldsymbol\theta)} & \scriptsize \color{var(--lgrey)}{\text{(can be omitted)}} \end{align*}` ???  Probability theory tells us that we can split the joint distribution for the incomplete covariates into a a sequence of univariate conditional distributions. This allows us to choose a different type of model per variable. And because the response is not part of this specification, it is no problem to use this in settings where we have complex outcomes. In MICE, we had to specify full conditional models for the incomplete variables, and this requires us to explicitly include the response into the linear predictor of the incomplete covariates. Here, we do not directly specify the imputation model but the joint distribution of the covariates, and this does not involve the response. Because the analysis model is included in our specification of the posterior distribution, and the imputed values are sampled from that posterior, but not from the models shown here on the slide, the response is taken into account in the imputation. And this is what makes this approach so well suited for settings with complex outcomes, that we could not easily include into the linear predictor of the models for the incomplete covariates. --- ##  package JointAI ```syntax library("JointAI") mod <- coxph_imp(Surv(time, event) ~ x1 + x2 + x3 + x4 + x5, data = mydata, n.iter = 1000) ``` ??? The R package JointAI makes the use of this Bayesian approach feasible also for researchers with limited experience in Bayesian methods. The specification of the models is straightforward and very similar to how models are specified other R packages. Here, as an example, syntax for the proportional hazards model with five covariates. JointAI will automatically detect which of these variables are incomplete and specify the covariate model part, and the prior distributions. The user has additional options, which are not shown here, to specify the types of models used for the incomplete covariates, and to change the hyperparameters in the prior distributions. JointAI requires JAGS to be installed. JAGS is short for just another Gibbs sampler, and is a freely available software that performs Markov Chain Monte Carlo sampling with the help of the Gibbs sampler. --
 .pull-left[ **Also possible** * time-varying covariates * frailties/ recurrent events * joint model for longitudinal & survival data * ... ] .pull-right[ **Other model types:** * GLM * generalized linear mixed model * ordinal/multinomial (mixed) model * beta (mixed) model * ... ] ??? But you are not restricted to simple proportional hazards models, but several extensions are possible. -- Full documentation at [**https://nerler.github.io/JointAI/**](https://nerler.github.io/JointAI/) --- ## In Comparison

 	 MICE	 Joint Model MI	 Bayesian Analysis

 	  separate imputation & analysis	 simultaneous analysis & imputation

 	 direct specification of imputation model	 indirect specification of imputation model

simple settings

simple settings

multi-level data

non-linear associations

time-to-event outcomes

multi-level data

more complex analyses

non-linear associations

complex outcomes / data structure

non-linear associations

many incomplete variables / complex random effects

 very large datasets

 	 mice	 jomo	 JointAI

 ??? MICE and Joint Model imputation are two different options to perform the imputation step in a multiple imputation procedure. This means, that in both cases the imputation is completely separate from the analysis. This separation can be convenient, when the same incomplete data is used in multiple analyses, but it is also introduces the risk of having imputation models that are not compatible with the analysis, as for example when there is a non-linear association in the analysis model. In the Bayesian approach, analysis and imputation are combined. This combination assures that the imputation and analysis models do not contradict each other. It is, however, possible to extract the imputed values sampled in the Bayesian approach so that this method could also serve as the imputation step in a multiple imputation. In MICE and the Joint model imputation we specify the imputation models directly. This is what makes these approaches difficult to use when the incomplete variables do not just have simple linear associations with the other variables. In the Bayesian approach we specify the likelihood for the data, but the imputed values are sampled from the posterior distribution that is derived from the likelihood and the prior. With all the advanced sampling techniques available nowadays, this also works when the posterior does not have a closed form, and so this approach is well suited for settings with complex associations., while MICE is better suited for simpler settings. Joint model imputation can handle multi-level settings, but assumes linear associations between all sub-models. Because the Bayesian approach is more computationally intensive, it may be less well suited for very large datasets. All three approaches are available in R, as the R packages mice, jomo and JointAI. --- ## Extensions  package **smcfcs** (substantive model compatible fully conditional specification) * hybrid MICE / Bayes * time-to-event outcomes * non-linear associations ??? There are of course some extensions to the basic methodology that I have presented so far. One package that is specifically relevant in this context is the package smcfcs, short for **substantive model compatible fully conditional specification**. It uses a hybrid approach between mice and the Bayesian approach, to ensure valid imputations in settings with time-to-event outcomes and non-linear associations. --  package **jomo** * hybrid Joint model MI / Bayes * time-to-event outcomes * non-linear association ??? And also the package jomo combines the classic joint model imputation with the Bayesian approach, in order to assure imputations that are compatible with an analysis model, and to impute missing covariates in survival models. -- See also:  https://cran.r-project.org/web/views/MissingData.html ??? There are a lot more packages that either extend the mice package or implement imputation in some form available. A good place to get an overview of what is available is the CRAN task view on Missing Data. --- ## Finding the Right Fit!

 ??? One-size-fits-all can sometimes be appropriate, but mostly for scarfs and things like that. In statistical analysis, one-size-fits-all just does not work. Every model or method makes assumptions. And when we just blindly apply a method because it is the standard that everyone uses, we will likely violate some of these assumptions and get biased results. Often, it is possible to work with off-the-shelf methods, meaning, methods that are readily available in software. But there is a variety of models and methods we can choose from, and we need to study them to be able to find the one that fits our data best. And even then, we may need to adapt the methods to really fit our data, by using the more advanced options provided in the software. But the more complex our data and the analysis model of interest are, the fewer options we have, and in certain settings, we may have to use a completely custom tailored approach. And we should not forget, multiple imputation was developed 50 years ago. The data that we collect and the models that we use to analyse that data have gotten more and more complex since then. And so even though multiple imputation as a method is not wrong or bad, it just may not be a good fit for our research projects today. Luckily, also the computational power has tremendously increased over the last decades, and so it is now feasible to use more complex techniques for handling missing data. --- ## Reality Check Solving a missing data problem adequately in **just one line is an illusion!** ```r mice::mice(mydata) ``` ??? And talking about complex. Being able to solve a missing data problem adequately in just one line unfortunately is an illusion! --
 **In real life:**

 ??? In reality, setting up the imputation can take quite a bit of time. Here is an example of syntax that we used for the imputation with mice in an observational cohort study. And this syntax has more than 600 lines of code. --- class: the-end background-image: url(graphics/ColouredBackground.jpg) background-position: center background-size: contain layout: false count: false --- class: center, inverse, the-end layout: false count: false
Thanks!

 <EMAIL_ADDRESS>  N_Erler    NErler    https://nerler.com


Led by high tech, Israeli exports to hit record of $114 billion in 2019
JERUSALEM (Reuters) - Israel’s exports, a key economic growth driver, are expected to grow to a record $114 billion in 2019 from $109 billion last year, government data showed on Sunday.
According to the Central Bureau and Statistics and Economy Ministry, Israeli goods and services exports stood at $84 billion over the first nine months of the year, up 4.6% from January-September 2018.
The Economy Ministry said the increase this year stems mostly from a nearly 12% rise in services exports, with growth led by the high tech sector such as software, computing and research and development services.
The gain in services has more than offset weakness in goods exports, which have been hurt this year by slowing global trade, a weak diamond market, and a strong shekel currency ILS=.
Exports comprise around 30% of Israel’s economic activity.
Overall, exports to the European Union — Israel’s largest trading partner — rose 4.8% this year, led by the UK, Spain, Poland and Belgium. Exports to the United States — the largest export market by country — rose 2% while exports to India grew 9%. Exports to Asian markets including China and Japan fell this year.


Two killed and 38 wounded in Baghdad protests: security sources
by ReutersBAGHDAD: Two people were killed and 38 wounded early on Thursday when Iraqi security forces fired tear gas canisters at protesters near two key bridges in Baghdad, security and medical sources said.
The cause of death in both cases was tear gas canisters aimed directly at the head, the sources said.
One protester was killed near Sinak bridge and the other near the adjacent Ahrar bridge, police said.
Hospital sources said some of the wounded protesters had injuries sustained from live ammunition and others were wounded by rubber bullets and tears gas canisters.
More than 300 people have been killed since the start of mass unrest in Baghdad and southern Iraq in early October, the largest demonstrations since the fall of Saddam Hussein in 2003.
The protests are an eruption of public anger against a ruling elite seen as enriching itself off the state and serving foreign powers, especially Iran, as many Iraqis languish in poverty without jobs, healthcare or education.
The unrest has shattered the relative calm that followed the defeat of the militant Islamic State in 2017.


Grand Master Xenos:
Palus Knights are the elite champions of the Dark Elves. Their swordsmanship far surpasses that of the Humans. However, to become a Palus Knight your level must be at least 20 and you must pass the Test of the Palus Knight.
Description of Palus Knight
Change profession to Palus Knight
Return


Rate Inflation (Code: RATEINF) Consumer Price Index (CPI) and Inflation Rates for Argentina, Australia, Canada, Germany, Euro area, France, Italy, Japan, New Zealand and more.


| DOSE: |
2 hits |
oral |
LSD |
(blotter / tab) |
| |
|
smoked |
Cannabis |
(plant material) |
Okay, so I guess you could say that I used to be quite the psychonaut. I was no stranger to doing drugs.  I think that just goes to show how our minds react to psychedelics in different ways, without our control. I will say that I think that I learned a lot from acid, but I will also say that I also screwed my mind and soul up for the rest of my life. Ever since this horrible night, I have not been the same. It is something that I still think about and try to figure out to this day, even though there is nothing to figure out.
So anyway, it started out like many other Fridays for me, I went to school and by the end of the day, I had scored 2 hits acid from this chick that I knew usually had quality products. She called it white fluff, but to me, it just looked like the regular old white blotter that was so popular in s. fla. in the mid-90's. So after school, I went home, dropped off my backpack and proceeded to the bus stop where I would ride the city bus to my friends house about 30 miles away like I did every weekend. While I was on the bus, I decided to drop the acid. It was about a half-hour ride to the mall, where I had to transfer to another bus. It was while sitting at the mall, waiting for the bus that I noticed it taking effect. I was looking out into the parking lot and I saw some cars begin to stretch and bend. Ahhh, now that's what I was waiting for.
So the bus arrived and I hopped on, still feeling pretty mellow. For the next 20 minutes or so, it was rather mild, I could hear everyone on the bus talking, and I would hear everything they were saying. It was not until I got to my destination bus stop that it really hit me. As I stepped off the bus, as soon as I walked out into the late afternoon sun, it was like walking into another world. Colors were radiating from everything. Cars driving by had trails that seemed to go on forever. Now I knew I was finally tripping. As I was walking to my friend V's house, my mind was racing, going from one thing to another, all kinds of crazy thoughts manifesting themselves, which I knew was normal, I had been there before. Then all of a sudden, I found myself saying, 'No, Iím not going to go on a bad trip tonight.' I had never had a thought like this while tripping, and it kind of alarmed me, but I tried to put it away and think of something else.
I got to V's house and no one was home. I decided to wait, because I knew they would be home soon. I sat in a lounge chair on the side of his house and watched the colors swirl and bend and spiral into infinity. I felt strange, quite different, like something big was about to happen, and I didn't know why.
 We went inside began watching tv. The show that was on that night was called Strange Luck, and this particular episode was about this little black cube that everyone wanted, but when they got it, all kinds of bad things would happen to them. Needless to say, this was not the right show to watch.
I asked V to smoke a bowl with me, thinking it would calm me down. Boy was I wrong. With every toke I took, the world got more and more unnoticable. I had to get up to get something to drink, and on my way to the fridge, I thought I noticed that every move I was making, every step I took, was exactly what was happening on the tv.  I knew he was really good with computers and I began thinking he was some sort of computer wizard and he had me in some sort of virtual reality computer game. This is when it all started going WAY downhill.
V could see I was getting a little edgy, so he asked if I wanted to go to Bo's house down the street (Bo was an older guy in his late 20's at the time and he was our mentor in these areas). I said yes, because I knew he would know how to make it all better. We walked outside and into the street, as soon as we began walking in the direction of bo's house, this huge pickup truck drove by us and for some reason, it really freaked me out. I looked down at the ground and I could see the ground moving by under my feet, but when I looked up, I was not moving, I felt I was going nowhere. At this point I could tell that I could not distinguish reality. I looked a V and grabbed hold of him to make sure he was real, I told him to just take me back to V's house over and over again (I thought he was a cop and he was leading me into a trap). I guess I kind of scared him and he though I was going to hit him, so he turned and took off.
So here I am, in the middle of the street, out of my mind, and my best friend/cop/narc just went running back to his house. At this point I have no idea where I am, nothing looks familiar, and begin to think Iím dreaming, some sort of nightmare. So I ran over to the side of some strangerís house and laid down in the grass, thinking that if I went to sleep, I would wake up in my bed, and it would all be over.
Boy was I wrong. As I was laying in the grass, I could actually feel hands coming up from the ground trying to pull me down. I thought that these were demons and they were trying to pull me into hell. I could hear this strange music, sounded like out of tune violin strings mixed with fingernails running down a chalkboard. I got up and went and sat down on the curb in front of these people's house. I thought I had finally lost my mind. I could see myself locked up in the looney bin, with a straight jacket and all.  They drove up and I immediatly walked up to their car and asked them to roll their windows down. I could see the look in their faces and they were terrified. Understandable I suppose. I told them I had taken too much acid and I needed to go to the hospital. I asked them to call 911 and my mom.
So Iím standing outside their house as they go inside, completly flipping out. I gave them my phone # and they called my mom. I heard them say that I could come inside and talk to my mom. I got on the phone and was screaming to my mom 'Mom, I have no idea whatís going on!! I can't tell whatís real and whatís not!!'  I dropped the phone and just began screaming and crying because I had no idea what was going on. I thought my mom was a prostitute, that I had been abducted by aliens and this was some kind terrible mind experiment, and somehow I was set up to all this.
Just then I notice lights flashing outside and I hear a voice on a megaphone saying come outside now. I replied that I didn't know where the door was, and I didn't. The voice said to follow the voice. So I did and it lead me outside.  I was happy to reply and I dropped to the ground. They cuffed me and threw me into an ambulance.
As soon as I was thrown into the ambulance I began to feel like everything was going to be ok.  In the ambulance, a cop was in there asking me all kinds of questions which I didn't understand. I could hear him, understood the words he was saying, but I had no idea what he was saying. Very strange. All I could see was his head floating around the ambulance in a white fuzz. For most of the trip to the hospital, I just laid there staring at everyone who tried to talk to me. I didn't say a word and I couldnít understand why so many people were inside the ambulance, even tho all I could see was one face at a time, floating around in space.
I arrived at the hospital and they must have shot me up with something because I all of a sudden felt like I was floating on a cloud and I was very calm. My mom made everything better, even tho I still thought she was a prostitute and she looked like a zombie, my mom made me realize that everything was going to be okay.  On the ride home, as I was finally coming to, I asked my mom if any of it was real. I was somewhat back to normal now, but everything I went through still seemed so real.
I was not right for some months afterward. It took me years to get to the point where I didn't think about it every day. I still to this day, wonder if there really was something deeper to what happened to me that night. I still wonder if I was part of some sort of experiment, simply because it was so real, and I still remember everything clearly, as if it happened yesterday.
I do know, however, that this is the nature of psychedelics. We start the journey in search of some sort of deeper knowledge, to open our minds, or to have a spiritual experience, only to find ourselves opening pandora's box, and unleashing our worst nightmares into reality. I did acid a couple times afterward, but every time, I had to fight to stay sane. It was a struggle just to keep myself from going over the edge. I finally decided that it was not worth the mental pain anymore and stopped. I haven't done acid in 9 years now, and although I still find myself wanting to catch a glimpse of the beauty that I once knew, I am always reminded of the horrible nightmare of that fateful night.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


iPhone 5
BRAID
info
QR
Load
Add
global js
Run
Reset
callback
http://nexusosc.com/drop/braid?
This is a QR Code to your last saved or loaded interface. If you have not recently saved your interface, do so now and generate a new QR code.


Select size of photos (in pixels) you want them to be displayed
Square [75X75]
Large Square
Thumbnail
Small
Medium
Original
Hit This button to fetch photos
Fetch Recent Photos
Reset


With text-align:left (button edit with backgroundOver)
With text-align:right (and mode mini)
With absolute alignment to right
ad-button-switch
theme flip
theme switch
test encapsulation
ad-loading
usage
Put ad-loading inside the component you want to see loading, don't forget to set the parent component as position:relative; (or use the class : loadable)


To define an app, you:
- Create a proper Fantom pod with build.fan file in it (using spectre startapp <appname>, for example). This file will be used by Spectre to build your app.
- In this pod you create a class that extends Settings. There should be only one such class in your app’s pod. This class will be an entry point to your application.
- In the constructor of your Settings class you define:
- routes (by assigning Router to the Settings.routes),
- middlewares (by assigning list of Middleware-s to the Settings.middlewares), if any,
- template renderer (by assigning MustacheRenderer to the Settings.renderer).
- If you are going to serve WebSockets, see WebSocket support for how to define WebSockets handler.
File. Will be set in make from params. Use this to set up templates dir relative to appDir, for example.
Whether your app is in development mode or not. true by default, will be set to false when running in the production mode.
This method should return WsProcessor instance that will process this WebSocket connection. See WsActor.


public class ServiceAccountantRecord
extends java.lang.Object
requestId
.| Constructor and Description |
|---|
ServiceAccountantRecord(java.lang.String requestId,
java.lang.String service,
java.lang.String method,
java.lang.String email,
java.lang.String server,
long responseTime,
long operations,
java.lang.String faultMessage)
Constructor for a
ServiceAccoutantRecord . |
| Modifier and Type | Method and Description |
|---|---|
java.lang.String |
getEmail()
Gets the email used for authentication of the user.
|
java.lang.String |
getFaultMessage()
Returns the SOAP fault message.
|
java.lang.String |
getMethod()
Gets the method the call was made against.
|
long |
getOperations()
Gets the number of operations performed for this SOAP call.
|
java.lang.String |
getRequestId()
Gets the request ID which is unique for this record.
|
long |
getResponseTime()
Gets the time spent on the server.
|
java.lang.String |
getServer()
Returns the server the call was made against.
|
java.lang.String |
getService()
Gets the service the call was made against.
|
boolean |
isFault()
Returns
true if the SOAP call generated a fault. |
java.lang.String |
toString()
Returns the string representation of the record.
|
public ServiceAccountantRecord(java.lang.String requestId, java.lang.String service, java.lang.String method, java.lang.String email, java.lang.String server, long responseTime, long operations, java.lang.String faultMessage)
ServiceAccoutantRecord
. Each record is
identified by its requestId
.requestId
- the request ID extracted from the responseservice
- the service calledmethod
- the method calledemail
- the email of requestserver
- the server the request was made againstresponseTime
- the response time on the serveroperations
- the operations performed by the SOAP callfaultMessage
- the fault messagepublic java.lang.String getRequestId()
requestId
, which is unique for this recordpublic long getResponseTime()
responseTime
spent on the serverpublic long getOperations()
operations
performed for this SOAP callpublic java.lang.String getService()
service
the call was made againstpublic java.lang.String getMethod()
method
the call was made againstpublic java.lang.String getEmail()
email
used for authentication of the userpublic java.lang.String getServer()
public boolean isFault()
true
if the SOAP call generated a fault.true
if the SOAP call generated a faultpublic java.lang.String getFaultMessage()
public java.lang.String toString()
"key_0=value_0 key_1=value_1 ..."
.toString
in class java.lang.Object


Abstract Submission: (EXTENDED) May 1, 2020 23:59 UTC+9
Paper Submission: (EXTENDED) May 8, 2020 23:59 UTC+9
Acceptance Notification: (EXTENDED) June 11, 2020
Camera-ready Deadline: (EXTENDED) August 8, 2020
Conference Date: August 19-21, 2020
NVMSA is a premier conference in the area of non-volatile memory
systems and emerging memory technologies. It provides a fantastic opportunity
for global non-volatile memory researchers from different communities to discuss
and exchange knowledge, ideas and insights, and to facilitate the establishment
of potential collaborations that can speed up the progress in the design and
application of NVMs. An expanded technical program will be offered in NVMSA
2020 for the audience from academia and industry. Papers are solicited from
various topics on NVMs and related areas including, but not limited to:
Submission website:
https://easychair.org/my/conference?conf=nvmsa2020#.


--- layout: boardnews title: 'Jacobs Alumni Board Meeting – Jan. 2016' date: 'February 1st, 2016' author: 'Philipp Herzberg' permalink: '/board-news/12-jacobs-alumni-board-meeting-jan-2016' titleImage: 'board-news/IMG_4878-300x225.jpg' preview: 'Last week’s Jacobs Alumni Board meeting was probably one of the most fruitful in a long time. Not only did the team advance specific details of the near-to-completion database, but also strengthened its ties with the' ---
Last week’s Jacobs Alumni Board meeting was probably one of the most fruitful in a long time. Not only did the team advance specific details of the near-to-completion database, but also strengthened its ties with the university. We were joined by our Alma Mater Predrag Tapavicki (Head of Corporate Relations and Talent Management) and Tanja Woebs (Corporate Relations and Talent Programs Officer) on Saturday. We laid out the future cooperation between Jacobs University Bremen and our association to push our database forward in an effective way. Brilliant!
Given the extra professional legal and IT support we are certain that our database will be up and running for this year’s graduation LATEST. What does that entail for you? Automatic profile updating via LinkedIn login, hands-on access to a fast growing network of alumni working in all kinds of industries and more updates on your beloved home away from home.
Stay tuned for the most exciting year of the Jacobs Alumni Association!
And as usual, we welcome your feedback at<EMAIL_ADDRESS>or in comment section below.


We will first bring together information about our client, this will help us better analyze, identify and evaluate the problems, issues and circumstances of our clients. Assessment is used as the basis of our intervention and thus build solid foundation in the counseling relationship.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
At Interspect, we employ various methods of therapy best suited to each client. Because we value individual differences and celebrate uniqueness. We develop a non-threatening environment, making clients realize their full potential.
Music, Play and Therapy
Cognitive Behavior Therapy
Reality Method
Psycho dynamics
Reach us anytime


Using the CLI¶
The CityIq module includes two programs that can access a CityIQ system, ciq_events to download events and ciq_nodes to get locations and assets. The package also includes the ciq_config create and dump the config file.
ciq_events: Download events¶
The ciq_events downloads events from the CityIq system and caches the
events locally in CSV files, one file per day per event per asset. The ciq_events
program can both download the events and, with the -O
, write combined CSV files.
The -O
option will produce a directory of CSV file, with one file
for each asset, holding events over the entire date range.
ciq_events¶
Download events and load them into the cache.
The ciq_events program will request events from a CityIQ system, one day at a tim, and cache the results. It will request the events from assets, based on which assets have
eventTypes
with the requested events.Because the program will request events for all of the assets that report an event type and makes one request per day, it can generate very large numbers of requests and take many hours to run. For instance this request:
ciq_events -s 2020-01-01 -e 2020-06-01-01 PKIN PKOUT
generates about 800,000 requests and will take a day to run.
The cityiq module will not cache event requests for the current day or any day in the future.
usage: ciq_events [-h] [--version] [-v] [-vv] [-a ASSETS] [-c CONFIG]
[-w WORKERS] [-s START_TIME] [-f END_TIME]
[-e EVENTS [EVENTS ...]] [-o OUTPUT_NAME] [-O]
-
-h
,
--help
¶
show this help message and exit
-
--version
¶
show program’s version number and exit
-
-v
,
--verbose
¶
set loglevel to INFO
-
-vv
,
--very-verbose
¶
set loglevel to DEBUG
-
-a
<assets>
,
--assets
<assets>
¶ Path to a CSV file of assets, of the form produced by the ‘ciq_nodes’ program.
-
-c
<config>
,
--config
<config>
¶ Path to configuration file
-
-w
<workers>
,
--workers
<workers>
¶ Number of threads to use
-
-s
<start_time>
,
--start-time
<start_time>
¶ Starting time, in iso format. If not specified, use the configuration value ‘start_time’
-
-f
<end_time>
,
--end-time
<end_time>
¶ Ending time, in iso format. If not specified, end time is yesterday
-
-e
<events>
,
--events
<events>
¶ Names of events to scrape. One or more of: PKIN,PKOUT,PEDEVT,TFEVT,BICYCLE
-
-o
<output_name>
,
--output-name
<output_name>
¶ Output file, where events are written in CSV format
-
-O
,
--output
¶
Coalesce data into one CSV file per asset
ciq_nodes: Download assets and locations¶
ciq_nodes¶
Get assets and locations for a CityIQ system
usage: ciq_nodes [-h] [--version] [-v] [-vv] [-C CONFIG] [-c | -j | -l]
[-o [OUTPUT]] [-F]
[-M ASSET_MAP_CSV | --assets | --nodes | --cameras | --env_sensors | --em_sensors | --mics | --locations | --walkways | --traffic_lanes | --parking_zones]
-
-h
,
--help
¶
show this help message and exit
-
--version
¶
show program’s version number and exit
-
-v
,
--verbose
¶
set loglevel to INFO
-
-vv
,
--very-verbose
¶
set loglevel to DEBUG
-
-C
<config>
,
--config
<config>
¶ Path to configuration file
-
-c
,
--csv
¶
Write output as CSV.
-
-j
,
--json
¶
Write output as JSON.
-
-l
,
--jsonl
¶
Write output as JSON lines.
-
-o
<output>
,
--output
<output>
¶ Output file name. If not specified, write to stdout, except for -M, which is always writen to a file.
-
-F
,
--no-cache
¶
Don’t use cached metadata; force a request to the API
-
-M
<asset_map_csv>
,
--asset-map-csv
<asset_map_csv>
¶ Write a CSV file that maps assets to locations
-
--assets
¶
Print all assets as JSON lines
-
--nodes
¶
Print all nodes as JSON lines
-
--cameras
¶
Print all cameras as JSON lines
-
--env_sensors
¶
Print all env_sensors as JSON lines
-
--em_sensors
¶
Print all em_sensors as JSON lines
-
--mics
¶
Print all mics as JSON lines
-
--locations
¶
Print all locations as JSON lines
-
--walkways
¶
Print all walkways as JSON lines
-
--traffic_lanes
¶
Print all traffic_lanes as JSON lines
-
--parking_zones
¶
Print all parking_zones as JSON lines
ciq_config: Manage the configuration file¶
ciq_config¶
Create or print the cityiq
module configuration.
You can create a new configuration file with the
-w
option or print the configuration with-p
usage: ciq_config [-h] [--version] [-w] [-u] [-F] [-p]
-
-h
,
--help
¶
show this help message and exit
-
--version
¶
show program’s version number and exit
-
-w
,
--write
¶
Write a new default config file to the current directory, or with -u to the user’s directory
-
-u
,
--user
¶
With –write, write to the user’s home directory, ~/.cityiq.yaml
-
-F
,
--force
¶
With –write, force overwritting
-
-p
,
--print
¶
Print the config file


| DOSE: |
400 mg |
oral |
DXM |
(liquid) |
I am writing this to inform people who are intrested in trying or just reading about experiences that this can happen and that I'm still not sure why I am still feeling these effects.
Last saturday I was planning on drinking a bottle of cough syrup and toking because of the intence effects reported. My parents were planning on leaving that day so I thought I would have the house to myself. I was wrong, about 30 minutes after I drink the syrup my mom tells me that they are staying home today. So I get very nervous. I'm not going to go through what happen because all I really did was lay down and listen to music but I will tell the events after.
The next day I decide to smoke a few bowls because maybe the dxm was still in my system. So I smoke some and the only noticable effects were that I was stoned longer and had weird patterns when I close my eyes and trailers (ex. a light moving quickly and it has a trail for quite a while after) when I would look at something moving quickly. Anyway it is now Tuesday and I am still having visual trails and slight mindset occurances.
I do not know if these will be perminant or not but it is pretty scary to think that I may have these my whole life.  Also when I am looking at something and lose focus the object will start to jump around. As of now I have no clue why I am seeing these patterns/trails and I am just informing you that it could happen.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


General
Prototype
Settings
Jake Nueman
logout
Profile
Name
Jake Neuman
Role
Prototype manager
Welcome Jake
Change password


I am an independent consultant specializing in small business development, management and systems improvement.
I have a background in finance and am currently two-thirds of the way through a 6-month coding bootcamp, working toward a certificate in full-stack web development. I am passionate about creating strong, healthy, and collaborative communities that function at a high level and focus around a set of values, product offerings, and/or innovative programs.
Areas of professional experience include: Strategic Planning & Organizational Analysis ▪ Project Management & Process Development ▪ Collaborative Problem Solving ▪ Leadership, Coaching, Team Building & Training ▪ Conflict Resolution & Consensus Building ▪ Performance Management ▪ Business Culture Development ▪ Innovative Program Development ▪ Presentations / Public Speaking ▪ Budget Development
I have served on several school and community boards and I was a founding board member of Catamount Womenaid, a community-based organization dedicated to providing short-term grant funding for families in need.
I graduated from Magna Cum Laude from Hamilton College and hold an MBA with a concentration in Finance from the University at Albany. I am living in Stratham, NH with my two sons. My spare time is spent outdoors as much as possible!


# node-uuid
Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.
Features:
- Generate RFC4122 version 1 or version 4 UUIDs
- Runs in node.js and all browsers.
- Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) (‘broofa/node-uuid’).
- Cryptographically strong random # generation on supporting platforms
- 1.1K minified and gzip’ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )
- [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)
- Comes with a Command Line Interface for generating uuids on the command line
## Getting Started
Install it in your browser:
`html
<script src="uuid.js"></script>
`
Or in node.js:
`
npm install node-uuid
`
`javascript
var uuid = require('node-uuid');
`
Then create some ids ...
```javascript // Generate a v1 (time-based) id uuid.v1(); // -> ‘6c84fb90-12c4-11e1-840d-7b25c5ee775a’
// Generate a v4 (random) id uuid.v4(); // -> ‘110ec58a-a0f2-4ac4-8393-c866d813b8d1’ ```
## API
### uuid.v1([options [, buffer [, offset]]])
Generate and return a RFC4122 v1 (timestamp-based) UUID.
- options - (Object) Optional uuid state to apply. Properties may include:
- node - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.
- clockseq - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.
- msecs - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.
- nsecs - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if msecs is unspecified. Default: internal uuid counter is used, as per <IP_ADDRESS>.
- buffer - (Array | Buffer) Array or buffer where UUID bytes are to be written.
- offset - (Number) Starting index in buffer at which to begin writing.
Returns buffer, if specified, otherwise the string form of the UUID
Notes:
- The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)
Example: Generate string UUID with fully-specified options
node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], clockseq: 0x1234, msecs: new Date(‘2011-11-01’).getTime(), nsecs: 5678
}); // -> “710b962e-041c-11e1-9234-0123456789ab” ```
Example: In-place generation of two binary IDs
```javascript // Generate two ids in an array var arr = new Array(32); // -> [] uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]
// Optionally use uuid.unparse() to get stringify the ids uuid.unparse(buffer); // -> ‘02a2ce90-1432-11e1-8558-0b488e4fc115’ uuid.unparse(buffer, 16) // -> ‘02a31cb0-1432-11e1-8558-0b488e4fc115’ ```
### uuid.v4([options [, buffer [, offset]]])
Generate and return a RFC4122 v4 UUID.
- options - (Object) Optional uuid state to apply. Properties may include:
- random - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values
- rng - (Function) Random # generator to use. Set to one of the built-in generators - uuid.mathRNG (all platforms), uuid.nodeRNG (node.js only), uuid.whatwgRNG (WebKit only) - or a custom function that returns an array[16] of byte values.
- buffer - (Array | Buffer) Array or buffer where UUID bytes are to be written.
- offset - (Number) Starting index in buffer at which to begin writing.
Returns buffer, if specified, otherwise the string form of the UUID
Example: Generate string UUID with fully-specified options
- random: [
- 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36
]
}); // -> “109156be-c4fb-41ea-b1b4-efe1671c5836” ```
Example: Generate two IDs in a single buffer
`javascript
var buffer = new Array(32); // (or 'new Buffer' in node.js)
uuid.v4(null, buffer, 0);
uuid.v4(null, buffer, 16);
`
### uuid.parse(id[, buffer[, offset]]) ### uuid.unparse(buffer[, offset])
Parse and unparse UUIDs
- id - (String) UUID(-like) string
- buffer - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used
- offset - (Number) Starting index in buffer at which to begin writing. Default: 0
Example parsing and unparsing a UUID string
`javascript
var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>
var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'
`
### uuid.noConflict()
(Browsers only) Set uuid property back to it’s previous value.
Returns the node-uuid object.
Example:
`javascript
var myUuid = uuid.noConflict();
myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
`
## Deprecated APIs
Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.
### uuid([format [, buffer [, offset]]])
uuid() has become uuid.v4(), and the format argument is now implicit in the buffer argument. (i.e. if you specify a buffer, the format is assumed to be binary).
### uuid.BufferClass
The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.
## Command Line Interface
To use the executable, it’s probably best to install this library globally.
npm install -g node-uuid
Usage:
``` USAGE: uuid [version] [options]
options:
| --help | Display this message and exit |
version must be an RFC4122 version that is supported by this library, which is currently version 1 and version 4 (denoted by “v1” and “v4”, respectively). version defaults to version 4 when not supplied.
### Examples
`
> uuid
3a91f950-dec8-4688-ba14-5b7bbfc7a563
`
`
> uuid v1
9d0b43e0-7696-11e3-964b-250efa37a98e
`
`
> uuid v4
6790ac7c-24ac-4f98-8464-42f6d98a53ae
`
## Testing
In node.js
`
npm test
`
In Browser
`
open test/test.html
`
### Benchmarking
Requires node.js
`
npm install uuid uuid-js
node benchmark/benchmark.js
`
For a more complete discussion of node-uuid performance, please see the benchmark/README.md file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)
For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).
## Release notes
### 1.4.0
- Improved module context detection
- Removed public RNG functions
### 1.3.2
- Improve tests and handling of v1() options (Issue #24)
- Expose RNG option to allow for perf testing with different generators
### 1.3.0
- Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
- Support for node.js crypto API
- De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code


This project template is the basis of an PCB for the Hammond Manufacturing 1551P Enclosure Board Dimensions: 34mm x 34mm Case Dimensions: 40mm x 40mm x 20mm
(c) 2019 Kai Raphahn (c) 1997-2019 Hammond Mfg Co Inc


|
Name
|
Type
|
Description
|
| annotation | xsd:string |
Description for the virtual machine.
|
| cpuReservation | xsd:int |
Configured CPU reservation in MHz
|
| ftInfo | FaultToleranceConfigInfo |
Fault Tolerance settings for this virtual machine.
This property will be populated only for fault tolerance virtual
machines and will be left unset for all other virtual machines.
See FaultToleranceConfigInfo for a description.
Since vSphere API 4.0
|
| guestFullName | xsd:string |
Guest operating system name configured on the virtual machine.
|
| guestId | xsd:string |
Guest operating system identifier (short name).
|
| installBootRequired | xsd:boolean |
Whether the VM requires a reboot to finish installation. False if no vApp
meta-data is configured.
Since vSphere API 4.0
|
| instanceUuid | xsd:string |
VC-specific identifier of the virtual machine
Since vSphere API 4.0
|
| managedBy | ManagedByInfo |
Specifies that this VM is managed by a VC Extension. See the
managedBy property in the ConfigSpec
for more details.
Since vSphere API 5.0
|
| memoryReservation | xsd:int |
Configured Memory reservation in MB
|
| memorySizeMB | xsd:int |
Memory size of the virtual machine, in megabytes.
|
| name | xsd:string |
Name of the virtual machine.
|
| numCpu | xsd:int |
Number of processors in the virtual machine.
|
| numEthernetCards | xsd:int |
Number of virtual network adapters.
|
| numVirtualDisks | xsd:int |
Number of virtual disks attached to the virtual machine.
|
| numVmiopBackings | xsd:int |
Number of VMIOP backed devices attached to the virtual machine.
Since vSphere API 6.7
|
| product | VAppProductInfo |
Product information. References to properties in the URLs are expanded.
Since vSphere API 4.0
|
| template | xsd:boolean |
Flag to determine whether or not this virtual machine is a template.
|
| tpmPresent | xsd:boolean |
Is TPM present in a VM?
Since vSphere API 6.7
|
| uuid | xsd:string |
Virtual machine BIOS identification.
|
| vmPathName | xsd:string |
Path name to the configuration file for the virtual machine
|
|
Properties inherited from DynamicData |
| None |


abstract class ConnectorBase : Connector
(source)
Base implementation of Connector. Connector implementations should usually extend this class.
<init> |
Base implementation of Connector. Connector implementations should usually extend this class. ConnectorBase(connectorType: ConnectorType) |
connectorType |
The type of the connector. open val connectorType: ConnectorType |
toString |
Returns connectorType.toString method. open fun toString(): String |
AlexaConnector |
Connector for Amazon Alexa. class AlexaConnector : ConnectorBase |
GAConnector |
class GAConnector : ConnectorBase |
MessengerConnector |
Contains built-in checks to ensure that two MessageRequest for the same recipient are sent sequentially. class MessengerConnector : ConnectorBase |
SlackConnector |
class SlackConnector : ConnectorBase |
WebConnector |
class WebConnector : ConnectorBase |
WhatsAppConnector |
class WhatsAppConnector : ConnectorBase |


Home
Lower Peninsula
Upper Peninsula
Photos
Up North Photos
Waterfall
Waterfall
Waterfall
Sunset in Tawas
Alvar on Drummond Island
Beach near Tawas
Abandoned boat on Drummond Island
Beach near Elk Rapids
Boardwalk on a beach near Tawas
Mountain near Copper Harbor
River near Copper Harbor
Cliff near Munising
The Grand Hotel on Mackinac Island
Lake of the Clouds in the Porcupine Mountains
Mackinac Bridge at sunset
Pictured Rocks National Lakeshore near Munising
Forest near Elk Rapids
Pictured Rocks National Lakeshore near Munising
Mackinac Bridge
Sleeping Bear Dunes


Math::Geometry::Multidimensional - geometrical functions in n-dimensions
Version 0.01
This module has a bunch of functions that work in mulitiple dimensions, e.g. distance of a point from a line in n-dimensions.
use Math::Geometry::Multidimensional qw/distanceToLineN/;
# parametric:
my $distance = distanceToLineN($point, $gradients, $intersect);
# symmetric:
my $distance = distanceToLineP($point, $denominators, $constants);
We have a line with symmetric form:
(x+a)/m = (y+b)/n = (z+c)/p ...
@M is the list of denominators and @C is the list of constants.
For a point $P,
distanceToLineN($P,\@M,\@C)
returns the distance to the closest point on the line... in n-dimensions.
This is the distance along the y=z=x=... line from any point to the origin. First we find the closest point on y=z=x=... from our point, which happens to be the average of the coordinates, e.g. if the point is (10,8) then the closest point on y=z is 9,9. If the point is (9,8,4) then the closest point on z=y=x is (7,7,7). If the point is (2,3,4,7) then the closest point on z=y=x=w is (4,4,4,4). Why?
For P(u,v,w) and L: (x+a)/k = (y+b)/l = (z+c)/m = t
we know that x=kt-a ; y=lt-b ; z=my-c
so k(kt-a) + l(lt-b) + m(mt-c) = kkt-ka + llt-lb + mmt-mc = ku+lv+mw OR t(kk+ll+mm) = k(u+a)+l(v+b)+m(w+c) so t = (k(u+a)+l(v+b)+m(w+c)) / (kk+ll+mm)
BUT, if a=b=c=0 and k=l=m=1, then:
t = (x+y+z)/(3)
in general, t is the average of the coordinates.
then, x' = kt-a, and if k is 1 and a is 0, then x' is t.
P' is (t,t,t) so the distance to P' from the origin is sqrt(3 t^2) or sqrt( 3 * ((x+y+z)/3)^2) or sqrt( 3 * (x+y+z)^2 / 9 ) or sqrt( (x+y+z)^2 / 3) or (x+y+z)/sqrt(3) or SUM(coords)/sqrt(n)
Does that make sense?
Acts on columns rather than an individual point... give it column number, row number and list of columns.
my $arrayref = diagonalDistancesFromOriginN ($k,$n,@cols)
Here, we are basically rotating all the data so that the "y-axis" or whatever you want to call the left-most co-ordinate now lies diagonally through the data.
As above, we know that the point P' on the diagonal closest to our point P has the average coordinates of point P. And the distance PP' (x-x', y-y', z-z') is the root of the sum of the squares. So
so, if x' = t, which is (x+y+z)/3 ...
PP' = sqrt( (x - x/3 - y/3 - z/3)^2 + (y - x/3 - y/3 - z/3)^2 + (z + x/3 + y/3 + z/3)^2 )
= sqrt( x^2 (2/3) + y^2 (2/3) + z^2 (2/3) + 2xy + 2xz + 2yz )
this is not implemented yet.
Jimi Wills, <jimi at webu.co.uk>
Please report any bugs or feature requests to
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Math-Geometry-Multidimensional. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.bug-math-geometry-multidimensional at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc Math::Geometry::Multidimensional
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Math-Geometry-Multidimensional
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
http://cpanratings.perl.org/d/Math-Geometry-Multidimensional
Search CPAN
Copyright 2013 Jimi Wills.
This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at:
http://www.perlfoundation.org/artistic_license_2_0
Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license.
If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license.
This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder.
This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed.
Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.  UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Move the mouse pointer near the left edge of the document area and hold it steady for about 1.5 sec - the vertical ruler will appear.
Click-and-drag at the ruller - a horizontal line will appear and you can move it up or down to decrease or increase space between your equations.


About Polly
Polly is a high-level loop and data-locality optimizer and optimization infrastructure for LLVM. It uses an abstract mathematical representation based on integer polyhedra to analyze and optimize the memory access pattern of a program. We currently perform classical loop transformations, especially tiling and loop fusion to improve data-locality. Polly can also exploit OpenMP level parallelism, expose SIMDization opportunities. Work has also be done in the area of automatic GPU code generation.
For many users, however, it's not the existing optimizations in Polly that are of most interest, but the new analyses and optimizations enabled by the Polly infrastructure. At polyhedral.info you can get an idea of what has already been done and what is possible in the context of polyhedral compilation.
News
| 2014 | |
June |
Polly can be built without GPL licensed softwareAfter Sebastian Pop's and David Peixotto's (both Qualcomm) recent commit to isl, isl's latest development version can be built with imath instead of GMP. With both CLooG and gmp having become optional, the last obilgatory dependency to GPL licensed software has been removed. Now Polly only depends on isl (and the included imath), which are both MIT licensed. |
April |
Polly Phone Call - 23AprilWe had a polly phone call about delinearizing array accesses (II)Meeting notes are available online.Polly Phone Call - 17th AprilWe had a polly phone call about delinearizing array accesses Meeting notes are available online.Polly Phone Call - 10th AprilWe had a polly phone call. Meeting notes are available online.Polly Phone Call - 4th AprilWe had a polly phone call. Meeting notes are available online. |
March |
Static link Polly into toolsPolly can now be configured with 'cmake -D LINK_POLLY_INTO_TOOLS:Bool=ON' to be statically linked in the tools (opt, bugpoint, and clang.) This makes it easier to use polly without having to load a shared library, and it also reduces the complexity of compiling Polly on Windows. |
February |
Polly presentation at FOSDEM 2014Polly was presented at the FOSDEM LLVM developer's meeting.New LLVM test-suite buildbotsThe set of Polly buildbots has been extended. We now have 16 new blades that track correctness and performance when compiling the LLVM test-suite. For now five of them are used to provide fine granularity reports (almost per-commit) for 'clang -O3' (no polly). We also have six machines that track different configurations of polly. |
January |
islplot releasedislplot is a library that generates illustrations of integer sets and maps. It relies on isl to model the integer sets and uses the islpy Python bindings to access them. Plotting is performed with matplotlib. The following Examples show its use. |
| 2013 | |
November |
Loop optimization BoF at upcoming LLVM conferenceAt the upcoming LLVM conference there will be a loop optimization BoF discussing Polly and other high level loop optimizers. |
October |
Automatic code coverage and static analysis testsSylvestre Ledru set up automatic tests for code coverage and static analysis which run at least once a day and which include results for Polly.Move to CLooG 0.18.1 and isl 0.12.1With the move to an isl 0.12 version Polly can be compiled without the need to link directly to GMP (if isl is used for code generation). Currently isl is still internally using GMP, but private patches exist to also remove this dependency. Without the use of GMP, a GPL free version of Polly is possible. |
| 2012 | |
December |
New publication in the PPL JournalWe published a journal version of the Polly paper named Polly - Performing polyhedral optimizations on a low-level intermediate representation in the Parallel Processing Letters 2012. |
September |
Experimental support for the new isl code generatorThe code generator can be parameterized on a fine-grained level. It gives direct control for example over unrolling, the amount of control overhead and the code size. It can also be used to create loops to handle border conditions or to perform full-partial tile separation.We also relicensed isl under the MIT license. This means, with the exception of GMP (LGPL), there is no other (L)GPL licensed software used in Polly. The use of GMP is limited to a well defined interface. Replacing it with a BSD licensed replacement is a tractable engineering project we would be very interested in. For more information about isl see the isl manual. |
July |
Polly can now be directly linked to the Pluto optimizer. We were
already able to perform Pluto-like optimizations with Polly, as a similar
algorithm was added to isl half a year ago. However, being able to directly
compare with the original implementation will not only bring in competition in
the optimizer field. It will also allow new experiments with a cutting edge
research tool. |
February |
Polly is an official LLVM project, reachable at http://polly.llvm.org |
January |
Improved support for the isl scheduling optimizer Polly can now automatically optimize all polybench 2.0 kernels without the help of an external optimizer. The compile time is reasonable and we can show notable speedups for various kernels. |
2011 | |
November |
Talk at the LLVM Developer Meeting 2011 New SCEV parser(Allows parameters in array subscript and max/signextend) |
October |
Polly can use the isl schedule optimizer |
August |
|
July |
Polly builder as part of the LLVM Buildbots |
June |
Tobias is founded for three years by a Google Europe Fellowship in Efficient Computing. |
May |
Tobias' diploma thesis and Raghesh's master thesis. See our list of publications. |
April |
Polly moves to the LLVM infrastructure (svn, bugtracker) |
March |
Presentation at CGO/IMPACT Polly can compile polybench 2.0 with vectorization and OpenMP code generation |
Februar |
pollycc - a script to automatically compile with polyhedral optimizations |
Januar |
Basic OpenMP support, Alias analysis integration, Pluto/POCC support |
2010 | |
Dezember |
Basic vectorization support |
November |
Talk at the LLVM Developer Meeting |
October |
Dependency analysis Finished Phase 1 - Get something working Support scalar dependences and sequential SCoPs |
August |
RegionInfo pass committed to LLVM llvm-test suite compiles |
July |
Code generation works for normal SCoPs. |
May |
The CLooG AST can be parsed. |
April |
SCoPs can automatically be detected. |
March |
The RegionInfo framework is almost completed. |
February |
Translate a simple loop to Polly-IR and regenerate a loop structure with CLooG works. ISL and CLooG are integrated. |
January |
The RegionInfo pass is finished. |
2009 | |
End of the year |
Work on the infrastructure started. |


4 references to ChangeServiceConfig2W
Microsoft.PowerShell.Commands.Management (4)
commands\management\Service.cs (4)
1831
bool status = NativeMethods.
ChangeServiceConfig2W
(
1855
status = NativeMethods.
ChangeServiceConfig2W
(
2241
bool succeeded = NativeMethods.
ChangeServiceConfig2W
(
2269
succeeded = NativeMethods.
ChangeServiceConfig2W
(


--- layout: post title: Stuff I hope you never have to know about Java, Vol. 1, No. 1 published: 1 category: - Programming ---
import java.lang.reflect.Modifier;
public interface X {
interface Y { /* ... */ }
}
interactive> Modifier.isPublic(X.Y.class.getModifiers())
true
Y is implicitly public, apparently -- just like methods and fields on X would be.


Check your answers
Your details (claimant) |
||
|---|---|---|
| Full name | Jan Clark | |
| Correspondence address |
15 King Drive London W1 3HR |
Change |
Their details (defendant) |
||
|---|---|---|
| Full name |
Mary Richards |
|
| Full name |
Mary Richards |
|
| Business name |
Richards Interior Design LLP |
|
| Company name |
Smith LTD |
|
| Contact person |
Jane Smith |
|
| Organisation name |
Jones Bros |
|
| Contact person |
Jane Smith |
|
| Full name |
Mary Richards |
|
| Address for bailiff to visit |
32 Atney Road London SW15 2PS |
Change |
| Phone number |<PHONE_NUMBER>2 | Change |
Enforcement |
||
|---|---|---|
| Has the defendant paid any of the judgment amount? | Yes | Change |
| Amount already paid | £200 | |
| Has the defendant paid any of the judgment amount? | No | Change |
| Balance outstanding on judgment |
£1,643.20 |
|
| Total amount to enforce |
£1,720.20 (including fee) |
Change |
Information to assist bailiff's visit |
||
|---|---|---|
| Access to the address | {{data['additional-information']}} | Change |
| Does the defendant have anything valuable, e.g. car? | No | Change |
| Describe Mary Richards | {{data['description-defendant']}} | Change |
| Risks from the defendant | Yes | Change |
| Risks at the address | Yes | Change |
Statement of truth
The information on this page forms your application to set aside judgment and response. You can see it on the response form after you submit.
When you’re satisfied that your answers are accurate, you should tick to “sign” this statement of truth on the form.


---
layout: post
title: Nikon D300 and 200-400 Survives Bear Attack
tags:
- Articles
- film
- General Photography
- Nikon D300
- Nikon FE
status: publish
type: post
published: true
meta:
aktt_notify_twitter: "yes"
_edit_last: "2"
_edit_lock: "1315521255"
_thumbnail_id: "3410"
ghostpool_post_template: Default
ghostpool_link: Full Size Image/Video
ghostpool_post_image: http://photo.rwboyer.com/wp-content/uploads/2011/09/2011-011-11-ico.jpg
ghostpool_post_faded_image: http://photo.rwboyer.com/wp-content/uploads/2011/09/2011-011-11-ico.jpg
ghostpool_circle_image: http://photo.rwboyer.com/wp-content/uploads/2011/09/2011-011-11-ico.jpg
dsq_thread_id: "408779543"
aktt_tweeted: "1"
_wp_old_slug: ""
---
And this is why I don't go to Canada.
Actually my buddy Les Picker had his camera rig attacked by a bear when he was out in the wild photographing landscapes, nature, and other subjects that I try to stay as far away from as possible. Here is the full scoop. Neat stuff - not for me. On the other hand he does makes some very very nice images on a regular basis and has just put out a short eBook about some of his landscape images if you are into that kind of stuff. Check it out here.
Here is an image of Les that I snapped a few weeks ago while we were out playing around with his large format camera in a stream.
[image title="2011-011-11" size="full" id="3411" align="none" linkto="viewer" ]
Shot with a Nikon FE, 18mm Nikkor AIS, and crappy consumer grade Fuji 200 for any one that cares. Just as a note - there were no bear during this outing, just poison ivy and some shady looking "gangstas" with pants that didn't fit correctly.
RB
Oh... almost forgot he got back yesterday or the day before and now he is facing a FRIGGIN FLOOD as he lives right on on of the rivers that is causing all kinds of catastrophes and evacuations in the area...


ConnectorIdHandlers(vararg handlers: ConnectorIdHandler)
Annotation used to annotate StoryHandlerDefinitionBase implementation, in order to provide ConnectorStoryHandler for each connector id. Used only by connector implementation.


{% extends "foreign/foreign_base.html" %} {% block pagetopics %} {{ results.client }} {% endblock %} {% load humanize %} {% block main_content %}
The total adds all payments from this client reported to the Department of Justice during the 2015 calendar year. This may include payments form some 2014 activities.
The 2016 total adds all payments from this client reported to the Department of Justice during the 2016 calendar year. This may include payments form some 2015 activities. This total will be updated as documents are processed.
Description: {{ results.description }}
{% endif %} {% if results.client_type %}Client Type: {{ results.client_type }}
{% endif %}{% for reg in results.active_reg %} {% endfor %}{% endif %} {% if results.terminated_reg %}
{% for reg in results.terminated_reg %} {% endfor %}{% endif %}


|
LUFA Library
111009
|
USB mode and feature support definitions. More...
Macros | |
| #define | USB_SERIES_2_AVR |
| #define | USB_SERIES_4_AVR |
| #define | USB_SERIES_6_AVR |
| #define | USB_SERIES_7_AVR |
| #define | USB_SERIES_UC3A0_AVR |
| #define | USB_SERIES_UC3A1_AVR |
| #define | USB_SERIES_UC3A3_AVR |
| #define | USB_SERIES_UC3B0_AVR |
| #define | USB_SERIES_UC3B1_AVR |
| #define | USB_CAN_BE_DEVICE |
| #define | USB_CAN_BE_HOST |
| #define | USB_CAN_BE_BOTH |
This file defines macros indicating the type of USB controller the library is being compiled for, and its capabilities. These macros may then be referenced in the user application to selectively enable or disable code sections depending on if they are defined or not.
After the inclusion of the master USB driver header, one or more of the following tokens may be defined, to allow the user code to conditionally enable or disable code based on the USB controller family and allowable USB modes. These tokens may be tested against to eliminate code relating to a USB mode which is not enabled for the given compilation.
| #define USB_CAN_BE_BOTH |
Indicates that the target microcontroller and compilation settings allow for the target to be configured in either USB Device or Host mode when defined.
| #define USB_CAN_BE_DEVICE |
Indicates that the target microcontroller and compilation settings allow for the target to be configured in USB Device mode when defined.
| #define USB_CAN_BE_HOST |
Indicates that the target microcontroller and compilation settings allow for the target to be configured in USB Host mode when defined.
| #define USB_SERIES_2_AVR |
Indicates that the target AVR microcontroller belongs to the Series 2 AVR8 USB controller (i.e. AT90USBxxx2 or ATMEGAxxU2) when defined.
| #define USB_SERIES_4_AVR |
Indicates that the target AVR microcontroller belongs to the Series 4 AVR8 USB controller (i.e. ATMEGAxxU4) when defined.
| #define USB_SERIES_6_AVR |
Indicates that the target AVR microcontroller belongs to the Series 6 AVR8 USB controller (i.e. AT90USBxxx6) when defined.
| #define USB_SERIES_7_AVR |
Indicates that the target AVR microcontroller belongs to the Series 7 AVR8 USB controller (i.e. AT90USBxxx7) when defined.
| #define USB_SERIES_UC3A0_AVR |
Indicates that the target AVR microcontroller belongs to the AVR32 UC3A0 Series USB controller (i.e. AT32UC3A0*) when defined.
| #define USB_SERIES_UC3A1_AVR |
Indicates that the target AVR microcontroller belongs to the AVR32 UC3A1 Series USB controller (i.e. AT32UC3A1*) when defined.
| #define USB_SERIES_UC3A3_AVR |
Indicates that the target AVR microcontroller belongs to the AVR32 UC3A3 Series USB controller (i.e. AT32UC3A3*) when defined.
| #define USB_SERIES_UC3B0_AVR |
Indicates that the target AVR microcontroller belongs to the AVR32 UC3B0 Series USB controller (i.e. AT32UC3B0*) when defined.
| #define USB_SERIES_UC3B1_AVR |
Indicates that the target AVR microcontroller belongs to the AVR32 UC3B1 Series USB controller (i.e. AT32UC3B1*) when defined.