我想让一位同事复制一个第一差异线性面板数据模型,我用Stata和plmR(或其他一些包)中的包来估计.
在Stata中,xtreg没有第一个差异选项,所以我运行:
reg D.(y x), nocons cluster(ID)
Run Code Online (Sandbox Code Playgroud)
在R中,我正在做:
plm(formula = y ~ -1 + x, data = data, model = "fd", index = c("ID","Period"))
Run Code Online (Sandbox Code Playgroud)
系数匹配,但R中的标准误差大于Stata中的标准误差.我查看了plm帮助和pdf文档,但我必须遗漏一些东西.
一些与Stata 11斗争的同事正在寻求我的帮助,试图让他们辛勤工作的自动化.他们主要在Stata中使用3个命令:
tsset(设置时间序列分析)
如: tsset year_column, yearly
varsoc(获取VAR的滞后顺序选择统计信息)
如: varsoc column_a column_b
vec(矢量误差修正模型)
如: vec column_a column_b, trend(con) lags(1) noetable
有没有人知道我可以通过python使用任何科学库来实现同样的功能?
Stata做得很好的一件事就是它构造新变量的方式(见下面的例子).在R中如何做到这一点?
foreach i in A B C D {
forval n=1990/2000 {
local m = 'n'-1
# create new columns from existing ones on-the-fly
generate pop'i''n' = pop'i''m' * (1 + trend'n')
}
}
Run Code Online (Sandbox Code Playgroud) 我想在R中进行瓦哈卡分解.我相信,它用于例如劳动经济学来区分解释的方差与不明原因的方差.我无法在R中找到合适的解决方案,而且我不愿意自己创建一个(我可能会搞砸它).
无论如何,这里简要解释了这个过程:
http://en.wikipedia.org/wiki/Ronald_Oaxaca
Stata很幸运,有一个相当不错的包装,但Stata对我来说并不容易.
www.stata.com/meeting/5german/SINNING_stata_presentation.pdf
请注意:我还在R-help上发布了一条消息,但它没有得到回复.我希望也可以在这个列表上发帖.
提前谢谢,Rasmus
编辑:我已经做了以下功能,这似乎产生了错误的答案(urgh).我试图按照上面的Stata链接但它没有按照我的希望:)
oaxaca <- function (fsex,frace1,frace2) {
## First we make regresions
data1 <- subset(l2,sex==fsex & race==frace1)
data2 <- subset(l2,sex==fsex & race==frace2)
mindata1 <- subset(cbind(grade,exp,I(exp^2)),sex==fsex & race==frace1)
mindata2 <- subset(cbind(grade,exp,I(exp^2)),sex==fsex & race==frace2)
reg1 <- lm(log(wage)~grade+exp+I(exp^2), data=data1)
reg2 <- lm(log(wage)~grade+exp+I(exp^2), data=data2)
## DECOMPOSITION
################
## Variables
gap <- mean(log(wage[race==frace1 & sex==fsex]))-mean(log(wage[race==frace2 & sex==fsex]))
mean1 <- colMeans(mindata1)
mean2 <- colMeans(mindata2)
beta1 <- summary(reg1)$coefficients[,1]
beta2 <- summary(reg2)$coefficients[,1]
beta1incep <- summary(reg1)$coefficients[1,1]
beta2incep <- summary(reg2)$coefficients[1,1]
beta1coef <- summary(reg1)$coefficients[c(2,3,4),1]
beta2coef …Run Code Online (Sandbox Code Playgroud) 如果在某处有一个简单的答案,我会提前道歉.这似乎是那样的事情,但我似乎无法通过搜索SO或谷歌搜索在帮助文件中找到它.
我现在正在使用几个GB的数据集.它足以适应我有权访问的其中一个集群节点的内存,但需要花费相当多的时间来加载.对于使用此数据的许多调试/编程活动,我不需要加载整个文件,只需要在前几千个观察点上有一个数据集来测试代码.我当然可以只读取整个文件和子集,但我想知道是否有办法告诉read.dta()只读前N行?这当然要快得多.
我也可以使用像.csv这样的正确格式,然后使用read.csv()'s nrows参数,但是我会丢失Stata数据集中的因子标签(并且必须从其他人的代码中重新创建相当多的GB数据.这个项目.因此首选.dta文件的直接解决方案.
我正在使用Stata,而我正试图计算公司竞争对手在市场上的平均价格.我的数据看起来像:
Market Firm Price
----------------------
1 1 100
1 2 150
1 3 125
2 1 50
2 2 100
2 3 75
3 1 100
3 2 200
3 3 200
Run Code Online (Sandbox Code Playgroud)
而我正试图计算每家公司竞争对手的平均价格,所以我想创造一个新的领域,即市场中其他公司的平均价值.它看起来像:
Market Firm Price AvRivalPrice
------------------------------------
1 1 100 137.2
1 2 150 112.5
1 3 125 125
2 1 50 87.5
2 2 100 62.5
2 3 75 75
3 1 100 200
3 2 200 150
3 3 200 150
Run Code Online (Sandbox Code Playgroud)
要按组进行平均,我可以使用egen命令:
egen AvPrice = mean(price), by(Market) …Run Code Online (Sandbox Code Playgroud) 我想keep在Stata 12中的do-file中运行该命令:
keep a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 c1 c2 c3 c4
Run Code Online (Sandbox Code Playgroud)
我想要的是做以下事情:
keep {a1 a2 a3 a4 a5
b1 b2 b3 b4 b5
c1 c2 c3 c4}
Run Code Online (Sandbox Code Playgroud)
我知道{}括号不能解决问题,但我正在寻找执行它的命令.使用#delimiter ;也不起作用.
我想这样做,因为变量亚组有自己之间的关系(我打算上面的信号通过a,b和c),我想有一个清晰的在我的代码.我永久地添加和删除变量.请注意,我不想使用该drop命令(在这种情况下,解决方案是微不足道的).
作为R用户,我现在正在使用这个资源学习Stata ,并且对这个merge命令感到困惑.
在R中,我不必担心错误地合并数据,因为它无论如何都会合并所有内容.如果公共列包含任何重复项,我不需要担心,因为Y数据帧将合并到dataframe中的每个重复行X.(使用all=FALSE中merge)
但是对于Stata,我需要X在继续合并之前删除重复的行.
是否在Stata中假设,为了merge继续,主表中的公共列必须是唯一的?
Stata有一个非常好的命令,egen这使得计算观察组的统计数据变得容易.例如,可以计算每个组的最大值,平均值和最小值,并将它们作为变量添加到详细数据集中.Stata命令是一行代码:
by group : egen max = max(x)
Run Code Online (Sandbox Code Playgroud)
我从来没有summarise在dplyr包中找到相同的命令,这使得计算每个组的统计数据变得容易,但是我必须运行一个循环来将统计数据与每个观察结果相关联:
library("dplyr")
N <- 1000
tf <- data.frame(group = sample(1:100, size = N, replace = TRUE), x = rnorm(N))
table(tf$group)
mtf <- summarise(group_by(tbl_df(tf), group), max = max(x))
tf$max <- NA
for (i in 1:nrow(mtf)) {
tf$max[tf$group == mtf$group[i]] <- mtf$max[i]
}
Run Code Online (Sandbox Code Playgroud)
有没有人有更好的解决方案?