figure_1_S3.Rmd 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. ---
  2. title: "Spacek et al., 2021, Figure 1-Supplement 3"
  3. output: pdf_document
  4. ---
  5. ```{r setup, include=FALSE}
  6. knitr::opts_chunk$set(echo = TRUE)
  7. library(arm)
  8. library(lmerTest)
  9. library(tidyverse)
  10. source('get_data.R')
  11. ```
  12. ```{r read_data, include=FALSE}
  13. tib = get_data("../csv/fig1S33S1.csv")
  14. ```
  15. # Figure 1-Supplement 3a
  16. ## Firing rate FMIs separated by cell types
  17. ```{r tidy_for_1_S3, include = FALSE}
  18. # Remove observations with NAs
  19. tb <- tib %>% filter(sbc != "Na")
  20. # Recode suppressed-by-contrast boolean into numeric, binary predictor
  21. tb$sbc = ifelse(tb$sbc == TRUE, 1, 0)
  22. ```
  23. ```{r fit_model_1_S3a}
  24. # Random intercept for series
  25. lmer.1_S3a = lmer(mvi_meanrate ~ sbc + (1 | sid),
  26. data = tb %>% drop_na(mvi_meanrate))
  27. display(lmer.1_S3a)
  28. anova(lmer.1_S3a)
  29. ```
  30. ```{r get_predicted_average_change_1_S3a, include=F}
  31. m_sbc0 = fixef(lmer.1_S3a)[1]
  32. diffMeans = fixef(lmer.1_S3a)[2]
  33. m_sbc1 = fixef(lmer.1_S3a)[1] + diffMeans
  34. ```
  35. ```{r store_coefficients_1_S3a, include=FALSE}
  36. pred_means_df = data.frame("non_sbc" = m_sbc0, "sbc" = m_sbc1, row.names = "")
  37. write_csv(pred_means_df, "_stats/figure_1_S3a_pred_means.csv")
  38. ```
  39. FMI sbc: `r format(m_sbc1, digits=3, nsmall=3)` \newline
  40. FMI non-sbc: `r format(m_sbc0, digits=3, nsmall=3)` \newline
  41. n = `r nrow(tb %>% drop_na(mvi_meanrate) %>% count(uid))` neurons from `r nrow(tb %>% drop_na(mvi_meanrate) %>% count(mid))` mice
  42. \newpage
  43. # Figure 1-Supplement 3b
  44. ## Relation between firing rate FMI and recording depth
  45. ```{r fit_model_1_S3b}
  46. # Random intercept for series
  47. lmer.1_S3b = lmer(mvi_meanrate ~ depth + (1 | sid),
  48. data = tib %>% drop_na(mvi_meanrate, depth))
  49. display(lmer.1_S3b)
  50. anova(lmer.1_S3b)
  51. ```
  52. ```{r store_coefficients, include=FALSE}
  53. coef_df = data.frame("intercept" = fixef(lmer.1_S3b)[1], "slope" = fixef(lmer.1_S3b)[2], row.names = "")
  54. write_csv(coef_df, "_stats/figure_1_S3b_coefs.csv")
  55. ```
  56. Slope of `r format(fixef(lmer.1_S3b)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3b)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  57. n = `r nrow(tib %>% drop_na(mvi_meanrate, depth) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanrate, depth) %>% count(mid))` mice
  58. \newpage
  59. # Figure 1-Supplement 3c
  60. ## Relation between firing rate FMI and direction selectivity
  61. ``` {r, fit_model_1_S3c}
  62. # Random intercept for series
  63. lmer.1_S3c = lmer(mvi_meanrate ~ dsi + (1 | sid),
  64. data = tib %>% drop_na(mvi_meanrate, dsi))
  65. display(lmer.1_S3c)
  66. anova(lmer.1_S3c)
  67. ```
  68. ```{r store_coefficients_1_S3c, include=FALSE}
  69. coef_df = data.frame("intercept" = fixef(lmer.1_S3c)[1], "slope" = fixef(lmer.1_S3c)[2], row.names = "")
  70. write_csv(coef_df, "_stats/figure_1_S3c_coefs.csv")
  71. ```
  72. Slope of `r format(fixef(lmer.1_S3c)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3c)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  73. n = `r nrow(tib %>% drop_na(mvi_meanrate, dsi) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanrate, dsi) %>% count(mid))` mice
  74. \newpage
  75. # Figure 1-Supplement 3d
  76. ## Relation between firing rate FMI and receptive field location
  77. ``` {r, fit_model_1_S3d}
  78. # Random intercept for series nested within mice
  79. lmer.1_S3d = lmer(mvi_meanrate ~ rfdist + (1 | mid/sid),
  80. data = tib %>% drop_na(mvi_meanrate, rfdist))
  81. display(lmer.1_S3d)
  82. anova(lmer.1_S3d)
  83. ```
  84. ```{r store_coefficients_1_S3d, include=FALSE}
  85. # store results in file
  86. coef_df = data.frame("intercept" = fixef(lmer.1_S3d)[1], "slope" = fixef(lmer.1_S3d)[2], row.names = "")
  87. write_csv(coef_df, "_stats/figure_1_S3d_coefs.csv")
  88. ```
  89. Slope of `r format(fixef(lmer.1_S3d)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3d)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  90. n = `r nrow(tib %>% drop_na(mvi_meanrate, rfdist) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanrate, rfdist) %>% count(mid))` mice
  91. \newpage
  92. # Figure 1-Supplement 3e
  93. ## Relation between firing rate FMI and firing rate
  94. ``` {r, fit_model_1_S3e}
  95. # Random intercept for series nested within mice
  96. lmer.1_S3e = lmer(mvi_meanrate ~ mvi_meanrate_raw + (1 | mid/sid),
  97. data = tib %>% drop_na(mvi_meanrate, mvi_meanrate_raw))
  98. display(lmer.1_S3e)
  99. anova(lmer.1_S3e)
  100. ```
  101. ```{r store_coefficients_1_S3e, include=FALSE}
  102. coef_df = data.frame("intercept" = fixef(lmer.1_S3e)[1], "slope" = fixef(lmer.1_S3e)[2], row.names = "")
  103. write_csv(coef_df, "_stats/figure_1_S3e_coefs.csv")
  104. ```
  105. Slope of `r format(fixef(lmer.1_S3e)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3e)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  106. n = `r nrow(tib %>% drop_na(mvi_meanrate, mvi_meanrate_raw) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanrate, mvi_meanrate_raw) %>% count(mid))` mice
  107. \newpage
  108. # Figure 1-Supplement 3f
  109. ## Burst ratio FMIs separated by cell types
  110. ```{r fit_model_1_S3f}
  111. # Random intercept for series
  112. lmer.1_S3f = lmer(mvi_meanburstratio ~ sbc + (1 | sid),
  113. data = tb %>% drop_na(mvi_meanburstratio))
  114. display(lmer.1_S3f)
  115. anova(lmer.1_S3f)
  116. ```
  117. ```{r get_predicted_average_effect_1_S3f, include=F}
  118. m_sbc0 = fixef(lmer.1_S3f)[1]
  119. diffMeans = fixef(lmer.1_S3f)[2]
  120. m_sbc1 = fixef(lmer.1_S3f)[1] + diffMeans
  121. ```
  122. ```{r store_coefficients_1_S3f, include=FALSE}
  123. pred_means_df = data.frame("non_sbc" = m_sbc0, "sbc" = m_sbc1, row.names = "")
  124. write_csv(pred_means_df, "_stats/figure_1_S3f_pred_means.csv")
  125. ```
  126. FMI sbc: `r format(m_sbc1, digits=3, nsmall=3)` \newline
  127. FMI non-sbc `r format(m_sbc0, digits=3, nsmall=3)` \newline
  128. n = `r nrow(tb %>% drop_na(mvi_meanburstratio) %>% count(uid))` neurons from `r nrow(tb %>% drop_na(mvi_meanburstratio) %>% count(mid))` mice
  129. \newpage
  130. # Figure 1-Supplement 3g
  131. ## Relation between burst ratio FMI and recording depth
  132. ```{r fit_model_1_S3g}
  133. # Random intercept for series nested within mice
  134. lmer.1_S3g = lmer(mvi_meanburstratio ~ depth + (1 | mid/sid),
  135. data = tib %>% drop_na(mvi_meanburstratio, depth))
  136. display(lmer.1_S3g)
  137. anova(lmer.1_S3g)
  138. ```
  139. ```{r store_coefficients_1_S3g, include=FALSE}
  140. coef_df = data.frame("intercept" = fixef(lmer.1_S3g)[1], "slope" = fixef(lmer.1_S3g)[2], row.names = "")
  141. write_csv(coef_df, "_stats/figure_1_S3g_coefs.csv")
  142. ```
  143. Slope of `r format(fixef(lmer.1_S3g)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3g)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  144. n = `r nrow(tib %>% drop_na(mvi_meanburstratio, depth) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanburstratio, depth) %>% count(mid))` mice
  145. \newpage
  146. # Figure 1-Supplement 3h
  147. ## Relation between burst ratio FMI and direction selectivity
  148. ``` {r, fit_model_1_S3h}
  149. # Random intercept for series nested within mice
  150. lmer.1_S3h = lmer(mvi_meanburstratio ~ dsi + (1 | mid/sid),
  151. data = tib %>% drop_na(mvi_meanburstratio, dsi))
  152. display(lmer.1_S3h)
  153. anova(lmer.1_S3h)
  154. ```
  155. ```{r store_coefficients_1_S3h, include=FALSE}
  156. coef_df = data.frame("intercept" = fixef(lmer.1_S3h)[1], "slope" = fixef(lmer.1_S3h)[2], row.names = "")
  157. write_csv(coef_df, "_stats/figure_1_S3h_coefs.csv")
  158. ```
  159. Slope of `r format(fixef(lmer.1_S3h)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3h)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  160. n = `r nrow(tib %>% drop_na(mvi_meanburstratio, dsi) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanburstratio, dsi) %>% count(mid))` mice
  161. \newpage
  162. # Figure 1-Supplement 3i
  163. ## Relation between burst ratio FMI and receptive field location
  164. ``` {r, fit_model_1_S3i}
  165. # Random intercept for series nested within mice
  166. lmer.1_S3i = lmer(mvi_meanburstratio ~ rfdist + (1 | mid/sid),
  167. data = tib %>% drop_na(mvi_meanburstratio, rfdist))
  168. display(lmer.1_S3i)
  169. anova(lmer.1_S3i)
  170. ```
  171. ```{r store_coefficients_1_S3i, include=FALSE}
  172. coef_df = data.frame("intercept" = fixef(lmer.1_S3i)[1], "slope" = fixef(lmer.1_S3i)[2], row.names = "")
  173. write_csv(coef_df, "_stats/figure_1_S3i_coefs.csv")
  174. ```
  175. Slope of `r format(fixef(lmer.1_S3i)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3i)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  176. n = `r nrow(tib %>% drop_na(mvi_meanburstratio, rfdist) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanburstratio, rfdist) %>% count(mid))` mice
  177. \newpage
  178. # Figure 1-Supplement 3j
  179. ## Relation between burst ratio FMI and burst ratio
  180. ``` {r, fit_model_1_S3j}
  181. # Random intercept for series
  182. lmer.1_S3j = lmer(mvi_meanburstratio ~ mvi_meanburstratio_raw + (1 | sid),
  183. data = tib %>% drop_na(mvi_meanburstratio, mvi_meanburstratio_raw))
  184. display(lmer.1_S3j)
  185. anova(lmer.1_S3j)
  186. ```
  187. ```{r store_coefficients_1_S3j, include=FALSE}
  188. coef_df = data.frame("intercept" = fixef(lmer.1_S3j)[1], "slope" = fixef(lmer.1_S3j)[2], row.names = "")
  189. write_csv(coef_df, "_stats/figure_1_S3j_coefs.csv")
  190. ```
  191. Slope of `r format(fixef(lmer.1_S3j)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.1_S3j)[2], digits=2, nsmall=2)` (95\%-confidence interval) \newline
  192. n = `r nrow(tib %>% drop_na(mvi_meanburstratio, mvi_meanburstratio_raw) %>% count(uid))` neurons from `r nrow(tib %>% drop_na(mvi_meanburstratio, mvi_meanburstratio_raw) %>% count(mid))` mice