我以前在这里寻求过帮助很棒,我希望能再次得到一些帮助.
我估计一个相当大的混合效应模型,其中一个随机效应有超过150个不同的水平.这将使标准的毛毛虫情节变得非常难以理解.
如果可能的话,我想得到一个只是随机效应水平的毛虫情节,因为缺乏更好的术语,"显着".那就是:我想要一个毛虫图,其中随机截距或变化系数的随机斜率具有不包括零的"置信区间"(我知道它不完全是什么).
从标准的sleepstudy数据中考虑这个标准模型lme4.
library(lme4)
fit <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
ggCaterpillar(ranef(fit,condVar=TRUE), QQ=FALSE, likeDotplot=TRUE, reorder=FALSE)[["Subject"]]
Run Code Online (Sandbox Code Playgroud)
我会得到这个毛毛虫情节.

我使用的毛虫图来自此代码.注意我倾向于使用较不保守的界限(即1.645*se而不是1.96*se).
基本上,我想要一个毛虫图,其中只包括308,309,310,330,331,335,337,349,350,352和370的水平,因为这些水平有截距或斜率,其间隔不包括零.我问,因为我的150多个不同级别的毛虫情节有点难以理解,我认为这可能是一个值得解决的问题.
随后是可重现的代码.我真的很感激任何帮助.
# https://stackoverflow.com/questions/34120578/how-can-i-sort-random-effects-by-value-of-the-random-effect-not-the-intercept
ggCaterpillar <- function(re, QQ=TRUE, likeDotplot=TRUE, reorder=TRUE) {
require(ggplot2)
f <- function(x) {
pv <- attr(x, "postVar")
cols <- 1:(dim(pv)[1])
se <- unlist(lapply(cols, function(i) sqrt(pv[i, i, ])))
if (reorder) {
ord <- unlist(lapply(x, order)) + rep((0:(ncol(x) - 1)) * nrow(x), each=nrow(x))
pDf <- data.frame(y=unlist(x)[ord],
ci=1.645*se[ord],
nQQ=rep(qnorm(ppoints(nrow(x))), ncol(x)),
ID=factor(rep(rownames(x), …Run Code Online (Sandbox Code Playgroud) 我怀疑这是一个有多个解决方案的简单问题,但我仍然是R中的一个新手,并且详尽的搜索并没有产生与我想要做的事情相符的答案.
我试图通过缺少更好的术语来创建数据框中变量的"移动总和".这些将是3年和5年的总和,滞后一年.因此,1986年观察的5年总和将是1981年,1982年,1983年,1984年和1985年所有先前观察的总和.以下是我想要做的一个例子,其中和变量是x观察年前五年的总和.
country year x x5yrsum
A 1980 9 NA
A 1981 3 NA
A 1982 5 NA
A 1983 6 NA
A 1984 9 NA
A 1985 7 32
A 1986 9 30
A 1987 4 36
.....................
B 1990 0 NA
B 1991 4 NA
B 1992 2 NA
B 1993 6 NA
B 1994 3 NA
B 1995 7 15
B 1996 0 22
Run Code Online (Sandbox Code Playgroud)
这是不平衡的面板数据.我怀疑ddply是合适的,但我不知道它的确切编码.
任何输入将不胜感激.
所有,
我有一个问题,我担心这个问题可能太行了,但在其他地方寻找它会让我误入歧途.我可能没有使用正确的搜索字词.
我在R中有一个面板数据框(country-year),在给定变量上有一些缺失值.我试图用另一个数据框中另一个向量的值来估算它们.这是我想要做的一个例子.
假设Data是感兴趣的数据帧,其在我试图从另一个施主数据帧推断的给定矢量上具有缺失值.看起来像这样.
country year x
70 1920 9.234
70 1921 9.234
70 1922 9.234
70 1923 9.234
70 1924 9.234
80 1920 NA
80 1921 NA
80 1922 NA
80 1923 NA
80 1924 NA
90 1920 7.562
90 1921 7.562
90 1922 7.562
90 1923 7.562
90 1924 7.562
Run Code Online (Sandbox Code Playgroud)
这将是Donor框架,其值为country == 80
country x
70 9.234
80 1.523
90 7.562
Run Code Online (Sandbox Code Playgroud)
我试图找到一种无缝的方法来自动化这个,超出了命令Data$x[Data$country == 80] <- 1.523.有很多国家失踪x.
值得澄清的是,简单merge是最简单的,但不一定适合我正在尝试做的事情.一些国家将 …
我希望你能帮助我创建一个变量,它将使用R编程语言计算自另一个变量的最后一个事件以来的"运行" .我正在使用的数据集是国家年度面板数据,并且是不平衡的.
我将在下面说明我想做什么.COUNTRY和YEAR分别是横截面标识和时间单位.COUNTRYYEAR是两个变量的串联,为每个独特的观察创建一个索引.
让EVENT成为二元指示符,标记是否存在感兴趣的事件(EVENT = 1)(EVENT = 0).设COUNTZERO为离散计数变量,标记自EVENT变量上次观察到的1以来的时间(此处为:年).设COUNTONE是另一个离散计数变量,标记EVENT变量的连续计数的运行计数.我想要一个看起来像这样的数据框:
COUNTRYYEAR COUNTRY YEAR EVENT COUNTZERO COUNTONE
10011950 1 1950 1 0 1
10011951 1 1951 1 0 2
10011952 1 1952 0 1 0
10011953 1 1953 0 2 0
10011954 1 1954 0 3 0
10011955 1 1955 0 4 0
10011956 1 1956 0 5 0
....
10021950 2 1950 1 0 1
10021951 2 1951 0 1 0
10021952 2 1952 1 0 1
10021953 2 1953 …Run Code Online (Sandbox Code Playgroud) 所有,
我工作的公司给了我这些数据.简而言之,它是TSCS数据,公司作为横截面单位,时间单位为财政年度.每家公司都有各种账户.我有兴趣为特定公司创建每个帐户的总支出.
我可以提供下面数据的简单说明.让我们firm感兴趣的截单元.每个firm都有公司花钱的各种账户.有些账户对所有公司都很常见,有些则是独一无二的.并非每个人firm都有在一年中花在账户上的钱.事实上,有些人直到数据之后才有资格获得账户,而其他人则退出(因此,面板数据可能被认为是不平衡的).因此,我提供的数据中的NA可以被视为0,尽管它有点问题.有些公司在某一年有资格但没有在账户中收款.由于辍学或迟到,其他公司不合格.
数据看起来像这样,它是以宽格式提供给我的.这是一个简化版本的插图.在此图示中,firm=B在1990 firm=C财政年度没有资格获得帐户,并在1992财年退出.
firm account FY1990 FY1991 FY1992
A Account 1 500 900 1000
A Account 2 30 40 40
A Account 3 NA 60 20
A Account 4 NA 35 NA
B Account 1 NA 340 60
B Account 2 NA 500 800
B Account 3 NA 800 NA
B Account 4 NA 60 1000
C Account 1 1000 400 NA
C Account 5 500 60 NA
C …Run Code Online (Sandbox Code Playgroud) 我想知道你是否可以帮助我设计一种毫不费力的方法来编码我正在使用的这个国家/地区年度事件数据.
在下面的示例中,每一行都对应一个正在进行的事件(我最终将折叠成一个更广泛的面板数据集,这就是为什么它现在看起来很简陋).因此,例如,国家29在1920年开始发生事件,并在1921年继续(并结束).国家23在1921年开始了这一事件,持续到1923年.国家35开始了一个事件,发生在1921年,仅在1921年,等等.
country year
29 1920
29 1921
23 1921
23 1922
23 1923
35 1921
64 1926
135 1928
135 1929
135 1930
135 1931
135 1932
135 1933
135 1934
120 1930
70 1932
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建"开始"和"持续"变量.此示例数据框中的"正在进行的"变量很容易.基本上:Data$ongoing <- 1
我更感兴趣的是创建"起始"变量.如果它标志着给定国家的事件发生,它将被编码为1.基本上,我想创建一个看起来像这样的变量,给出这个示例数据.
country year onset
29 1920 1
29 1921 0
23 1921 1
23 1922 0
23 1923 0
35 1921 1
64 1926 1
135 1928 1
135 1929 0
135 1930 0
135 1931 0
135 1932 0 …Run Code Online (Sandbox Code Playgroud)