我无法在R中运行回归。我想使用线性模型确定一个变量对另一个变量的敏感度,在这种情况下,利润市场集中度(HHI)(mkt.profit)。尝试在STAN中运行模拟时收到以下错误:
Error in FUN(X[[i]], ...) : Stan does not support NA (in x) in data
failed to preprocess the data; sampling not done
关于数据的一点背景......这是许多公司多年(1963-2014)的大量财务数据。变量HHI,称为Hirschmann Herfindahl指数,衡量市场集中度,因此衡量行业内的竞争(SIC代码)。 Mkt.profit 是通过汇总给定行业内所有公司的收入来计算的。因此,数据按年份和行业进行组织。目标是确定 HHI 对行业收入的影响有多强( mkt.profit )......以下是我遇到问题的代码:
> D <- subset(data.cc,
select=c("gvkey","fyear","conm","at","revt","seq","xopr","sic"))
> names(D) <- c("gvkey", "year", "company", "assets", "sales", "equity",
"expenses", "market")
> D[,mkt.sales:=sum(sales), by = .(market, year)]
> D[,mkt.share:=sales/mkt.sales]
> D[,HHI:=sum(mkt.share^2), by = .(market, year)]
> D[,mkt.profit:=sum(sales-expenses), by = .(market, year)]
> stan.code="
+ data {
+ int<lower=0> N;
+ vector[N] x;
+ vector[N] y;
+ }
+ parameters {
+ real beta0;
+ real beta1;
+ real <lower=0> sigma;
+ }
+ model {
+ beta1 ~ gamma(0,0);
+ y ~ normal(beta0 + beta1*x, sigma);
+ }"
> DD<-list(N=length(mkt.profit),y=mkt.profit,x=HHI)
> STANout <-stan(model_code=stan.code,data=DD,iter=10000,chains=3)
..此时我收到了本文开头显示的错误。我之前尝试使用伽玛,因为我认为这种关系是积极的,也就是说,更高的HHI对应于更高的利润水平。但是我不确定要把什么作为论据...所以,如果有人也可以解释,我会很感激。
答案 0 :(得分:0)
当计算变量mkt.profit和HHI时,生成NA值。这是因为数据中存在负值。删除这些负值可以解决问题。
D <- D[D$sales>0,]
D <- D[D$expenses>0,]
D <- D[D$assets>0,]