我在R(时间和横截面)中有一个面板数据集,并且想要计算由两个维度聚类的标准误差,因为我的残差是双向相关的.谷歌搜索我发现http://thetarzan.wordpress.com/2011/06/11/clustered-standard-errors-in-r/提供了执行此操作的功能.它似乎有点特别,所以我想知道是否有一个已经过测试的包并且这样做了吗?
我知道sandwichHAC标准错误,但它没有做双聚类(即沿着两个维度).
这是一个非常简单的问题,但我无法找到明确的答案,所以我想我会问它.我使用该plm包来处理面板数据.我试图使用该lag函数及时滞后变量FORWARD(默认是从前一个句点检索值,我想要NEXT中的值).我发现了一些旧的文章/问题(大约2009年),这表明这可以k=-1作为一个论点使用.但是,当我尝试这个时,我收到一个错误.
示例代码:
library(plm)
df<-as.data.frame(matrix(c(1,1,1,2,2,3,20101231,20111231,20121231,20111231,20121231,20121231,50,60,70,120,130,210),nrow=6,ncol=3))
names(df)<-c("individual","date","data")
df$date<-as.Date(as.character(df$date),format="%Y%m%d")
df.plm<-pdata.frame(df,index=c("individual","date"))
Run Code Online (Sandbox Code Playgroud)
滞后:
lag(df.plm$data,0)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31
50 60 70 120 130 210
lag(df.plm$data,1)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31
NA 50 60 NA 120 NA
lag(df.plm$data,-1)
##returns
Error in rep(1, ak) : invalid 'times' argument
Run Code Online (Sandbox Code Playgroud)
我还读到了plm.data已经取代pdata.frame某些应用程序的内容plm.但是,plm.data似乎根本没有使用该lag功能:
df.plm<-plm.data(df,indexes=c("individual","date"))
lag(df.plm$data,1)
##returns
[1] 50 60 70 120 130 210
attr(,"tsp")
[1] 0 5 1
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何帮助.如果有人有另外一个包裹用于滞后的建议,我会全力以赴.然而,我确实喜欢plm …
我试图预测包含NAs的数据的拟合值,并基于生成的模型plm.这是一些示例代码:
require(plm)
test.data <- data.frame(id=c(1,1,2,2,3), time=c(1,2,1,2,1),
y=c(1,3,5,10,8), x=c(1, NA, 3,4,5))
model <- plm(y ~ x, data=test.data, index=c("id", "time"),
model="pooling", na.action=na.exclude)
yhat <- predict(model, test.data, na.action=na.pass)
test.data$yhat <- yhat
Run Code Online (Sandbox Code Playgroud)
当我运行最后一行时,我收到一条错误,指出替换有4行而数据有5行.
我不知道如何获得预测返回长度为5的向量...
如果不是运行plm我运行lm(如下面的行),我得到预期的结果.
model <- lm(y ~ x, data=test.data, na.action=na.exclude)
Run Code Online (Sandbox Code Playgroud) 我在设置面板数据模型时遇到问题.
以下是一些示例数据:
library(plm)
id <- c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2)
year <- c(1999,1999,1999,1999,2000,2000,2000,2000,1999,1999,1999,1999,2000,2000,2000,2000)
qtr <- c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)
y <- rnorm(16, mean=0, sd=1)
x <- rnorm(16, mean=0, sd=1)
data <- data.frame(id=id,year=year,qtr=qtr,y_q=paste(year,qtr,sep="_"),y=y,x=x)
Run Code Online (Sandbox Code Playgroud)
我运行以下回归,使用'id'作为单个索引,'year'作为时间索引:
reg1 <- plm(y ~ x, data=data,index=c("id", "year"), model="within",effect="time")
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到以下错误:
重复的couple(time-id)pdim.default中的错误(index [[1]],index [[2]]):
所以为了解决这个问题,我使用了'y_q'的组合变量:
reg1 <- plm(y ~ x, data=data,index=c("id", "y_q"), model="within",effect="time")
Run Code Online (Sandbox Code Playgroud)
但这是我的问题 - 我只想要一年的固定效果,而不是一年四季.
还有另一种方法可以解决早期问题,而不是制作关系指数'y_q'吗?
提前感谢您的帮助!
我正在使用R来运行蒙特卡罗模拟,研究面板数据估计器的性能.因为我将进行大量的试验,所以我需要从我的代码中获得至少不错的性能.
Rprof在我的模拟的10次试验中使用表明,很大一部分时间花在了呼叫上summary.plm.前几行Rprofsummary提供如下:
$by.total
total.time total.pct self.time self.pct
"trial" 54.48 100.0 0.00 0.0
"coefs" 53.90 98.9 0.06 0.1
"model.matrix" 36.72 67.4 0.10 0.2
"model.matrix.pFormula" 35.98 66.0 0.06 0.1
"summary" 33.82 62.1 0.00 0.0
"summary.plm" 33.80 62.0 0.08 0.1
"r.squared" 29.00 53.2 0.02 0.0
"FUN" 24.84 45.6 7.52 13.8
Run Code Online (Sandbox Code Playgroud)
我正在调用summary我的代码,因为我需要得到系数估计的标准误差以及系数本身(我可以从plm对象得到).我的电话看起来像
regression <- plm(g ~ y0 + Xit, data=panel_data, model=model, index=c("country","period"))
coefficients_estimated <- summary(regression)$coefficients[,"Estimate"]
ses_estimated <- summary(regression)$coefficients[,"Std. Error"]
Run Code Online (Sandbox Code Playgroud)
我有一种唠叨的感觉,这是一个巨大的浪费cpu时间,但我不知道R如何做的事情,以避免调用摘要.我很欣赏有关幕后发生的事情的任何信息,或者某些方法可以减少这种情况.
我有一个不平衡的实验,在三个地点(L,M,H)我们测量met四种不同植被类型(a,b,c,d)中的参数().所有三个地点都存在所有植被类型.植被类型在L和M处重复4次,在H处重复8次.
因此,简单的anova和TukeyHSD将无法正常工作.包装Agricolae(HSD.test)和DTK(DTK.test)只适用于单向设计,然后有多种... mcp功能中的Tukey测试是否计算Tukey-Kramer对比,或者它是否给出了常规的Tukey对比?我认为首先是这种情况,因为该软件包适用于测试不平衡设计的多重比较,但我不确定,因为两种方法产生的p值几乎相同.那么什么测试才合适?
此外,是否有更合适的方法为不平衡数据集做这样的双向anova?
library(multcomp)
(met <- c(rnorm(16,6,2),rnorm(16,5,2),rnorm(32,4,2)))
(site <- c(rep("L", 16), rep("M", 16), rep("H", 32)))
(vtype <- c(rep(letters[1:4], 16), rep(letters[1:4], 16), rep(letters[1:4], 32)))
dat <- data.frame(site, vtype, met)
# using aov and TukeyHSD
aov.000 <- aov(met ~ site * vtype, data=dat)
summary(aov.000)
TukeyHSD(aov.000)
# using Anova, and multcomp
lm.000 <- lm(met ~ site * vtype, data=dat)
summary(lm.000)
library(car)
Anova.000 <- Anova(lm.000, data=dat)
dat$int <- with(dat, interaction(site, vtype, sep = "x"))
lm.000 <- …Run Code Online (Sandbox Code Playgroud) 我有一个df(一个pdata.frame对象):
head(df) :
Company Year Kapitalinkomster Bank.o.kassa Obligationer Lån Aktier Placeringar.andra.ftg Fodringar Reala.tillgångar
5-1948 5 1948 4.009780 0.8677505 40.12268 54.80897 1.4630271422 0.049855191 0.633959879 1.581139e+00
6-1948 6 1948 3.221688 0.9311173 71.16401 26.39038 0.4678139417 0.000000000 0.437931676 4.931845e-01
12-1948 12 1948 3.136025 0.7628832 46.10452 44.85120 4.1966304368 0.003740003 1.020092197 2.683785e+00
19-1948 19 1948 1.862666 0.1865510 16.82441 31.67412 0.7308074302 46.245334945 3.459693951 6.213455e-01
20-1948 20 1948 3.724516 1.7719721 70.98456 27.18631 0.0004305687 0.056565968 0.000165769 4.305687e-07
21-1948 21 1948 11.288744 1.1572048 64.21109 33.42962 0.2890377378 0.000000000 0.912175552 …Run Code Online (Sandbox Code Playgroud) 我无法使用基于此帖子的 R和指导来聚类标准错误.cl函数返回错误:
Error in tapply(x, cluster1, sum) : arguments must have same length
Run Code Online (Sandbox Code Playgroud)
在阅读之后,tapply我仍然不确定为什么我的群集参数是错误的长度,以及导致此错误的原因.
这是我正在使用的数据集的链接.
https://www.dropbox.com/s/y2od7um9pp4vn0s/Ec%201820%20-%20DD%20Data%20with%20Controls.csv
这是R代码:
# read in data
charter<-read.csv(file.choose())
View(charter)
colnames(charter)
# standardize NAEP scores
charter$naep.standardized <- (charter$naep - mean(charter$naep, na.rm=T))/sd(charter$naep, na.rm=T)
# change NAs in year.passed column to 2014
charter$year.passed[is.na(charter$year.passed)]<-2014
# Add column with indicator for in treatment (passed legislation)
charter$treatment<-ifelse(charter$year.passed<=charter$year,1,0)
# fit model
charter.model<-lm(naep ~ factor(year) + factor(state) + treatment, data = charter)
summary(charter.model)
# account for clustered standard errors by state …Run Code Online (Sandbox Code Playgroud) 我有以下数据框:
Date,Year,Austria,Germany,...
1969-12-31,1969,96.743,95.768,...
1970-01-30,1970,95.515,95.091,...
1970-02-27,1970,95.075,95.235,...
Run Code Online (Sandbox Code Playgroud)
最后,我想将此数据框与另一个看起来像这样的数据框合并:
Year,Country,Exp,...
1969,Austria,1,...
1970,Austria,0,...
1969,Germany,0,...
1970,Germany,1,...
Run Code Online (Sandbox Code Playgroud)
我看到它的方式,我将不得不将第一个数据框更改为以下格式:
Date,Year,Country,Exp,…
1969-12-31,1969,Austria,96.743,...
1970-01-30,1970,Austria,95.515,...
1970-02-27,1970,Austria,95.075,...
1969-12-31,1969,Germany,95.768,...
1970-01-30,1970,Germany,95.091,...
1970-02-27,1970,Germany,95.235,...
Run Code Online (Sandbox Code Playgroud)
然后,我可以使用合并功能并使用年份和国家合并它们(一对多).
我试图按照上面的建议转换数据框.但是,我能想到的唯一方法是使用一些复杂的"for"循环.如果有人采用更简单的方法,我们将不胜感激.此外,如果您认为合并这两个数据帧可以以更容易的方式完成,这也很好.
我需要从tabsetR Markdown 文档(使用 Shiny 运行时)中选择一个选项卡。
我遵循How to select a specific tabPanel in Shiny 中的示例,并尝试将其调整为 R Markdown。我id在标签集/标签中添加了s,并在updateTabsetPanel()通话中使用了它们,但似乎不起作用。(我在检查结果仪表板中的各个 HTML 元素时使用了弹出的名称。)
如何tabset通过单击按钮从 中选择“Chart3”选项卡?
编辑:我需要能够以编程方式(例如通过observeEvent()调用)选择特定的选项卡,而不仅仅是在启动时。
---
title: "Tabset Column"
output: flexdashboard::flex_dashboard
runtime: shiny
---
Column
-------------------------------------
### Chart 1
```{r}
actionButton("switch_tab", "Switch tab", width=200)
```
Column {#mytabset .tabset}
-------------------------------------
### Chart 2
```{r}
```
### Chart 3 {#mytab}
```{r}
observeEvent(input$switch_tab, {
updateTabsetPanel(session, inputId = "section-mytabset", selected = "#section-mytab")
})
```
Run Code Online (Sandbox Code Playgroud) r ×10
plm ×6
regression ×3
panel-data ×2
dataframe ×1
lag ×1
lsmeans ×1
merge ×1
na ×1
optimization ×1
posthoc ×1
predict ×1
profiling ×1
r-markdown ×1
shiny ×1
statistics ×1
summary ×1