পূর্বাভাস () লিমার মিশ্রিত প্রভাব মডেলগুলির জন্য ফাংশন


27

সমস্যাটি:

আমি অন্যান্য পোস্টে পড়েছি যা [আর] এর 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(শব্দের মানসিক সংজ্ঞা স্মরণ করা), বা এর পাকস্থলিতে গ্রহণ পরীক্ষা করার পূর্বে।MGS।Caffeine

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


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

এর কার্যকারিতা হিসেবে রিকল হার পার্থক্য Emotional Tone, Auditoriumএবং Education:

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


কলের জন্য ডেটা মেঘের লাইনে ফিটিং করার সময়:

fit1 <- lmer(Recall ~ (1|Subject) + Caffeine, data = data)

আমি এই চক্রান্ত পেয়েছি:

নিম্নলিখিত কোড সহ (এতে <কোড> পূর্বাভাস (ফিট 1) </code> এর জন্য কলটি লক্ষ্য করুন):

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

এই পোস্টের জন্য কোড এখানে


3
নোট করুন যে predictএই প্যাকেজটিতে সংস্করণ 1.0-0 থেকে 2013-08-01 প্রকাশিত হয়েছে since দেখুন Cran প্যাকেজ সংবাদ পৃষ্ঠা । যদি না হত তবে আপনি এর সাথে কোনও ফলাফল পেতে সক্ষম হবেন না predict। ভুলে যাবেন না যে আপনি lme4 ::: predict.merMod এর সাথে আর কমান্ড প্রম্পটে আর কোডটি দেখতে পারবেন এবং উত্স প্যাকেজের কোনও অন্তর্নিহিত সংকলিত ফাংশনগুলির জন্য উত্সটি পরীক্ষা করুন lme4
এডিএম

1
ধন্যবাদ, আমি দেখতে পাচ্ছি যে এলোমেলো প্রভাবগুলি উপেক্ষা করা বা অন্তর্ভুক্ত করার সাথে কার্যকারিতা রয়েছে। আপনি কি জানেন যে এটি কোথায় গণনা করা যায়? আমি যদি ?predict[r] কনসোলটিতে টাইপ করি তবে আমি {পরিসংখ্যানগুলির জন্য প্রাথমিক অনুমান পেয়েছি ...
আন্তোনি পারেল্লাদ

@ এডিএম ... হ্যাঁ, এটি আমার কাছে নতুন ... ধন্যবাদ আমি ফোন করি নি predict.merMod, যদিও ... আপনি ওপিতে দেখতে পাচ্ছেন, আমি সহজভাবে ফোন করেছি predict...
আন্তোনি পরেল্লদা

1
lme4প্যাকেজটি লোড করুন , তারপরে lme4 ::: predict.merMod টাইপ করুন প্যাকেজ-নির্দিষ্ট সংস্করণটি দেখতে। আউটপুট lmerক্লাসের একটি বস্তুতে সঞ্চিত হয় merMod
এডিএম

4
আর এর অন্যতম সৌন্দর্য হ'ল predictএটির মতো একটি ফাংশন জানে যে কী করতে হবে সেই অবজেক্টের শ্রেণীর উপর নির্ভর করে যা তাকে কাজ করতে বলা হয়। আপনি ফোন করছিলেন predict.merMod, আপনি কেবল এটি জানেন না।
এডিএম

উত্তর:


25

আপনি কল করার সময় সহগের উপস্থাপনা দ্বারা বিভ্রান্ত হওয়া সহজ coef(fit2)। ফিট 2 এর সংক্ষিপ্তসারটি দেখুন:

> summary(fit2)
Linear mixed model fit by REML ['lmerMod']
Formula: Recall ~ (1 | Subject/Time) + Caffeine
   Data: data
REML criterion at convergence: 444.5

Scaled residuals: 
 Min       1Q   Median       3Q      Max 
-1.88657 -0.46382 -0.06054  0.31430  2.16244 

Random effects:
 Groups       Name        Variance Std.Dev.
 Time:Subject (Intercept)  558.4   23.63   
 Subject      (Intercept) 2458.0   49.58   
 Residual                  675.0   25.98   
Number of obs: 45, groups:  Time:Subject, 15; Subject, 5

Fixed effects:
Estimate Std. Error t value
(Intercept) 61.91827   25.04930   2.472
Caffeine     0.21163    0.07439   2.845

Correlation of Fixed Effects:
 (Intr)
Caffeine -0.365

0.212 এর ক্যাফিন সহগ সহ, মডেলটির জন্য সামগ্রিকভাবে cept১.৯২ এর বিরতি রয়েছে। সুতরাং ক্যাফিনের জন্য = 95 আপনি গড় 82.06 রিকাল পূর্বাভাস করেন।

ব্যবহারের পরিবর্তে, নীড়ের পরবর্তী উচ্চ স্তরের গড় বিরতি থেকে প্রতিটি এলোমেলো-প্রভাব ইন্টারসেপ্টের পার্থক্য পেতে coefব্যবহার ranefকরুন:

> 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

টাইম = 0 এ জিমের মানগুলি তার Subject এবং তার Time:Subjectসহগ উভয়ের যোগফলের দ্বারা 82.06 এর গড় মান থেকে পৃথক হবে :

82,06+ +17.39+ +33,04=132,49

যা আমি মনে করি 132.46 এর রাউন্ডিং ত্রুটির মধ্যে রয়েছে।

ফিরে আসা ইন্টারসেপ্ট মানগুলি coefসামগ্রিক ইন্টারসেপ্ট প্লাস Subjectবা Time:Subjectনির্দিষ্ট পার্থক্যের প্রতিনিধিত্ব করে বলে মনে হয় , সুতরাং সেগুলির সাথে কাজ করা আরও কঠিন; আপনি যদি coefমানগুলির সাথে উপরের গণনাটি করার চেষ্টা করেন তবে আপনি সামগ্রিক ইন্টারসেপ্টকে দ্বিগুণ গণনা করতে পারবেন।


ধন্যবাদ! এই অসামান্য ছিল! আমি এটা খুলতে যাব যে কোন বিন্দু আছে ... এই হল তা মনে করি না উত্তর, তাই নয় কি?
আন্তনি পরেল্লদা

আমি ranefআর কোড পরীক্ষা করে দেখানোর ইঙ্গিত পেয়েছি lme4। আমি কয়েকটি জায়গায় উপস্থাপনাটি পরিষ্কার করেছিলাম।
এডিএম

(+1) দ্রষ্টব্য: সময়ের মধ্যে এলোমেলো প্রভাবগুলি কোনওরকম অদ্ভুত দেখায় within
মাইকেল এম

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