Таблица техрегов для воздействий пространственной модели запаздывания

Я использую spdep запустить пространственную регрессию с использованием модели запаздывания Дурбина. Этот тип модели возвращает прямые, косвенные и суммарные эффекты для каждого коэффициента регрессии и их уровня значимости.

Есть R библиотека как texreg это хорошо организовывает вывод модели запаздывания Дурбина с информацией о прямых, косвенных и полных эффектах?

Воспроизводимый пример:

library(spdep)

example(columbus)
listw <- nb2listw(col.gal.nb)

# spatial regression - Durbin Model
  mobj <- lagsarlm(CRIME ~ INC + HOVAL, columbus, listw, type="mixed")
  summary(mobj)

# Calculate direct and indirect impacts
  W <- as(listw, "CsparseMatrix")
  trMatc <- trW(W, type="mult")
  trMC <- trW(W, type="MC")
  imp <- impacts(mobj, tr=trMC, R=100) 
  sums <- summary(imp, zstats=T)

# Return Effects
  data.frame(sums$res)

# Return p-values
  data.frame(sums$pzmat)

1 ответ

Я не уверен, существует ли существующая функция для создания красивой таблицы для этого типа объекта модели, но (с некоторыми усилиями) вы можете свернуть свою собственную.

Ниже rmarkdown документ с вашим кодом плюс три дополнительных блока кода. Первый объединяет данные коэффициента и p-значения. Следующие два генерируют два разных варианта latex столы.

я использовал sums$res а также sums$pzmat для табличных значений, tidyverse функции для объединения оценок коэффициентов и p-значений и редактирования имен столбцов, а также kable а также kableExtra пакеты для производства латекса.

rmarkdown документ

---
title: "Coefficient Table for Durbin Lag Model"
author: "eipi10"
date: "8/30/2017"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message=FALSE, warning=FALSE)

library(spdep)
library(texreg)

example(columbus)
listw <- nb2listw(col.gal.nb)
```

```{r}
# spatial regression - Durbin Model
  mobj <- lagsarlm(CRIME ~ INC + HOVAL, columbus, listw, type="mixed")
  #summary(mobj)

# Calculate direct and indirect impacts
  W <- as(listw, "CsparseMatrix")
  trMatc <- trW(W, type="mult")
  trMC <- trW(W, type="MC")
  imp <- impacts(mobj, tr=trMC, R=100) 
  sums <- summary(imp, zstats=T)

# Return Effects
#  data.frame(sums$res)

# Return p-values
#  data.frame(sums$pzmat)
```

```{r extractTableData}
library(knitr)
library(kableExtra)
library(dplyr)
library(tidyr)
library(stringr)

# Extract coefficients and p-values
tab = bind_rows(sums$res) %>% t %>% as.data.frame %>% 
  setNames(., names(sums$res[[1]])) %>%
  mutate(Coef_Type=str_to_title(rownames(.)),
         Value_Type="Estimate") %>% 
  bind_rows(sums$pzmat %>% t %>% as.data.frame %>% 
              mutate(Coef_Type=rownames(.),
                     Value_Type="p-value")) %>% 
  gather(key, value, INC, HOVAL) 
```

```{r table1}
# Reshape table into desired output format
tab1 = tab %>% 
  unite(coef, key, Value_Type) %>% 
  spread(coef, value) %>% 
  mutate_if(is.numeric, round, 3)

# Change column names to what we want to see in the output table
names(tab1) = c("", gsub(".*_(.*)", "\\1", names(tab1)[-1]))

# Output latex table, including extra header row to mark coefficient names
kable(tab1, booktabs=TRUE, format="latex") %>% 
  add_header_above(setNames(c("", 2, 2), c("", sort(rownames(sums$pzmat))))) %>% 
  kable_styling(position="center")
```

\vspace{1cm}

```{r table2}
# Reshape table into desired output format
tab2 = tab %>% 
  unite(coef, Coef_Type, Value_Type) %>% 
  spread(coef, value) %>% 
  mutate_if(is.numeric, round, 3)

# Change column names to what we want to see in the output table
names(tab2) = c("Coefficient", gsub(".*_(.*)", "\\1", names(tab2)[-1]))

# Output latex table, including extra header row to mark coefficient names
kable(tab2, booktabs=TRUE, format="latex") %>% 
  add_header_above(setNames(c(" ", rep(2, 3)), c("", colnames(sums$pzmat)))) %>% 
  kable_styling(position="center")
```

PDF выходной документ

введите описание изображения здесь

Другие вопросы по тегам