একজন কীভাবে ggplot2 এ ক্রমাগত মিথস্ক্রিয়া করে ক্রমাগত প্লট করতে পারেন?


11

ধরা যাক আমার কাছে ডেটা রয়েছে:

x1 <- rnorm(100,2,10)
x2 <- rnorm(100,2,10)
y <- x1+x2+x1*x2+rnorm(100,1,2)
dat <- data.frame(y=y,x1=x1,x2=x2)
res <- lm(y~x1*x2,data=dat)
summary(res)

আমি ধারাবাহিক মিথস্ক্রিয়া দ্বারা ক্রমাগত প্লট করতে চাই যেমন এক্স 1 এক্স অক্ষের উপর থাকে এবং এক্স 2 টি 3 লাইন দ্বারা প্রতিনিধিত্ব করে, একটি যা 0 এর জেড স্কোরে x2 উপস্থাপন করে, একটি +1 এর জেড-স্কোর এবং অন্যটিতে -1 এর জেড স্কোর, প্রতিটি লাইনের সাথে আলাদা রঙ এবং লেবেলযুক্ত। আমি কীভাবে জিজিপ্লট 2 ব্যবহার করে এটি করতে পারি?

উদাহরণস্বরূপ, এটি দেখতে এর মতো কিছু লাগতে পারে (যদিও অবশ্যই বিভিন্ন লাইন ধরণের পরিবর্তে বিভিন্ন বর্ণের লাইন থাকে): উদাহরণ চিত্র


আপনি অন্য প্যাকেজ / সফ্টওয়্যার থেকে উদাহরণ চিত্র প্রদর্শন করতে পারেন বা আপনি কী চক্রান্ত করতে চান তার আরও বিশদ বিবরণ দিতে পারেন?
daroczig

উত্তর:


9

আপনার সিমুলেটেড ডেটা সেট সহ আমার সংস্করণটি এখানে:

x1 <- rnorm(100,2,10)
x2 <- rnorm(100,2,10)
y <- x1+x2+x1*x2+rnorm(100,1,2)
dat <- data.frame(y=y,x1=x1,x2=x2)
res <- lm(y~x1*x2,data=dat)
z1 <- z2 <- seq(-1,1)
newdf <- expand.grid(x1=z1,x2=z2)

library(ggplot2)
p <- ggplot(data=transform(newdf, yp=predict(res, newdf)), 
            aes(y=yp, x=x1, color=factor(x2))) + stat_smooth(method=lm)
p + scale_colour_discrete(name="x2") + 
  labs(x="x1", y="mean of resp") + 
  scale_x_continuous(breaks=seq(-1,1)) + theme_bw()

আমি আপনাকে এক্স / ওয়াই-অক্ষের লেবেল এবং কিংবদন্তির অবস্থান সম্পর্কিত বিশদটি পরিচালনা করতে দিই।

এখানে চিত্র বর্ণনা লিখুন


দেখতে দুর্দান্ত লাগছে, (অবশ্যই) বাদে আমাদের প্রথমে স্কেল (x1) এবং স্কেল (x2) প্রয়োজন।
রাসেলপিয়ের্স

1
@ ড্রকনেেক্সাস হ্যাঁ, অবশ্যই (আমার প্রাথমিক পরীক্ষাগুলিতে আমি নিজের পরিবর্তে মানকৃত এন (0; 1) বিভিন্নতা ব্যবহার করেছি)।
chl

5

0 এর জেড স্কোর ( y0 কলাম), -1 এর সাথে y এর জন্য অনুমানগুলি গণনা করা হচ্ছে y1 মি কলাম) এবং 1 ( y1p কলাম) এর অনুমানগুলি গণনা করা হচ্ছে :

dat$y0 <- res$coefficients[[1]] + res$coefficients[[2]]*dat$x1 + res$coefficients[[3]]*0 + res$coefficients[[4]]*dat$x1*0
	dat$y1m <- res$coefficients[[1]] + res$coefficients[[2]]*dat$x1 + res$coefficients[[3]]*-1 + res$coefficients[[4]]*dat$x1*-1
dat$y1p <- res$coefficients[[1]] + res$coefficients[[2]]*dat$x1 + res$coefficients[[3]]*1 + res$coefficients[[4]]*dat$x1*1

বেস দিয়ে লাইন প্লট করা plot() :

plot(dat$x1, dat$y0, type="l", xlab="x1", ylab="Estimates")
lines(dat$x1, dat$y1m, col="red")
lines(dat$x1, dat$y1p, col="blue")

এখানে চিত্র বর্ণনা লিখুন

জিজিপ্লট ব্যবহার করতে আপনি জিওম_লাইন কল করতে পারেন :

ggplot(dat, aes(x1, y0)) + geom_line() +
    geom_line(aes(x1, y1m), color="red") +
    geom_line(aes(x1, y1p), color="blue") +
    theme_bw() + opts(title="") + xlab("x1") + ylab("Estimates")

এখানে চিত্র বর্ণনা লিখুন


2
আপনি পূর্বাভাস ব্যবহার করে ভবিষ্যদ্বাণী পেতে পারেন। ডাট [, "y0"] <- পূর্বাভাস (রেস, নিউডাটা = ডেটা ফ্রেম (এক্স 1 = ডাট [, "এক্স 1"], এক্স 2 = 0)) টাইপিংয়ের কিছুটা সাশ্রয় করে।
এমপিক্টাস

@ এমপিক্টাস: আপনাকে ধন্যবাদ, আমি এটি সম্পর্কে জানতাম না predict, তবে দরকারী বলে মনে হচ্ছে।
daroczig

1
আমি নিজেই ঝালগুলি গণনার পরিবর্তে পূর্বাভাসটি ব্যবহার করার পরামর্শ দিই - এটি আপনার পক্ষে মিথস্ক্রিয়া বা অ-লিনিয়ার উপাদানগুলি বিশেষত যখন সহজ হয়।
হ্যাডলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.