মিশ্র ইফেক্ট মডেলগুলির জন্য মডেল ম্যাট্রিকেস


10

ইন lmerফাংশন মধ্যে lme4মধ্যে Rসেখানে র্যান্ডম প্রভাব, মডেল ম্যাট্রিক্স নির্মাণের জন্য একটি কল , যেমন ব্যাখ্যা করেছেন এখানে , পৃষ্ঠা 7 - 9।Z

গণনা করা হচ্ছে entails দুটি ম্যাট্রিক্সের, এর KhatriRao এবং / অথবা Kronecker পণ্য J_i এবং x_iZJiXi

ম্যাট্রিক্স Ji : "গ্রুপিং ফ্যাক্টর সূচকগুলির সূচক ম্যাট্রিক্স", তবে ডামি কোডিংয়ের সাথে এটি একটি স্পার্স ম্যাট্রিক্স বলে মনে হচ্ছে কোন ইউনিট (উদাহরণস্বরূপ, পুনরাবৃত্তিমূলক পরিমাপের বিষয়গুলি) উচ্চতর শ্রেণিবিন্যাসের স্তরগুলির সাথে সম্পর্কিত "চালু" আছে কোন পর্যবেক্ষণ। Xi ম্যাট্রিক্স নিম্ন হায়ারারকিকাল স্তরের পরিমাপ একটি নির্বাচক হিসাবে কাজ করতে, যাতে উভয় "নির্বাচকরা" সমন্বয় একটি ম্যাট্রিক্স উত্পাদ, হবে বলে মনে হয় Zi ফর্ম নিম্নলিখিত উদাহরণে মাধ্যমে কাগজে সচিত্র সংখ্যা:

(f<-gl(3,2))

[1] 1 1 2 2 3 3
Levels: 1 2 3

(Ji<-t(as(f,Class="sparseMatrix")))

6 x 3 sparse Matrix of class "dgCMatrix"
     1 2 3
[1,] 1 . .
[2,] 1 . .
[3,] . 1 .
[4,] . 1 .
[5,] . . 1
[6,] . . 1

(Xi<-cbind(1,rep.int(c(-1,1),3L)))
     [,1] [,2]
[1,]    1   -1
[2,]    1    1
[3,]    1   -1
[4,]    1    1
[5,]    1   -1
[6,]    1    1

এই ম্যাট্রিকের প্রতিটি ট্রান্সপোস করা এবং খত্রি-রাও গুণ করা:

[111111]*[111111-11-11-11]=[11-1111-1111-11]

তবে হ'ল এটি স্থানান্তর:জেডআমি

(Zi<-t(KhatriRao(t(Ji),t(Xi))))

6 x 6 sparse Matrix of class "dgCMatrix"

[1,] 1 -1 .  . .  .
[2,] 1  1 .  . .  .
[3,] .  . 1 -1 .  .
[4,] .  . 1  1 .  .
[5,] .  . .  . 1 -1
[6,] .  . .  . 1  1

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

ভিজ্যুয়াল সরলতার জন্য আমি ডেটা সেটটিকে কেবলমাত্র "309", "330" এবং "371" - এ তিনটি বিষয়ের মধ্যে কমিয়েছি:

require(lme4)
sleepstudy <- sleepstudy[sleepstudy$Subject %in% c(309, 330, 371), ]
rownames(sleepstudy) <- NULL

প্রতিটি পৃথক পৃথক পৃথক বাধা প্রদর্শন করবে এবং slালগুলি একটি সরল ওএলএস প্রতিরোধকে পৃথকভাবে বিবেচনা করা উচিত, যা উচ্চতর শ্রেণিবদ্ধ বা বিষয়গুলির সাথে ইউনিট স্তরের মিশ্র-প্রভাব মডেলের প্রয়োজনের পরামর্শ দেয়:

    par(bg = 'peachpuff')
    plot(1,type="n", xlim=c(0, 12), ylim=c(200, 360),
             xlab='Days', ylab='Reaction')
    for (i in sleepstudy$Subject){
            fit<-lm(Reaction ~ Days, sleepstudy[sleepstudy$Subject==i,])
            lines(predict(fit), col=i, lwd=3)
            text(x=11, y=predict(fit, data.frame(Days=9)), cex=0.6,labels=i)
        }

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

মিশ্র-প্রভাবের রিগ্রেশন কলটি হ'ল:

fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)

এবং ফাংশন থেকে উত্তোলিত ম্যাট্রিক্স নিম্নলিখিত ফলন করে:

parsedFormula<-lFormula(formula= Reaction~Days+(Days|Subject),data= sleepstudy)
parsedFormula$reTrms

$Ztlist
$Ztlist$`Days | Subject`
6 x 12 sparse Matrix of class "dgCMatrix"

309 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . . . . .
309 0 1 2 3 4 5 6 7 8 9 . . . . . . . . . . . . . . . . . . . .
330 . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . .
330 . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 . . . . . . . . . .
371 . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1
371 . . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9

এটি সঠিক বলে মনে হচ্ছে, তবে এটি যদি হয় তবে এর পিছনে লিনিয়ার বীজগণিতটি কী? আমি বুঝতে চাইছি সারিগুলির সারিগুলির 1মতো ব্যক্তির নির্বাচন। উদাহরণস্বরূপ, 309বেসলাইন + নয় পর্যবেক্ষণের জন্য বিষয় চালু রয়েছে, সুতরাং এটি চারটি 1এবং এর থেকে আরও বেশি হয়। দ্বিতীয় অংশটি স্পষ্টভাবে আসল পরিমাপ: 0বেসলাইনের 1জন্য, ঘুম বঞ্চনার প্রথম দিনের জন্য ইত্যাদি etc.

তবে আসল এবং ম্যাট্রিক্স এবং সংশ্লিষ্ট বা , যেগুলি প্রাসঙ্গিক?জেআমি জেড আই = ( জে টি আইএক্স টি আই ) জেড আই = ( জে টি আই আমিএক্স টি আই ) এক্সআমি জেডআমি=(জেআমিটি*এক্সআমিটি) জেডআমি=(জেআমিটিএক্সআমিটি)

এখানে একটি সম্ভাবনা আছে,

[111111111111111111111111111111]*[11111111110123456789]=

[111111111101234567891111111111012345678911111111110123456789]

সমস্যাটি হ'ল এটি স্থানান্তরিত নয় কারণ lmerফাংশনটি কল করার জন্য বলে মনে হচ্ছে এবং তৈরি করার জন্য নিয়মগুলি কী তা এখনও অস্পষ্ট ।এক্সআমি


1
আপনি এটি তৈরি করার চেয়ে এটি অনেক সহজ। এখানকার ম্যাট্রিক্সটি হ'ল ডিজাইনের ম্যাট্রিক্স সহ একটি পরিচয় ম্যাট্রিক্সের ক্রোনেকার পণ্য ( জেড
ডনি 21

আপনার ইঙ্গিত জন্য ধন্যবাদ। আমি এই ফাংশনের লিনিয়ার বীজগণিত কঙ্কালের সমস্ত উপ-অনিয়মকে বোঝার কাজ করে যাব। যদি এটি জায়গায় ক্লিক করে, আমি এগিয়ে যাব এবং আমার নিজের প্রশ্নের উত্তর দেব, তবে যদিও আমি জানি গভীর-ডাউন সরল, তবে গণিতের ভারা নামকরণ এবং কোনও উদাহরণের প্রয়োগের মধ্যে চিঠিপত্র বিভ্রান্তিকর।
আন্তনি পরল্লদা

1
আপনার জন্য আরও একটি ভাল উত্স হতে পারে তাদের lme4pureR বাস্তবায়ন, যা উপরের চিত্রের সাথে অনুসরণ করে এবং সম্পূর্ণরূপে আরতে লেখা হয় Maybe সম্ভবত mkZt()(এটি এখানে অনুসন্ধান করুন ) ভাল শুরু?
আলেক্সফোরেন্স

উত্তর:


5
  1. ম্যাট্রিক্স তৈরি করা 10 টি পর্যবেক্ষণ বা পরিমাপ ( ) সহ প্রতিটি স্তরের 3 , ( এবং ) উত্পাদন করে । ওপিতে মূল লিঙ্কে কোড অনুসরণ করা:জেআমি309330371nrow(sleepstudy[sleepstudy$Subject==309,]) [1] 10

f <- gl(3,10) Ji<-t(as(f,Class="sparseMatrix"))

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

  1. রেফারেন্স হিসাবে ফাংশনটি ব্যবহার করে ম্যাট্রিক্স নির্মাণে সহায়তা করা যেতে পারে :এক্সআমিgetME

    library(lme4) sleepstudy <- sleepstudy[sleepstudy$Subject %in% c(309, 330, 371), ] rownames(sleepstudy) <- NULL fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)

Xi <- getME(fm1,"mmList")

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

যেহেতু আমাদের ট্রান্সপোজের প্রয়োজন হবে এবং অবজেক্টটি Xiম্যাট্রিক্স নয়, তাই t(Xi)এটি তৈরি করা যেতে পারে:

t_Xi <- rbind(c(rep(1,30)),c(rep(0:9,3)))

  1. জেডআমি কে গণনা করা হয় :জেডআমি=(জেআমিটি*এক্সআমিটি)

Zi<-t(KhatriRao(t_Ji,t_Xi)):

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

এটি মূল কাগজে সমীকরণ (6) এর সাথে মিলে যায় :

জেডআমি=(জেআমিটি*এক্সআমিটি)টি=[জেআমি1টিএক্সআমি1টিজেআমি2টিএক্সআমি2টিজেআমিএনটিএক্সআমিএনটি]

এবং এটি দেখতে আমরা এর পরিবর্তে ছাঁটা এবং ম্যাট্রিক্সের সাথে কল্পনা করতে পারি যে 9 টি পরিমাপ এবং একটি বেসলাইন (0) এর পরিবর্তে কেবলমাত্র 1 টি পরিমাপ (এবং একটি বেসলাইন) রয়েছে। ফলাফল ম্যাট্রিকগুলি হবে:জেআমিটিএক্সআমিটি

জেআমিটি=[110000001100000011] এবং ।এক্সআমিটি=[111111010101]

এবং

জেআমিটি*এক্সআমিটি=[(100)(10)(100)(11)(010)(10)(010)(11)(001)(10)(001)(11)]

=[Ji1TXi1TJi2TXi2TJi3TXi3TJi4TXi4TJi5TXi5TJi6TXi6T]

=[110000010000001100000100000011000001] । যা স্থানান্তরিত হয়েছে এবং প্রসারিত হবে তার ফলে ।Zi=[100000110000120000001000001100001200000010000011000012]

  1. এলোমেলো প্রভাবের সহগের ভেক্টর এক্সট্র্যাক্ট করে ফাংশনটি দিয়ে কাজ করা যেতে পারে:b

b <- getME(fm1,"b")

[1,] -44.1573839
[2,]  -2.4118590
[3,]  32.8633489
[4,]  -0.3998801
[5,]  11.2940350
[6,]   2.8117392

যদি আমরা কলটির স্থির-প্রভাবগুলিতে এই মানগুলি যুক্ত করি তবে fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)আমরা ইন্টারসেপ্টগুলি পাই:

205.3016 for 309; 282.3223 for 330; and 260.7530 for 371

এবং opালু:

2.407141 for 309; 4.419120 for 330; and 7.630739 for 371

মানগুলি এর সাথে সামঞ্জস্যপূর্ণ:

library(lattice)
xyplot(Reaction ~ Days | Subject, groups = Subject, data = sleepstudy, 
       pch=19, lwd=2, type=c('p','r'))

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

  1. Zb হিসাবে গণনা করা যেতে পারে as.matrix(Zi)%*%b
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.