2016-07-22 6 views
3

私はRにStataののmarginsplotを複製しようとしていますが、それでもStackExchangeを閲覧し、数週間のためにそれを理解しようとした後、これを実行することができていません。スタガのマージン/マージンをRに入れる?

あなたは私がRでmarginsplotを使用して作成したグラフを再作成することができます方法を知っているために起こるのですか?

まず、私は以下のRコード使用して再現性のあるデータセットを生成:次に

set.seed(96) 
sampleData <- data.frame(
    ID = 1:200, 
    outcome = sample(1:7, 200, replace = T), 
    scale = sample(1:7, 200, replace = T), 
    dummy1 = sample(0:1, 200, replace = T), 
    dummy2 = sample(0:1, 200, replace = T)) 
write.dta(dataframe, "sampledata.dta") 

を、私はStataにデータを読み、添付のグラフを取得するには、次のコマンドを実行します。

reg outcome dummy1##c.scale dummy2##c.scale 

    margins dummy1 dummy2, at(scale=(1(1)7)) 

    marginsplot, recast(line) name(outcome, replace) 

:このコードはStataの中で実行されている場合基本的に、私はRに複製しようとしているグラフを取得します

はあなたが私はこのグラフを複製役立つだろう任意のポインタを持っていますか?

+1

それは多分、予測間隔との線形フィットのように見えますか?私はおそらくそれに亀裂があるかもしれませんが、私はstataの 'reg outcome ....'行が正確に何を指しているのか分かりません。 '##'はどういう意味ですか? – thelatemail

+1

@thelatemailこれは結果として変数 'outcome'を伴うOLS回帰に適合し、説明変数は2つの連続バイラブルとの2つのバイナリ変数の相互作用である。 REGの結果@thelatemail – radek

+0

次のように...ラインがRに変換することができます。lm.out < - LM(成果〜dummy1 *スケール+ dummy2 *スケール、データ=れるsampleData) – rowbust

答えて

3
# your data 
set.seed(96) 
sampleData <- data.frame(
    ID = 1:200, 
    outcome = sample(1:7, 200, replace = T), 
    scale = sample(1:7, 200, replace = T), 
    dummy1 = sample(0:1, 200, replace = T), 
    dummy2 = sample(0:1, 200, replace = T)) 

# all possible combinations 
newData <- data.frame(scale=rep(1:7, each=4), 
    dummy1=rep(c(0, 0, 1, 1), 7), 
    dummy2=rep(0:1, 2*7)) 
newData$dummy <- paste(newData$dummy1, newData$dummy2) 

a <- lm(outcome ~ dummy1*scale + dummy2*scale, data=sampleData) 

b <- predict(a, newdata=newData, interval="confidence") 

c <- cbind(newData, b) 

require(ggplot2) 

# one pane 
d <- ggplot(c, aes(scale, fit, color=dummy)) 
d <- d + geom_line() 
# d <- d + facet_grid(dummy1 ~ dummy2) 
d <- d + geom_ribbon(aes(ymin=lwr, ymax=upr), alpha=0.25) 
d 

# using facets 
e <- ggplot(c, aes(scale, fit)) 
e <- e + geom_line() 
e <- e + facet_grid(dummy1 ~ dummy2) 
e <- e + geom_ribbon(aes(ymin=lwr, ymax=upr), alpha=0.25) 
e 

プロットを含める必要があります。

color

facet

+1

これは、おかげで本当に便利です!私はggplot2がこれについて行く方法だと思う。しかし疑問...なぜ第3のグラフはダミー1とダミー2の相互作用ですか?可変スケールと各ダミーとの相互作用に興味があります... – rowbust

+0

@EmilyB - 申し訳ありません!私は他の質問に答えました!これは信頼区間を持つ予測プロットですか?私はStataでプロットを得るために「マージン」を使いませんでしたが、異なる組み合わせでは限界効果しか得られませんでした。しかし、あなたのプロットは「結果」レベルのものです。上記が有効かどうかを確認してください。 –

+0

Stataコードは単なる予測なので、コードは正しいように見えます。 Stataのmargininsコマンドとnarginsplotコマンドは、 '、dydx()'オプションと一緒に使用した場合に限って効果があります。 – Thomas

関連する問題