আমি কেবল ডিনর্ম () এর সাথে পুনরায় গণনা করার চেষ্টা করছি লগ-লিক ফাংশন দ্বারা সরবরাহ করা লগ-সম্ভাবনাটি কোনও এলএম মডেল (আরে) থেকে।
এটি উচ্চ সংখ্যক ডেটা (যেমন এন = 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
আমি কোথায় ভুল করছি?
সংশোধন করার জন্য স্টাফেনকে ধন্যবাদ তবে এটি এখনও কার্যকর হবে বলে মনে হচ্ছে না
—
গিলস
উত্স কোডটি দেখার চেষ্টা করুন:
—
অনুমানযোগ্য
stats:::logLik.glm
আমি এটি করেছি তবে এই ফাংশনটি লগ-সম্ভাবনা ফিরে পেতে গ্ল্যাম অবজেক্ট থেকে আইিক স্লটটিকে বিপরীত করে। এবং আমি গ্ল্যাম ফাংশনটিতে আইসিক সম্পর্কে কিছুই দেখতে পাচ্ছি না ...
—
গিলস
আমি সন্দেহ করি যে লগলিক এবং এআইসির (যা হিপের সাথে একত্রে আবদ্ধ) এর সাথে এর কিছু সম্পর্ক রয়েছে তা ধরে নিয়েই যে তিনটি পরামিতি অনুমান করা হচ্ছে (slাল, আটকানো, এবং ছড়িয়ে দেওয়া / অবশিষ্ট অবমানক ত্রুটি) যেখানে বিচ্ছুরন / অবশিষ্ট অবধি ত্রুটি গণনা করা হচ্ছে দুটি পরামিতি অনুমান করা হয় (opeালু এবং বিরতি)
—
টম
lm()