একটি সাধারণ আর এলএম মডেল থেকে লগ-সম্ভাবনা পুনরায় গণনা করুন


10

আমি কেবল ডিনর্ম () এর সাথে পুনরায় গণনা করার চেষ্টা করছি লগ-লিক ফাংশন দ্বারা সরবরাহ করা লগ-সম্ভাবনাটি কোনও এলএম মডেল (আরে) থেকে।

এটি উচ্চ সংখ্যক ডেটা (যেমন এন = 1000) এর জন্য (প্রায় নিখুঁত) কাজ করে:

> n <- 1000
> x <- 1:n
> set.seed(1)
> y <- 10 + 2*x + rnorm(n, 0, 2)
> mod <- glm(y ~ x, family = gaussian)
> logLik(mod)
'log Lik.' -2145.562 (df=3)
> sigma <- sqrt(summary(mod)$dispersion)
> sum(log(dnorm(x = y, mean = predict(mod), sd = sigma)))
[1] -2145.563
> sum(log(dnorm(x = resid(mod), mean = 0, sd = sigma)))
[1] -2145.563

তবে ছোট ডেটাসেটের জন্য স্পষ্ট পার্থক্য রয়েছে:

> n <- 5
> x <- 1:n
> set.seed(1)
> y <- 10 + 2*x + rnorm(n, 0, 2)
> 
> mod <- glm(y ~ x, family = gaussian)
> logLik(mod)
'log Lik.' -8.915768 (df=3)
> sigma <- sqrt(summary(mod)$dispersion)
> sum(log(dnorm(x = y, mean = predict(mod), sd = sigma)))
[1] -9.192832
> sum(log(dnorm(x = resid(mod), mean = 0, sd = sigma)))
[1] -9.192832

ছোট ডেটাসেট এফেক্টের কারণে আমি ভেবেছিলাম এটি এলএম এবং গ্ল্যামের মধ্যে অবশিষ্টাংশের অনুমানের পার্থক্যের কারণে হতে পারে তবে এলএম ব্যবহার করলে গ্ল্যামের মতো একই ফলাফল পাওয়া যায়:

> modlm <- lm(y ~ x)
> logLik(modlm)
'log Lik.' -8.915768 (df=3)
> 
> sigma <- summary(modlm)$sigma
> sum(log(dnorm(x = y, mean = predict(modlm), sd = sigma)))
[1] -9.192832
> sum(log(dnorm(x = resid(modlm), mean = 0, sd = sigma)))
[1] -9.192832

আমি কোথায় ভুল করছি?


2
lm()σ^σ^

সংশোধন করার জন্য স্টাফেনকে ধন্যবাদ তবে এটি এখনও কার্যকর হবে বলে মনে হচ্ছে না
গিলস

উত্স কোডটি দেখার চেষ্টা করুন:stats:::logLik.glm
অনুমানযোগ্য

আমি এটি করেছি তবে এই ফাংশনটি লগ-সম্ভাবনা ফিরে পেতে গ্ল্যাম অবজেক্ট থেকে আইিক স্লটটিকে বিপরীত করে। এবং আমি গ্ল্যাম ফাংশনটিতে আইসিক সম্পর্কে কিছুই দেখতে পাচ্ছি না ...
গিলস

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

উত্তর:


12

logLik()βjXβσϵ^i2nσ^=ϵ^i2n2σ2

>  n <- 5
>  x <- 1:n
>  set.seed(1)
>  y <- 10 + 2*x + rnorm(n, 0, 2)
>  modlm <- lm(y ~ x)
>  sigma <- summary(modlm)$sigma
> 
>  # value of the likelihood with the "classical" sigma hat
>  sum(log(dnorm(x = y, mean = predict(modlm), sd = sigma)))
[1] -9.192832
> 
>  # value of the likelihood with the ML sigma hat
>  sigma.ML <- sigma*sqrt((n-dim(model.matrix(modlm))[2])/n) 
>  sum(log(dnorm(x = y, mean = predict(modlm), sd = sigma.ML)))
[1] -8.915768
>  logLik(modlm)
'log Lik.' -8.915768 (df=3)

উপায় দ্বারা আপনাকে lme / lmer মডেলগুলির জন্য REML / ML বিকল্পের সাথে একইভাবে সাবধানতা অবলম্বন করতে হবে।
স্টাফেন লরেন্ট

(+1) এটি n-1 বা এটি আসলে ডিনোমিনেটরে এন -2 ? σ^
প্যাট্রিক কৌলম্বে

@ পেট্রিককুলম্ব নং: ইন্টারসেপ্ট + opeাল
স্টাফেন লরেন্ট

ঠিক আছে, এখন পুরোপুরি পরিষ্কার। অনেক ধন্যবাদ ! তবে আপনারা আরইএমএল / এমএল (আমার অনুমান জিআর-এ আমার শেষ পোস্টটি দিয়ে কিছু করার) সাথে কী বোঝায়? দয়া করে ব্যাখ্যা করুন (সেখানে সম্ভবত)। আমি শিখতে চাই !
গিলস 21

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