2016-06-13 11 views
0

Ich verwende Rs Paket Antitrust für die Berechnung der Nachfrage eigenen und Kreuzpreiselastizitäten und Drucken der Zusammenfassung Ergebnisse einer Fusion zwischen Unternehmen. Das verwendete Modell ist PC-AIDS (proportional kalibriertes nahezu ideales Anforderungssystem), veröffentlicht von Epstein and Rubinfeld (2007). Es ist eine Marken-Simulation und Unternehmen dürfen mehr als eine Marke in der Standardsimulation besitzen, wie ich in Excel gesehen habe. Mein Wunsch ist es, die Ergebnisse angemessen zu drucken, in einer Fusion zwischen zwei Firmen und einer von ihnen, die mehr als eine Marke besitzen (vor dem Zusammenschluss).Fehler beim Versuch, die Ergebnisse in Rs Kartellpaket zu drucken

Mein Problem scheint jedoch ein Problem der Programmierung/Verständnis der Ausgabe des Codes zu sein. Ich werde einen ähnlichen Code schreiben, was ich getan habe:

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 

Und nach der Linie der results<-summary(results), erhalte ich die folgende Fehlermeldung in meinem Ausgabefenster:

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) hält Ergebnisse von Preisänderungen , Ausgabevariation etc.

Vielleicht ist Antitrust nicht vorprogrammiert ähnlich wie bei anderen Versionen, die ich von PC-AIDS gesehen habe, und vielleicht kann ich solche Ergebnisse nicht aus diesem Paket erhalten - die Übung zum Schreiben dieser Frage fast zwecklos. Aber wenn das ein Programmierproblem ist, bei dem jemand mit mehr Erfahrung in R helfen könnte, lade ich eine hilfreiche Antwort ein.

Antwort

1

Es gibt ein Problem Druck data.frame Objekte, wenn der Zeile Name das gleiche ist:

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 

Nun wollen sie es eine data.frame machen:

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

Fehler in Daten. Rahmen (V1 = c ("1", "2", "3", "4", "5"), V2 = c ("6", "7",: doppelte Zeile.Name: a

Die Lösung für Ihr Problem besteht darin, die Etiketten so umzubenennen, dass sie jeweils unterschiedlich sind:

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