দ্রষ্টব্য : আমি আমার ওয়েবসাইটে এই উত্তরটির একটি বর্ধিত সংস্করণ পোস্ট করেছি ।
প্রকৃত আর ইঞ্জিনটি প্রকাশের সাথে আপনি কি অনুরূপ উত্তর পোস্ট করার জন্য দয়া করে বিবেচনা করবেন?
নিশ্চিত! খরগোশের গর্তের নীচে আমরা যাই।
প্রথম স্তরটি হ'ল lm
, ইন্টারফেসটি আরআর প্রোগ্রামার দ্বারা প্রকাশিত। আপনি কেবল lm
আর কনসোলটিতে টাইপ করে এর উত্সটি দেখতে পারেন । এর বেশিরভাগ (বেশিরভাগ উত্পাদন স্তরের কোডের সংখ্যাগরিষ্ঠের মতো) ইনপুটগুলি পরীক্ষা করতে, অবজেক্টের বৈশিষ্ট্যগুলি নির্ধারণ এবং ত্রুটি ছুঁড়ে ব্যস্ত; কিন্তু এই লাইন আটকানো
lm.fit(x, y, offset = offset, singular.ok = singular.ok,
...)
lm.fit
অন্য আর ফাংশন, এটি আপনি নিজে কল করতে পারেন। lm
সুবিধামত সূত্র এবং ডেটা ফ্রেমের সাথে কাজ করার সময় , lm.fit
ম্যাট্রিক্স চায়, যাতে বিমূর্তির এক স্তর সরানো থাকে। lm.fit
আরও ব্যস্ততার জন্য এবং নিম্নলিখিত সত্যই আকর্ষণীয় লাইনের উত্সটি পরীক্ষা করা
z <- .Call(C_Cdqrls, x, y, tol, FALSE)
এখন আমরা কোথাও পাচ্ছি। .Call
সি কোডে কল করার R এর উপায়। আর কোথাও আর উত্সে সি ফাংশন, সি_সিডিকিউর্লস রয়েছে এবং আমাদের এটি সন্ধান করা দরকার। এটি এখানে ।
সি ফাংশনটি আবার দেখলে আমরা বেশিরভাগ সীমা পরীক্ষা করা, ত্রুটি পরিষ্কার করা এবং ব্যস্ত কাজের সন্ধান করি। তবে এই লাইনটি আলাদা
F77_CALL(dqrls)(REAL(qr), &n, &p, REAL(y), &ny, &rtol,
REAL(coefficients), REAL(residuals), REAL(effects),
&rank, INTEGER(pivot), REAL(qraux), work);
আর এখন আমরা আমাদের তৃতীয় ভাষাটিতে আছি, আরআর সি বলেছে যা ফোরআরানে কল করছে। এখানে ফরটারন কোড দেওয়া আছে ।
প্রথম মন্তব্যটি সব বলে দেয়
c dqrfit is a subroutine to compute least squares solutions
c to the system
c
c (1) x * b = y
(মজার বিষয় হল দেখে মনে হচ্ছে কিছুটা সময় এই রুটিনটির নাম পরিবর্তন করা হয়েছিল তবে কেউ মন্তব্যটি আপডেট করতে ভুলে গেছেন)। সুতরাং আমরা শেষ অবধি যেখানে আমরা কিছু লিনিয়ার বীজগণিত করতে পারি এবং আসলে সমীকরণের সিস্টেমটি সমাধান করতে পারি। এটি এই ধরণের জিনিস যা দুর্ভাগ্য সত্যিই ভাল, এটি ব্যাখ্যা করে যে আমরা কেন এতগুলি স্তর পেরিয়ে এখানে এসেছি।
কোডটি কী করতে চলেছে তা মন্তব্যটিতেও ব্যাখ্যা করা হয়েছে
c on return
c
c x contains the output array from dqrdc2.
c namely the qr decomposition of x stored in
c compact form.
সুতরাং ফরট্রান পচন আবিষ্কার করে সিস্টেমটি সমাধান করতে চলেছে ।প্রশ্ন আর
প্রথম যেটি ঘটে তা হ'ল এবং এখন পর্যন্ত সবচেয়ে গুরুত্বপূর্ণ
call dqrdc2(x,n,n,p,tol,k,qraux,jpvt,work)
এই ফোরট্রান ফাংশন কল dqrdc2
আমাদের ইনপুট ম্যাট্রিক্স উপর x
। এটা কী?
c dqrfit uses the linpack routines dqrdc and dqrsl.
সুতরাং আমরা অবশেষে এটি লিনপ্যাক করে ফেলেছি । লিনপ্যাক একটি গৌণ লিনিয়ার বীজগণিত গ্রন্থাগার যা 70 এর দশক থেকে প্রায়। বেশিরভাগ গুরুতর রৈখিক বীজগণিত ইভেন্টটি লিনপ্যাকের পথে খুঁজে পায়। আমাদের ক্ষেত্রে, আমরা dqrdc2 ফাংশনটি ব্যবহার করছি
c dqrdc2 uses householder transformations to compute the qr
c factorization of an n by p matrix x.
এখানেই আসল কাজটি করা হয়। এই কোডটি কী করছে তা নির্ধারণ করতে আমার পুরো দিনটি লাগবে, এগুলি যত নিচু স্তর রয়েছে। তবে সাধারণভাবে, আমাদের একটি ম্যাট্রিক্স এবং আমরা এটির একটি পণ্য এক্স = কিউ আর রূপান্তর করতে চাই যেখানে Q হল একটি অর্থোগোনাল ম্যাট্রিক্স এবং আর একটি উচ্চতর ত্রিভুজাকার ম্যাট্রিক্স। এটি করার জন্য একটি স্মার্ট জিনিস, কারণ একবার আপনার Q এবং R থাকলে আপনি রিগ্রেশনের জন্য লিনিয়ার সমীকরণগুলি সমাধান করতে পারেনএক্সএক্স= প্রশ্ন আরপ্রশ্নঃআরপ্রশ্নঃআর
এক্সটিএক্সβ= এক্সটিওয়াই
খুব সহজভাবে. প্রকৃতপক্ষে
এক্সটিএক্স= আরটিপ্রশ্নঃটিপ্রশ্ন আর = আরটিআর
সুতরাং পুরো সিস্টেম হয়ে যায়
আরটিআর β= আরটিপ্রশ্নঃটিY
তবে উচ্চতর ত্রিভুজাকৃতির এবং এক্স টি এক্স এর সমান র্যাঙ্কযুক্ত রয়েছে , সুতরাং যতক্ষণ না আমাদের সমস্যাটি ভালভাবে উত্থিত হয় ততক্ষণ এটি সম্পূর্ণ পদমর্যাদার, এবং আমরা কেবল হ্রাস করা সিস্টেমটি সমাধান করতে পারিআরএক্সটিএক্স
আর β= প্রশ্নটিY
আরconstant * beta_n = constant
βএনβপ্রশ্নঃআর