尝试在R的反垄断包中打印结果时出错

时间:2016-06-13 23:07:54

标签: r simulation economics

我使用R&C的软件包Antitrust计算需求自身和交叉价格弹性,并打印公司合并的汇总结果。使用的模型是由Epstein and Rubinfeld (2007)出版的PC-AIDS(按比例校准的几乎理想的需求系统)。这是一个品牌级别的模拟,公司被允许在标准模拟中拥有多个品牌,正如我在excel中看到的那样。我希望在两家公司的合并中充分印刷结果,其中一家拥有多个品牌(合并前)。

但是,我的问题似乎是编程/理解代码输出的问题。我将发布一个与我所做的类似的代码:

require(antitrust)

ownerPre<-c("a","a","b","c")

ownerPost<-c("a","a","a","c")

shares<-c(0.30,0.20,0.20,0.30)

knownelast<- -1.5
mktelast  <- -1.0

results<-pcaids(shares,knownelast, mktelast, ownerPre=ownerPre,ownerPost=ownerPost,
               labels=ownerPre,knownElastIndex=1)
resume<-summary(results)

resume

results<-summary(results)行之后,我在输出窗口中出现以下错误:

Error in `row.names<-.data.frame`(`*tmp*`, value = value) : 
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique value when setting 'row.names': ‘* a’

summary(results)包含价格变化,输出变化等结果。

也许Antitrust没有预先编程,与其他版本的PC-AIDS相似,也许我无法从这个包中获得这样的结果 - 这使得写这个问题的练习几乎毫无意义。但是,如果这是一个编程问题,在R中有更多经验的人可能有帮助,我会邀请一个有用的答案。

1 个答案:

答案 0 :(得分:1)

当行名称相同时打印data.frame对象时出现问题:

mat <- matrix(1:10, ncol=2)
mat
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

rownames(mat) <- rep("a", 5)
mat
  [,1] [,2]
a    1    6
a    2    7
a    3    8
a    4    9
a    5   10

现在让它成为data.frame:

temp <- as.data.frame(mat)
temp
  

data.frame出错(V1 = c(&#34; 1&#34;,&#34; 2&#34;,&#34; 3&#34;,&#34; 4&#34;,& #34; 5&#34;),V2 = c(&#34; 6&#34;,&#34; 7&#34;,:         重复row.names:a

您的问题的解决方案是重命名标签,使每个标签都不同:

ownerPreLab <- c("a.1","a.2","b","c")

results <- pcaids(shares, knownelast, mktelast, ownerPre=ownerPre, ownerPost=ownerPost,
                  labels=ownerPreLab, knownElastIndex=1)

resume<-summary(results)

Merger simulation results under 'PCAIDS' demand:

      priceDelta sharesPre sharesPost outputDelta
* a.1         44        30         29        -2.4
* a.2         44        20         20        -2.4
* b           81        20         16       -18.4
  c           11        30         35        16.4

    Notes: '*' indicates merging parties' products. Deltas are percent changes.
    Output is based on revenues.


Share-Weighted Price Change:    38.55
Share-Weighted CMCR:    37.58