Анализ фрейма данных, содержащего временной ряд, с помощью stargazer

У меня есть набор данных панели из 10 набл. и 3 переменные. (Кол-во обс. 30 = 10 строк (= страны) * 2 столбца (= параметры миграции) * 1 столбец за соответствующий год. Мой фрейм данных состоит, так сказать, из 3-х годовых фреймов данных.

Как я могу применить stargazer на весь период времени, учитывая, что это набор данных панели (так что максимальное число N = 10)? То есть R должен начинаться заново после каждого 11-го ряда. Хочу получить красивую таблицу для наглядной статистики

Набор данных за первые три года:

structure(list(Population = c(21759420, 8696916, 1946351, 14689726, 
8212264, 491723, 18907008, 4345386, 11133861, 657229, 22549547, 
8944706, 1979882, 15141099, 8489031, 496963, 19432541, 4404230, 
11502786, 673252, 23369131, 9199259, 2014866, 15605217, 8766930, 
502384, 19970495, 4448525, 11887202, 689692), Distance..km. = c(7243L, 
4290L, 9500L, 3789L, 6452L, 2211L, 4667L, 5036L, 4047L, 9140L, 
7243L, 4290L, 9500L, 3789L, 6452L, 2211L, 4667L, 5036L, 4047L, 
9140L, 7243L, 4290L, 9500L, 3789L, 6452L, 2211L, 4667L, 5036L, 
4047L, 9140L), year = c(2008, 2008, 2008, 2008, 2008, 2008, 2008, 
2008, 2008, 2008, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 
2009, 2009, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 
2010)), .Names = c("Population", "Distance..km.", "year"), row.names = c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 50L, 51L, 52L, 53L, 54L, 
55L, 56L, 57L, 58L, 59L, 99L, 100L, 101L, 102L, 103L, 104L, 105L, 
106L, 107L, 108L), class = "data.frame")

Я по-прежнему получаю описательную статистику от N = 30, но должно быть N = 10, так как я ищу описательную статистику за весь трехлетний период, и каждый годовой фрейм данных должен считаться изолированным для этого. Надеюсь, я понятно выразил проблему


person aluuusch    schedule 10.11.2017    source источник
comment
Вы имеете в виду панельные данные под временными рядами? временной ряд является одномерным, тогда как панельные данные многомерны и могут иметь более одного объекта. Кроме того, stargazer - это пакет для печати хорошо отформатированных таблиц, а не инструмент анализа, поэтому ваш вопрос о R должен начинаться с анализа после каждой 49-й строки. не имеет никакого смысла.   -  person acylam    schedule 10.11.2017
comment
Что именно вы здесь пытаетесь сделать? stargazer просто создает красивые таблицы и на самом деле не делает анализ. вы должны предоставить какой-то минимальный воспроизводимый пример с данными, которые может использоваться для тестирования и четкого описания желаемого результата.   -  person MrFlick    schedule 10.11.2017
comment
В вашем примере данных есть только одна строка ... предоставьте данные панели в виде копии и вставки вывода dput(my_data) в свой вопрос.   -  person acylam    schedule 10.11.2017
comment
Пожалуйста, прочтите мой комментарий еще раз и укажите версию dput(my_data) вместо той, что у вас здесь. Также прочтите ссылку MrFlick на как предоставить минимально воспроизводимый пример   -  person acylam    schedule 10.11.2017


Ответы (1)


Вы можете использовать split + lapply из базы R:

library(stargazer)

lapply(split(df, df$year), stargazer, type = "text")

or by:

by(df, df$year, stargazer, type = 'text')

Результат:

===============================================================
Statistic     N      Mean        St. Dev.      Min      Max    
---------------------------------------------------------------
Population    10 9,083,988.000 7,541,970.000 491,723 21,759,420
Distance..km. 10   5,637.500     2,385.941    2,211    9,500   
year          10   2,008.000       0.000      2,008    2,008   
---------------------------------------------------------------

===============================================================
Statistic     N      Mean        St. Dev.      Min      Max    
---------------------------------------------------------------
Population    10 9,361,404.000 7,798,880.000 496,963 22,549,547
Distance..km. 10   5,637.500     2,385.941    2,211    9,500   
year          10   2,009.000       0.000      2,009    2,009   
---------------------------------------------------------------

===============================================================
Statistic     N      Mean        St. Dev.      Min      Max    
---------------------------------------------------------------
Population    10 9,645,370.000 8,065,676.000 502,384 23,369,131
Distance..km. 10   5,637.500     2,385.941    2,211    9,500   
year          10   2,010.000       0.000      2,010    2,010   
---------------------------------------------------------------
df$year: 2008
[1] ""                                                               
[2] "==============================================================="
[3] "Statistic     N      Mean        St. Dev.      Min      Max    "
[4] "---------------------------------------------------------------"
[5] "Population    10 9,083,988.000 7,541,970.000 491,723 21,759,420"
[6] "Distance..km. 10   5,637.500     2,385.941    2,211    9,500   "
[7] "year          10   2,008.000       0.000      2,008    2,008   "
[8] "---------------------------------------------------------------"
-------------------------------------------------------------------------- 
df$year: 2009
[1] ""                                                               
[2] "==============================================================="
[3] "Statistic     N      Mean        St. Dev.      Min      Max    "
[4] "---------------------------------------------------------------"
[5] "Population    10 9,361,404.000 7,798,880.000 496,963 22,549,547"
[6] "Distance..km. 10   5,637.500     2,385.941    2,211    9,500   "
[7] "year          10   2,009.000       0.000      2,009    2,009   "
[8] "---------------------------------------------------------------"
-------------------------------------------------------------------------- 
df$year: 2010
[1] ""                                                               
[2] "==============================================================="
[3] "Statistic     N      Mean        St. Dev.      Min      Max    "
[4] "---------------------------------------------------------------"
[5] "Population    10 9,645,370.000 8,065,676.000 502,384 23,369,131"
[6] "Distance..km. 10   5,637.500     2,385.941    2,211    9,500   "
[7] "year          10   2,010.000       0.000      2,010    2,010   "
[8] "---------------------------------------------------------------"

Недостатком этих двух методов является то, что они распечатывают таблицы дважды (один раз из вывода stargazer, другой из _8 _ / _ 9_). Чтобы обойти это, вы можете использовать walk форму purrr для вызова stargazer только для его побочных эффектов:

library(dplyr)
library(purrr)

df %>%
  split(.$year) %>%
  walk(~ stargazer(., type = "text"))

Результат:

===============================================================
Statistic     N      Mean        St. Dev.      Min      Max    
---------------------------------------------------------------
Population    10 9,083,988.000 7,541,970.000 491,723 21,759,420
Distance..km. 10   5,637.500     2,385.941    2,211    9,500   
year          10   2,008.000       0.000      2,008    2,008   
---------------------------------------------------------------

===============================================================
Statistic     N      Mean        St. Dev.      Min      Max    
---------------------------------------------------------------
Population    10 9,361,404.000 7,798,880.000 496,963 22,549,547
Distance..km. 10   5,637.500     2,385.941    2,211    9,500   
year          10   2,009.000       0.000      2,009    2,009   
---------------------------------------------------------------

===============================================================
Statistic     N      Mean        St. Dev.      Min      Max    
---------------------------------------------------------------
Population    10 9,645,370.000 8,065,676.000 502,384 23,369,131
Distance..km. 10   5,637.500     2,385.941    2,211    9,500   
year          10   2,010.000       0.000      2,010    2,010   
---------------------------------------------------------------

Примечание.

Все вышеперечисленные методы работают для вывода латекса (type = "latex"). Я установил type = "text" только в демонстрационных целях.

person acylam    schedule 13.11.2017
comment
Большое спасибо, это работает! Мне нужно решить еще две вещи. 1. Когда я получаю результат из своего браузера в виде htm-файла, он показывает мне только последнюю таблицу (я не могу использовать Latex) 2. Теперь у меня есть таблицы для каждого года. Как я могу свести эти таблицы в одну и таким образом получить статистику за 2008-2010 годы? - person aluuusch; 13.11.2017
comment
@aluuusch Не уверен насчет №1, так как не могу воспроизвести вашу проблему. Для №2 просто напишите: stargazer(df, type = 'text')? - person acylam; 13.11.2017