2016-03-21 6 views
1

私はQuantPsycパッケージを使用しようとしましたが、まったく失敗しました。SPSSスタイルモデレーショングラフhere (bottom image)のようなものをRにプロットしようとしています。誰かがこれを正確にプロットするのを助けることができます私はイメージの正確なデータを期待していません、それは私が望むフォーマットです。この例ではdata(tra)を使用しています。私は試しました:SPSSスタイルモデレーション(対話)の例をプロットする

data(tra) 
lm.mod1 <- moderate.lm(beliefs, values, attitudes, tra) 
ss.mod1 <- sim.slopes(lm.mod1, tra$values) 
## requires user interaction 
graph.mod(ss.mod1,beliefs,attitudes,tra,"Interaction Example") 

これはまったく私が探していたものではありません。コメントのおかげで、私は、このコードに私を導いた、this postが見つかりました:

library(effects) 
data(Prestige) 
mod5 <- lm(prestige ~ income*type + education, data=Prestige) 
eff_cf <- effect("income*type", mod5) 
print(plot(eff_cf, multiline=TRUE)) 

近いですが、まだ具体的には、適切なフォーマットを持っているdoesntの:に限定されるものではなく、プロット

  • データを平均値の上下一つの標準偏差(私はそれが一例であると考えていたように)

  • x軸が標識されている(これはSPSSでない場合)

+1

あなたは[ 'effects'パッケージ](https://cran.r-project.org/web/packages/effects/index.html)の効果に何かを探しています? –

答えて

2

これは、値を予測することによって比較的簡単に行うことができます。私はあなたの投稿に何らかのタイプミスがあると推測しています。なぜなら、「タイプ」はプレステージデータセットのカテゴリの予測子なのですから。私は、代わりに "所得*教育"をしたいと思うでしょう。プロットするために、ggplot2パッケージを使用しました。なぜなら、基本グラフィックよりもよく慣れているからですが、そこにはおそらく解決策もあります。私はここでプロットの細部に乗り遅れてしまったが、リンクした例を正確に模倣したいと思うように思える。

# model 
mod5 <- lm(prestige ~ income * education, data = Prestige) 

# first, create data frame to store predictions 
m <- mean(Prestige$education) # mean of education 
s <- sd(Prestige$education) # sd of education 
newdata <- data.frame(education = c(rep(m - s, 2), rep(m, 2), rep(m + s, 2)), # add in +/- 1 SD and mean 
    income = with(Prestige, rep(range(income), 3))) # range of income values 

# predict new values using the predict() function 
newdata$prestige.predicted <- predict(mod5, newdata) 

# plot 
library(ggplot2) 
ggplot(newdata, aes(x = income, y = prestige.predicted, linetype = factor(education))) + 
    geom_line() + 
    scale_linetype_manual(values = c("dotted", "solid", "dashed"), name = "Education", labels = c("1 SD Below Mean", "Mean", "1 SD Above Mean")) + 
    theme_bw() + 
    theme(axis.text.x = element_blank(), # get rid of axis labels 
      axis.ticks.x = element_blank(), 
      panel.grid.major.x = element_blank(), # get rid of vertical lines 
      panel.grid.minor.x = element_blank(), 
      panel.grid.major.y = element_line(color = "black"), # make horizontal gridlines black 
      panel.grid.minor.y = element_blank()) 

Resulting graph