সমস্যাটি:
আমি অন্যান্য পোস্টে পড়েছি যা [আর] এর predict
মিশ্র প্রভাবগুলি lmer
{lme4} মডেলের জন্য উপলভ্য নয় ।
আমি খেলনা ডেটাসেটের সাহায্যে এই বিষয়টিকে অন্বেষণ করার চেষ্টা করেছি ...
পটভূমি:
ডেটাসেটটি এই উত্স হিসাবে রূপান্তরিত হয়েছে , এবং হিসাবে উপলব্ধ ...
require(gsheet)
data <- read.csv(text =
gsheet2text('https://docs.google.com/spreadsheets/d/1QgtDcGJebyfW7TJsB8n6rAmsyAnlz1xkT3RuPFICTdk/edit?usp=sharing',
format ='csv'))
এটি প্রথম সারি এবং শিরোনাম:
> head(data)
Subject Auditorium Education Time Emotion Caffeine Recall
1 Jim A HS 0 Negative 95 125.80
2 Jim A HS 0 Neutral 86 123.60
3 Jim A HS 0 Positive 180 204.00
4 Jim A HS 1 Negative 200 95.72
5 Jim A HS 1 Neutral 40 75.80
6 Jim A HS 1 Positive 30 84.56
আমাদের কয়েকটি Time
ধারাবাহিক পরিমাপের পুনরাবৃত্তি পর্যবেক্ষণ রয়েছে ( অর্থাত্ Recall
কিছু শব্দের হার, এবং এলোমেলো প্রভাবগুলি ( Auditorium
যেখানে পরীক্ষাটি হয়েছিল; Subject
নাম) সহ বেশ কয়েকটি ব্যাখ্যামূলক পরিবর্তনশীল ; এবং নির্দিষ্ট প্রভাব যেমন Education
, Emotion
(শব্দের মানসিক সংজ্ঞা স্মরণ করা), বা এর পাকস্থলিতে গ্রহণ পরীক্ষা করার পূর্বে।Caffeine
ধারণাটি হ'ল হাইপার-ক্যাফিনযুক্ত ওয়্যারড বিষয়গুলির জন্য এটি মনে রাখা সহজ তবে সময়ের সাথে ক্ষমতা হ্রাস পায়, সম্ভবত ক্লান্তির কারণে। নেতিবাচক অভিপ্রায়যুক্ত শব্দগুলি মনে রাখা আরও কঠিন। শিক্ষার একটি অনুমানযোগ্য প্রভাব রয়েছে, এবং এমনকি অডিটোরিয়ামও একটি ভূমিকা পালন করে (সম্ভবত কোনওটি আরও শোরগোল বা কম আরামদায়ক ছিল)। এখানে বেশ কয়েকটি অনুসন্ধান প্লট রয়েছে:
এর কার্যকারিতা হিসেবে রিকল হার পার্থক্য Emotional Tone
, Auditorium
এবং Education
:
কলের জন্য ডেটা মেঘের লাইনে ফিটিং করার সময়:
fit1 <- lmer(Recall ~ (1|Subject) + Caffeine, data = data)
আমি এই চক্রান্ত পেয়েছি:
library(ggplot2)
p <- ggplot(data, aes(x = Caffeine, y = Recall, colour = Subject)) +
geom_point(size=3) +
geom_line(aes(y = predict(fit1)),size=1)
print(p)
যখন নিম্নলিখিত মডেল:
fit2 <- lmer(Recall ~ (1|Subject/Time) + Caffeine, data = data)
সংমিশ্রণ Time
এবং একটি সমান্তরাল কোড একটি আশ্চর্যজনক প্লট পায়:
p <- ggplot(data, aes(x = Caffeine, y = Recall, colour = Subject)) +
geom_point(size=3) +
geom_line(aes(y = predict(fit2)),size=1)
print(p)
প্রশ্নটি:
predict
এই lmer
মডেলটিতে ফাংশনটি কীভাবে কাজ করে ? স্পষ্টতই এটি Time
ভেরিয়েবলটি বিবেচনায় নিয়েছে , ফলে আরও শক্ততর ফিট Time
হয় এবং প্রথম প্লটটিতে চিত্রিত এই তৃতীয় মাত্রাটি প্রদর্শন করার চেষ্টা করা জিগ-জাগিং ।
যদি আমি কল predict(fit2)
করি তবে আমি 132.45609
প্রথম প্রবেশের জন্য যা যা প্রথম পয়েন্টের সাথে মিলে যায়। শেষ কলাম হিসাবে সংযুক্ত head
আউটপুট সহ এই ডেটাসেটের এখানে predict(fit2)
:
> data$predict = predict(fit2)
> head(data)
Subject Auditorium Education Time Emotion Caffeine Recall predict
1 Jim A HS 0 Negative 95 125.80 132.45609
2 Jim A HS 0 Neutral 86 123.60 130.55145
3 Jim A HS 0 Positive 180 204.00 150.44439
4 Jim A HS 1 Negative 200 95.72 112.37045
5 Jim A HS 1 Neutral 40 75.80 78.51012
6 Jim A HS 1 Positive 30 84.56 76.39385
এর সহগগুলি হ'ল fit2
:
$`Time:Subject`
(Intercept) Caffeine
0:Jason 75.03040 0.2116271
0:Jim 94.96442 0.2116271
0:Ron 58.72037 0.2116271
0:Tina 70.81225 0.2116271
0:Victor 86.31101 0.2116271
1:Jason 59.85016 0.2116271
1:Jim 52.65793 0.2116271
1:Ron 57.48987 0.2116271
1:Tina 68.43393 0.2116271
1:Victor 79.18386 0.2116271
2:Jason 43.71483 0.2116271
2:Jim 42.08250 0.2116271
2:Ron 58.44521 0.2116271
2:Tina 44.73748 0.2116271
2:Victor 36.33979 0.2116271
$Subject
(Intercept) Caffeine
Jason 30.40435 0.2116271
Jim 79.30537 0.2116271
Ron 13.06175 0.2116271
Tina 54.12216 0.2116271
Victor 132.69770 0.2116271
আমার সেরা বাজি ছিল ...
> coef(fit2)[[1]][2,1]
[1] 94.96442
> coef(fit2)[[2]][2,1]
[1] 79.30537
> coef(fit2)[[1]][2,2]
[1] 0.2116271
> data$Caffeine[1]
[1] 95
> coef(fit2)[[1]][2,1] + coef(fit2)[[2]][2,1] + coef(fit2)[[1]][2,2] * data$Caffeine[1]
[1] 194.3744
পরিবর্তে সূত্রটি কী পেতে হবে 132.45609
?
দ্রুত অ্যাক্সেসের জন্য সম্পাদনা করুন ... পূর্বাভাসকৃত মান গণনা করার সূত্র (গৃহীত উত্তর অনুসারে ranef(fit2)
আউটপুট ভিত্তিক হবে :
> ranef(fit2)
$`Time:Subject`
(Intercept)
0:Jason 13.112130
0:Jim 33.046151
0:Ron -3.197895
0:Tina 8.893985
0:Victor 24.392738
1:Jason -2.068105
1:Jim -9.260334
1:Ron -4.428399
1:Tina 6.515667
1:Victor 17.265589
2:Jason -18.203436
2:Jim -19.835771
2:Ron -3.473053
2:Tina -17.180791
2:Victor -25.578477
$Subject
(Intercept)
Jason -31.513915
Jim 17.387103
Ron -48.856516
Tina -7.796104
Victor 70.779432
... প্রথম প্রবেশের পয়েন্টের জন্য:
> summary(fit2)$coef[1]
[1] 61.91827 # Overall intercept for Fixed Effects
> ranef(fit2)[[1]][2,]
[1] 33.04615 # Time:Subject random intercept for Jim
> ranef(fit2)[[2]][2,]
[1] 17.3871 # Subject random intercept for Jim
> summary(fit2)$coef[2]
[1] 0.2116271 # Fixed effect slope
> data$Caffeine[1]
[1] 95 # Value of caffeine
summary(fit2)$coef[1] + ranef(fit2)[[1]][2,] + ranef(fit2)[[2]][2,] +
summary(fit2)$coef[2] * data$Caffeine[1]
[1] 132.4561
এই পোস্টের জন্য কোড এখানে ।
?predict
[r] কনসোলটিতে টাইপ করি তবে আমি {পরিসংখ্যানগুলির জন্য প্রাথমিক অনুমান পেয়েছি ...
predict.merMod
, যদিও ... আপনি ওপিতে দেখতে পাচ্ছেন, আমি সহজভাবে ফোন করেছি predict
...
lme4
প্যাকেজটি লোড করুন , তারপরে lme4 ::: predict.merMod টাইপ করুন প্যাকেজ-নির্দিষ্ট সংস্করণটি দেখতে। আউটপুট lmer
ক্লাসের একটি বস্তুতে সঞ্চিত হয় merMod
।
predict
এটির মতো একটি ফাংশন জানে যে কী করতে হবে সেই অবজেক্টের শ্রেণীর উপর নির্ভর করে যা তাকে কাজ করতে বলা হয়। আপনি ফোন করছিলেন predict.merMod
, আপনি কেবল এটি জানেন না।
predict
এই প্যাকেজটিতে সংস্করণ 1.0-0 থেকে 2013-08-01 প্রকাশিত হয়েছে since দেখুন Cran প্যাকেজ সংবাদ পৃষ্ঠা । যদি না হত তবে আপনি এর সাথে কোনও ফলাফল পেতে সক্ষম হবেন নাpredict
। ভুলে যাবেন না যে আপনি lme4 ::: predict.merMod এর সাথে আর কমান্ড প্রম্পটে আর কোডটি দেখতে পারবেন এবং উত্স প্যাকেজের কোনও অন্তর্নিহিত সংকলিত ফাংশনগুলির জন্য উত্সটি পরীক্ষা করুনlme4
।