আর বা এসপিএসএস ব্যবহার করে লাইকার্ট প্রতিক্রিয়াগুলি ভিজ্যুয়ালাইজ করা


19

আমার 2 টি গ্রুপে 82 জন উত্তরদাতী রয়েছে (গ্রুপ এ 43) এবং বি গ্রুপে 39) যারা 1 - 5 (দৃ strongly়ভাবে একমত - দৃ strongly়ভাবে একমত নয়) এর মধ্যে 65 টি লিকার্ট প্রশ্নের একটি সমীক্ষা সম্পন্ন করে। অতএব আমার কাছে 66 কলাম (প্রতিটি প্রশ্নাবলীর জন্য 1 + 1 গ্রুপ বরাদ্দকে নির্দেশ করে) এবং 82 সারি (প্রতিটি উত্তরদাতাদের জন্য 1) দিয়ে একটি ডেটাফ্রেম রয়েছে।

আর বা এসপিএসএস ব্যবহার করে কেউ এই ডেটাটি ভিজ্যুয়ালাইজ করার একটি দুর্দান্ত উপায় জানেন know

আমার এর মতো কিছু দরকার: এখানে চিত্র বর্ণনা লিখুন
( জেসন ব্রায়ার থেকে )

তবে আমি কোডের প্রাথমিক বিভাগটি কাজ করতে পারি না। বিকল্পভাবে, আমি আগের ক্রস যাচাইকৃত পোস্ট থেকে লিকার্ট ডেটা কীভাবে ভিজ্যুয়ালাইজ করা যায় তার সত্যিকারের ভাল উদাহরণগুলি পেয়েছি: লিকার্ট আইটেম প্রতিক্রিয়া ডেটা ভিজ্যুয়ালাইজ করা তবে এই কেন্দ্রিক গণনা গ্রাফ বা আর বা এসপিএসএস ব্যবহার করে সজ্জিত বারচার্টগুলি কীভাবে তৈরি করা যায় সে সম্পর্কে কোনও গাইড বা নির্দেশাবলী নেই।


1
হাই অ্যাডাম, আরও স্পষ্ট করে বলতে গেলে, আপনি কি দলগুলির মধ্যে পার্থক্য দেখানোর জন্য ভিজ্যুয়ালাইজেশনটি ব্যবহার করতে চান? যদি তা হয় তবে এটি কোনও প্রস্তাবিত পদ্ধতি নয়।
মিশেল

জেসন ব্রায়ারের প্যাকেজটি আমার পক্ষে কাজ করার জন্য ব্যবহৃত হয়নি, তবে আমি মনে করি তিনি এটি আপডেট করেছেন এবং এটি এখনই সুন্দরভাবে কাজ করছে। কলামের নামগুলি বৈশিষ্ট্য এবং গোষ্ঠী হিসাবে সংরক্ষণ করার জন্য আমি একটি অতিরিক্ত বৈশিষ্ট্য সহ একটি পুল-অনুরোধ যুক্ত করেছি। এটি ব্যবহার করে, আমি খুব সহজেই একটি 45 টি প্রশ্নের লাইকার্ট প্রশ্নপত্রটি গ্রুপগুলিতে বিভক্ত করতে, এমনকি যদি আমি চয়ন করি তবে অন্য ভেরিয়েবলের বিপরীতে বিভক্ত করতে সক্ষম হয়েছি। (আমি নিটার ব্যবহার করে আউটপুট দিই, সুতরাং এটি কোনও বিশালাকার প্লট নয়, একটি ওয়েবসাইটে প্রচুর সাব প্লট দিয়ে শেষ হয়)। আমি এখানে একটি বিশদ লিখনআপ করেছি
স্টায়ান হোক্লেভ

কেবল এফওয়াইআই, ভবিষ্যতে আপনারা যারা এই উত্তরগুলি পড়ছেন তাদের কাছে দেখে মনে হচ্ছে লাইকার্ট ডেটা সম্পর্কিত ইরুটিলের কিছু বৈশিষ্ট্য এবং কার্যকারিতা লিকার্ট প্যাকেজে স্থানান্তরিত হয়েছে ( এখানে CRAN দেখুন )।
firefly2442

লিঙ্কটি bryer.org/2011/visualizing-likert-items ভাঙা দেখা যাচ্ছে। একটি সংশোধন বা প্রতিস্থাপন স্বাগত হবে।
নিক কক্স

1
এই জাতীয় প্রশ্ন - নির্দিষ্ট কোডের উপর তার দৃ strong় মনোনিবেশ সহ - এটি ২০১২ সালের তুলনায় কম স্বাগত। এটি নির্বিশেষে, এ বিষয়ে আগ্রহী যে কোনও ব্যক্তির জন্য কিছু ক্রস-রেফারেন্সগুলি হলেন stats.stackex بدل.com / প্রশ্নগুলি / 636363২২ / … এবং stats.stackexchange.com/questions/148554/…
নিক কক্স

উত্তর:


30

আপনি যদি সত্যিই এত বড় সংখ্যক আইটেম সহ স্ট্যাকযুক্ত বারচার্ট ব্যবহার করতে চান তবে দুটি সম্ভাব্য সমাধান এখানে দেওয়া হল।

ব্যবহার irutils

আমি কয়েক মাস আগে এই প্যাকেজ জুড়ে এসেছি।

এর হিসাবে উপর 0573195c07 কমিট গিটহাব , কোড একটি সাথে কাজ করবে না grouping=যুক্তি। আসুন শুক্রবারের ডিবাগিং সেশনের জন্য যাই।

গিথুব থেকে একটি জিপ করা সংস্করণ ডাউনলোড করে শুরু করুন। আপনাকে R/likert.Rফাইলটি হ্যাক করতে হবে, বিশেষত likertএবং plot.likertকার্যাদি। প্রথমত, এ likert, cast()ব্যবহৃত হয় কিন্তু reshapeপ্যাকেজ লোড হয় না (একটা ব্যাপার যদিও import(reshape)নির্দেশ NAMESPACEফাইল)। আপনি এটি নিজের আগে লোড করতে পারেন। দ্বিতীয়ত, আইটেমগুলির লেবেল আনার জন্য একটি ভুল নির্দেশ রয়েছে, যেখানে একটি i175 লাইনের চারপাশে ঝুঁকছে This এটির পাশাপাশি স্থির করতে হবে, উদাহরণস্বরূপ সমস্ত ঘটনাকে প্রতিস্থাপন likert$items[,i]করে likert$items[,1]। তারপরে আপনি প্যাকেজটি আপনার মেশিনে যেমন ব্যবহার করতে পারেন তেমন ইনস্টল করতে পারেন। আমার ম্যাক, আমি করেছি

% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz

তারপরে আর এর সাহায্যে নিম্নলিখিতটি চেষ্টা করুন:

library(irutils)
library(reshape)

# Simulate some data (82 respondents x 66 items)
resp <- data.frame(replicate(66, sample(1:5, 82, replace=TRUE)))
resp <- data.frame(lapply(resp, factor, ordered=TRUE, 
                          levels=1:5, 
                          labels=c("Strongly disagree","Disagree",
                                   "Neutral","Agree","Strongly Agree")))
grp <- gl(2, 82/2, labels=LETTERS[1:2]) # say equal group size for simplicity

# Summarize responses by group
resp.likert <- likert(resp, grouping=grp)

এটি কেবল কাজ করা উচিত, তবে আইটেমের সংখ্যা বেশি হওয়ায় ভিজ্যুয়াল রেন্ডারিং ভয়ঙ্কর হবে। plot(likert(resp))যদিও এটি দলবদ্ধকরণ ছাড়াই (যেমন, ) কাজ করে ।

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

আমি এইভাবে আপনার ডেটাসেটকে আইটেমের ছোট ছোট উপগ্রহে কমাতে পরামর্শ দেব। উদাহরণস্বরূপ, 12 আইটেম ব্যবহার করে,

plot(likert(resp[,1:12], grouping=grp))

আমি একটি 'পঠনযোগ্য' স্ট্যাকযুক্ত বারচার্ট পেয়েছি। আপনি সম্ভবত পরে তাদের প্রক্রিয়া করতে পারেন। (এগুলি ggplot2অবজেক্টস, তবে gridExtra::grid.arrange()পঠনযোগ্যতা ইস্যুর কারণে আপনি কোনও এক পৃষ্ঠায় এগুলি সাজিয়ে তুলতে পারবেন না !)

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

বিকল্প সমাধান

আমি আপনার দৃষ্টি আকর্ষণ করতে চাই অন্য একটি প্যাকেজ, এইচএইচ-তে , যা লিকার্ট স্কেলগুলি স্ট্যাকড বারচার্টগুলি ডাইভার্জিং হিসাবে প্লট করতে দেয়। আমরা উপরের কোডটি নীচে প্রদর্শিত হিসাবে পুনরায় ব্যবহার করতে পারি:

resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")

তবে এটি জিনিসগুলিকে কিছুটা জটিল করে তুলবে কারণ আমাদের ফ্রিকোয়েন্সিগুলি গণনাতে রূপান্তর করতে হবে, likertউত্পাদিত বস্তুকে সাবসেট করতে হবে irutils, প্যাকেজ বিচ্ছিন্ন করতে হবে ইত্যাদি So তাই নতুন (গণনা) পরিসংখ্যান নিয়ে আবার শুরু করা যাক:

plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
            rightAxisLabels=NULL, rightAxis=NULL, ylab.right="", 
            positive.order=TRUE)

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

একটি গ্রুপিং ভেরিয়েবল ব্যবহার করতে, আপনাকে একটি arrayসংখ্যাগত মানের সাথে কাজ করতে হবে ।

# compute responses frequencies separately by grp
resp.array <- array(NA, dim=c(66, 5, 2))
resp.array[,,1] <- t(apply(subset(resp, grp=="A"), 2, table))
resp.array[,,2] <- t(apply(subset(resp, grp=="B"), 2, table))
dimnames(resp.array) <- list(NULL, NULL, group=levels(grp))
plot.likert(resp.array, layout=c(2,1), main="")

এটি দুটি পৃথক প্যানেল তৈরি করবে, তবে এটি একটি পৃষ্ঠায় ফিট করে fits

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

2016-6-3 সম্পাদনা করুন

  1. এর মতো এখন ভোক্তাদের দৃষ্টিভঙ্গির পৃথক প্যাকেজ হিসাবে পাওয়া যায়।
  2. আপনার লাইব্রেরি পুনরায় আকার দেওয়ার দরকার নেই বা উভয় ইরুইটিল এবং পুনরায় আকার পরিবর্তন করতে হবে

শেষ প্লটটি জনসংখ্যা পিরামিডগুলির কথা মনে করিয়ে দেয়। এগুলি সুশৃঙ্খল নয় এমন কিছু ডেটা সহ "বুনোতে" তারা কীভাবে কাজ করে তা দেখতে আমাদের কিছু সত্য তথ্য পাওয়া উচিত। আমি স্বীকার করব যে তারা দৃষ্টি আকর্ষণীয় এবং যদিও সুন্দর।
অ্যান্ডি ডব্লিউ

@ অ্যান্ডি সত্যিই, কেস। দেখুন HH::as.pyramidLikert
chl

1
+1, গ্রন্থাগার (এইচএইচ) অবশ্যই যাওয়ার উপায়। তবে একমত / অসম্মতি ইত্যাদির ক্রমে আপনার দ্বিতীয় শেষ চক্রান্তের সাথে কিছু ভুল হয়েছে
পিটার এলিস

@ পিটারএলিস ইওপ, দেখে মনে হচ্ছে প্রতিক্রিয়া বিভাগগুলি সত্যই ভুল ক্রমে রয়েছে। (ডেটা টেবুলেটেড করার সময় লেবেলের ক্রমটি নষ্ট হয়ে গিয়েছিল এবং শব্দের নাম লেক্সিকোগ্রাফিক অর্ডার অনুসরণ করে সাজানো হয়েছে।) দ্রুত হ্যাকের জন্য, আমরা কেবল এটির t(apply(resp, 2, table))সাথে প্রতিস্থাপন করতে পারি t(apply(resp, 2, table))[,levels(resp[,1])]। এবং আপনাকেও +1!
chl

7

আপনি এসপিএসে যে পোস্টটি উল্লিখিত হয়েছে ( লিকার্ট আইটেম রেসপন্স ডেটা ভিজ্যুয়ালাইজিং ) পোস্ট করেছেন তাতে অনেকগুলি চার্ট পুনরুদ্ধার সম্পর্কে একটি ব্লগ পোস্ট লিখতে শুরু করেছি সুতরাং আমি মনে করি এটি শেষ করার জন্য এটি ভাল অনুপ্রেরণা হবে।

মিশেল নোট হিসাবে, আপনার গ্রুপ রয়েছে তা পূর্ববর্তী প্রশ্নের তুলনায় একটি নতুন বাঁক। এবং স্ট্যাক করা বার গ্রাফগুলি ব্যবহার করে গোষ্ঠীগুলিকে বিবেচনায় নেওয়া যেতে পারে, আইএমও তারা খুব সহজেই সিএল এর আসল পোস্টে ডট প্লটের উদাহরণে অন্তর্ভুক্ত হয়। পোস্টের শেষে এটি তৈরি করার জন্য আমি এসপিএসএস কোড অন্তর্ভুক্ত করেছি, মূলত এটি কীভাবে প্লট তৈরি করতে উপযুক্ত ফর্ম্যাটে আপনার ডেটা পুনরায় আকার দিতে হবে তা জেনে রাখা আবশ্যক (কোডটিতে এনোটোটেশন দেওয়া হয়েছে যে আশা করা যায় যে এটির কিছুটি সাফ করুন)। এখানে দুটি গ্রুপ থেকে আগত পয়েন্টগুলি আলাদা করতে আমি কিছু রিডানড্যান্ট এনকোডিং (রঙ এবং আকৃতি) ব্যবহার করেছি এবং পয়েন্টগুলি অর্ধ-স্বচ্ছ করে তুলেছি যাতে আপনি যখন বলতে পারেন যে তারা কখন ওভারল্যাপ করে (অন্য বিকল্পটি পয়েন্টগুলি ডোজ করতে হবে যখন তারা ওভারল্যাপ করবে)।

চিত্র 1: গ্রুপ অনুসারে ডট প্লট

কেন এটি স্ট্যাক করা বারের চার্টের চেয়ে ভাল? সজ্জিত বার চার্টগুলি বারগুলির দৈর্ঘ্যে তথ্য এনকোড করে। আপনি যখন একই অক্ষ বিভাগের মধ্যে বা প্যানেলের মধ্যে দৈর্ঘ্যের বারের মধ্যে তুলনা করার চেষ্টা করেন, তখন স্ট্যাকিংটি বারগুলিকে একটি সাধারণ স্কেল হওয়া থেকে বিরত রাখে। উদাহরণস্বরূপ, আমি চিত্র 2 এ একটি চিত্র সরবরাহ করেছি যাতে দুটি প্লট একটি প্লটে স্থাপন করা হয় যেখানে তাদের শুরুর অবস্থানটি আলাদা, কোন বারটি প্রশস্ততর (অনুভূমিক অক্ষের সাথে)?

চিত্র 2: একটি সাধারণ স্কেল ছাড়া বারগুলি

এটি নীচের চিত্র 3 এর প্লটের সাথে তুলনা করুন, যেখানে দুটি বার (একই দৈর্ঘ্যের) একই শুরুর বিন্দু থেকে প্লট করা হয়েছে। আমি ইচ্ছাকৃতভাবে কাজটি কঠিন করে তুলেছি, তবে কোনটি আর দীর্ঘ হবে তা আপনি বলতে সক্ষম হবেন।

চিত্র 3: একটি সাধারণ স্কেল সহ বারগুলি

স্ট্যাকযুক্ত বারের চার্টগুলি চিত্র 2-তে প্রদর্শিত যা করছে তা মূলত করছে যা চিত্র 3 এ প্রদর্শিত হবে তার সাথে ডট প্লটগুলি আরও অনুরূপ বিবেচনা করা যেতে পারে, বারের বারের সাথে ডট দিয়ে বারটি প্রতিস্থাপন করুন।

আমি অনুসন্ধানের ডেটা বিশ্লেষণের জন্য কোনও নির্দিষ্ট চার্ট তৈরি করবেন না বলার অপেক্ষা রাখে না, তবে আমি অনেকগুলি বিভাগ ব্যবহার করার সময় সজ্জিত বার চার্টগুলি এড়ানো পরামর্শ দেব। বিন্দু প্লটগুলিও কোনও চঞ্চল নয়, তবে আমি বিশ্বাস করি যে বিন্দু প্লটগুলির সাথে প্যানেলের মধ্যে তুলনা করা সজ্জিত বারের চার্টের চেয়ে তুলনামূলক সহজ। সারণীগুলির জন্য আমি এখানে আমার ব্লগ পোস্টে যে পরামর্শ দিচ্ছি তার কয়েকটি বিবেচনা করুন , চার্টগুলিকে অর্থপূর্ণ বিভাগে অর্ডার করতে এবং / অথবা আলাদা করার চেষ্টা করুন এবং নিশ্চিত করুন যে আপনি যে আইটেমগুলি দেখতে চান তা চার্টের সাথে আরও একত্রে রয়েছে। যদিও কিছু চক্রান্ত করার পদ্ধতি অনেক প্রশ্নের ভাল স্কেল করতে পারে (শ্রেণীবদ্ধ তাপের মানচিত্র একটি উদাহরণ), বাছাই ছাড়াই এটি এখনও কোনও অর্থসূচক নিদর্শনগুলি সনাক্ত করতে অসুবিধা হবে (সুস্পষ্ট বহিরাগতদের ছাড়াও)।

এসপিএসএস ব্যবহার করার বিষয়ে একটি নোট। এসপিএসএস চার্টের সাথে পূর্ববর্তী লিঙ্কযুক্ত যেকোনটি উত্পন্ন করতে পারে, যদিও এটি আপনার ডেটাকে কীভাবে আকৃতি দেবে তা জানার ক্ষেত্রে প্রায়শই আবশ্যক হয় (একইভাবে জিপিপ্লাটের ক্ষেত্রেও সত্য, তবে লোকেরা আপনার জন্য পুনরায় আকার পরিবর্তন করতে প্যাকেজগুলি বিকাশ করছে)) এসপিএসএসের জিপিএল ভাষা কীভাবে আরও ভাল কাজ করে তা বুঝতে আমি আসলে জিপিপ্লট 2- তে হ্যাডলি উইকহ্যামের বইটি পড়ার পরামর্শ দেবইউ আর তে! সিরিজ। এটি এসপিএসএসের জিপিএল কীভাবে কাজ করে তা বোঝার জন্য প্রয়োজনীয় ব্যাকরণটি দেয় এবং এসপিএসএসের সাথে আসা জিপিএল প্রোগ্রামিং ম্যানুয়ালটির চেয়ে অনেক সহজ পঠনযোগ্য! এসপিএসএসে নির্দিষ্ট চার্ট উত্পন্ন করার বিষয়ে আপনার যদি কোনও প্রশ্ন থাকে তবে একটি চার্টের জন্য একটি প্রশ্ন জিজ্ঞাসা করা ভাল (আমি এখানে যথেষ্ট পরিমাণে কথা বলেছি!) আমি এই উত্তরটি একটি লিঙ্কের সাথে আপডেট করব যদিও আমি কখনই আমার তৈরির কাছাকাছি চলে যাই অন্যান্য কিছু চার্টের প্রতিরূপ ব্লগ পোস্ট। তাপ মানচিত্র বা ওঠা নামা প্লট ধারণার একটি প্রমাণ জন্য আপনি খনি আরেকটি ব্লগ পোস্টে দেখতে পারেন SPSS মধ্যে কিছু উদাহরণ Corrgrams

চিত্র 1 উত্পন্ন করতে ব্যবহৃত এসপিএসএস কোড

****************************************.
input program. */making fake data similar to yours.
loop #i = 1 to 82.
compute case_num = #i.
end case.
end loop.
end file.
end input program.
execute.
dataset name likert.

*making number in groups.
compute group = 1.
if case_num > 43 group = 2.
value labels group
1 'A'
2 'B'.

*this makes 5 variables with categories between 0 and 5 (similar to Likert data with 5 categories plus missing data).
vector V(5).
do repeat V = V1 to V5.
compute V = TRUNC(RV.UNIFORM(0,6)).
end repeat.
execute.

value labels V1 to V5
0 'missing'
1 'very disagree'
2 'disagree'
3 'neutral'
4 'agree'
5 'very agree'.
formats case_num group V1 to V5 (F1.0).
*****************************************.

*Because I want to panel by variable, I am going to reshape my data so all of the "V" variables are in one column (stacking them in long format).
varstocases
/make V from V1 to V5
/index orig (V).

*I am going to plot the points, so I aggregate that information (you could aggregate total counts as well if you wanted to plot percentages.
DATASET DECLARE agg_lik.
AGGREGATE
  /OUTFILE='agg_lik'
  /BREAK=orig V group
  /count_lik=N.
dataset activate agg_lik.


*now the fun part, generating the chart.
*The X axis, dim(1) is the count of likert responses within each category for each original question.
*The Y axis, dim(2) is the likert responses, and the third axis is used to panel the observations by the original questions, dim(4) here beacause I want to panel
by rows instead of columns.
DATASET ACTIVATE agg_lik.
* Chart Builder.
GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=count_lik V group orig 
    MISSING=LISTWISE REPORTMISSING=NO
  /GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
  SOURCE: s=userSource(id("graphdataset"))
  DATA: count_lik=col(source(s), name("count_lik"))
  DATA: V=col(source(s), name("V"), unit.category())
  DATA: group=col(source(s), name("group"), unit.category())
  DATA: orig=col(source(s), name("orig"), unit.category())
  GUIDE: axis(dim(1), label("Count"))
  GUIDE: axis(dim(2))
  GUIDE: axis(dim(4))
  GUIDE: legend(aesthetic(aesthetic.color.exterior), label("group"))
  GUIDE: text.title(label("Figure 1: Dot Plots by Group"))
  SCALE: cat(aesthetic(aesthetic.color.exterior), include("1", "2"))
  SCALE: cat(aesthetic(aesthetic.shape), map(("1", shape.circle), ("2", shape.square)))
  ELEMENT: point(position(count_lik*V*1*orig), color.exterior(group), color.interior(group), transparency.interior(transparency."0.7"), size(size."8px"), shape(group))
END GPL.
*The "SCALE: cat" statements map different shapes which I use to assign to the two groups in the plot, and I plot the interior of the points as partially transparent.
*With some post hoc editing you should be able to make the chart look like what I have in the stats post.
****************************************.

আমার কাছ থেকে নম্রতার জন্য দৃ plus়তর প্লাস তবে অনুপ্রবেশজনকভাবে স্ট্যাকড বার চার্টের ঘাটতিগুলি নিয়ে আলোচনা করা, যা নীতিগতভাবে বোঝা সহজ তবে অনুশীলনে ডিকোড করা প্রায়শই কম সহজ।
নিক কক্স

5

ওহ ভাল, আপনি পরিষ্কার করার আগে আমি কোডটি নিয়ে এসেছি। অপেক্ষা করা উচিত ছিল কিন্তু ভেবেছিলাম আমার এটি পোস্ট করা উচিত যাতে এখানে যে কেউ এই কোডটি পুনরায় ব্যবহার করতে পারে।

ভিজুয়ালাইজেশনের জন্য ডামি ডেটা

# Response for http://stats.stackexchange.com/questions/25109/visualizing-likert-responses-using-r-or-spss
# Load libraries
library(reshape2)
library(ggplot2)

# Functions
CreateRowsColumns <- function(noofrows, noofcolumns) {
createcolumnnames <- paste("Q", 1:noofcolumns, sep ="")
df <- sapply(1:noofcolumns, function(i) assign(createcolumnnames[i], matrix(sample(1:5, noofrows, replace = TRUE))))
df <- sapply(1:noofcolumns, function(i) df[,i] <- as.factor(df[,i]))
colnames(df) <- createcolumnnames
return(df)}

# Generate dummy dataframe
LikertResponse <- CreateRowsColumns(82, 65)
LikertResponse[LikertResponse == 1] <- "Strongly agree"
LikertResponse[LikertResponse == 2] <- "Agree"
LikertResponse[LikertResponse == 3] <- "Neutral"
LikertResponse[LikertResponse == 4] <- "Disagree"
LikertResponse[LikertResponse == 5] <- "Strongly disagree"

হিটম্যাপের জন্য কোড

# Prepare data
LikertResponseSummary <- do.call(rbind, lapply(data.frame(LikertResponse), table))
LikertResponseSummaryPercent <- prop.table(LikertResponseSummary,1)

# Melt data
LikertResponseSummary <- melt(LikertResponseSummary)
LikertResponseSummaryPercent <- melt(LikertResponseSummaryPercent)

# Merge counts with proportions
LikertResponsePlotData <- merge(LikertResponseSummary, LikertResponseSummaryPercent, by = c("Var1","Var2"))

# Plot heatmap!
# Use the "geom_tile(aes(fill = value.y*100), colour = "white")" to control how you want the heatmap colours to map to.
ggplot(LikertResponsePlotData, aes(x = Var2, y = Var1)) +
    geom_tile(aes(fill = value.y*100), colour = "white") +
    scale_fill_gradient(low = "white", high = "steelblue", name = "% of Respondents") +
    scale_x_discrete(name = 'Response') +
    scale_y_discrete(name = 'Questions') +
    geom_text(aes(label = paste(format(round(value.y*100), width = 3), '% (', format(round(value.x), width = 3), ')')), size = 3) 

এটি মূলত জেসন ব্রায়নের ওয়েবসাইটের হিটম্যাপে লিকার্ট আইটেমগুলি ভিজ্যুয়ালাইজ করার জন্য একটি টেম্পলেট।


1
github.com/jbryer/irutils/blob/master/R/likert.R হ'ল আপনি চান স্ট্যাক করা বার চার্টের উত্স।
আরজে-

স্পষ্ট করার জন্য, আমি গ্রুপগুলির মধ্যে তুলনা করতে চাই না। কেবলমাত্র উভয় গোষ্ঠীর প্রতিক্রিয়া একটি পরিশীলিত উপায়ে উপস্থাপন করতে। এটি একটি দুর্দান্ত প্রতিক্রিয়া। এটা সত্যিই কৃতজ্ঞ. ধন্যবাদ।
অ্যাডাম

3

@ আরজে কোডটি এরকম একটি প্লট তৈরি করে, যা সত্যই ছায়াযুক্ত কক্ষগুলির একটি টেবিল। এটি বরং ব্যস্ত এবং কিছুটা বোঝার জন্য জটিল। শেডবিহীন একটি সাধারণ টেবিলটি আরও কার্যকর হতে পারে (এবং আপনি আরও অর্থবহ ক্রমে ডেটাটিও রাখতে পারেন)।

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

অবশ্যই আপনি কোন মূল বার্তাটি যোগাযোগের চেষ্টা করছেন তার উপর নির্ভর করে তবে আমি মনে করি এটি সহজ এবং কিছুটা সহজ বোঝার জন্য। এটিতে (বেশিরভাগ!) যৌক্তিক ক্রমে প্রশ্ন ও প্রতিক্রিয়াও রয়েছে।

    library(stringr)
    LikertResponseSummary$Var1num <- 
      as.numeric(str_extract(LikertResponseSummary$Var1, "[0-9]+"))
    LikertResponseSummary$Var2 <- 
      factor(LikertResponseSummary$Var2, 
      levels =  c("Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"))

ggplot(LikertResponseSummary, 
       aes(factor(Var1num), value, fill = factor(Var2))) + 
       geom_bar(position="fill") +
       scale_x_discrete(name = 'Question', breaks=LikertResponseSummary$Var1num,
                        labels=LikertResponseSummary$Var1) +
       scale_y_continuous(name = 'Proportion') +
       scale_fill_discrete(name = 'Response') +
       coord_flip()

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


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