আমি একটি খুব সাধারণ লিনিয়ার রিগ্রেশন সম্পাদন করতে চাই R
। সূত্রটি মতো সহজ । তবে আমি চাই theাল ( ) একটি বিরতিতে থাকা উচিত, যাক, যাক, 1.4 এবং 1.6 এর মধ্যে।
কিভাবে এই কাজ করা যেতে পারে?
আমি একটি খুব সাধারণ লিনিয়ার রিগ্রেশন সম্পাদন করতে চাই R
। সূত্রটি মতো সহজ । তবে আমি চাই theাল ( ) একটি বিরতিতে থাকা উচিত, যাক, যাক, 1.4 এবং 1.6 এর মধ্যে।
কিভাবে এই কাজ করা যেতে পারে?
উত্তর:
আমি পারফর্ম করতে চাই ... আরে লিনিয়ার রিগ্রেশন ... আমি চাই theালটি একটি বিরতির মধ্যে থাকা উচিত, যাক, যাক, 1.4 এবং 1.6 এর মধ্যে between কিভাবে এই কাজ করা যেতে পারে?
(i) সহজ উপায়:
রিগ্রেশন ফিট। যদি এটি সীমানা হয়, আপনি সম্পন্ন।
যদি এটি সীমানায় না থাকে তবে opeালটিকে নিকটতম সীমানায় সেট করুন এবং
সমস্ত পর্যবেক্ষণের উপরে গড় হিসাবে বিরতি অনুমান করুন ।
(ii) আরও জটিল উপায়: slালের বাক্স সীমাবদ্ধতার সাথে কমপক্ষে স্কোয়ারগুলি করুন; অনেক অপ্টিমাইজটনের রুটিন বক্স সীমাবদ্ধতাগুলি প্রয়োগ করে, যেমন nlminb
(যা আর এর সাথে আসে) তা করে।
সম্পাদনা করুন: আসলে (নীচের উদাহরণে উল্লিখিত হিসাবে), ভ্যানিলা আর-তে, nls
বাক্স সীমাবদ্ধতাগুলি করতে পারে; যেমন উদাহরণে দেখানো হয়েছে, এটি করা খুব সহজ।
আপনি সীমিত প্রতিরোধকে আরও সরাসরি ব্যবহার করতে পারেন; আমি মনে করি pcls
প্যাকেজ "এমজিসিভি" nnls
থেকে ফাংশন এবং প্যাকেজ "এনএনএলএস" উভয়ই ফাংশন করে।
-
ফলোআপ প্রশ্নের উত্তর দিতে সম্পাদনা করুন -
আমি আপনাকে এটি প্রদর্শন করতে যাচ্ছি nlminb
যেহেতু এটি আর এর সাথে আসে তবে আমি বুঝতে পেরেছিলাম যে nls
সীমাবদ্ধ ন্যূনতম স্কোয়ারগুলি বাস্তবায়নের জন্য ইতিমধ্যে একই রুটিনগুলি (পোর্ট রুটিন) ব্যবহার করে, তাই আমার নীচের উদাহরণটি সেই ক্ষেত্রে কাজ করে।
নোট: নীচে আমার উদাহরণে, হ'ল ইন্টারসেপ্ট এবং হ'ল (পরিসংখ্যানগুলিতে আরও সাধারণ কনভেনশন)। আমি এটি এখানে রাখার পরে আমি বুঝতে পেরেছিলাম যে আপনি অন্য পথে শুরু করেছিলেন; যদিও আপনার প্রশ্নের তুলনায় আমি 'পশ্চাদপদ' উদাহরণটি রেখে যাচ্ছি।
প্রথমে ব্যাপ্তির ভিতরে 'সত্য' opeালু সহ কিছু ডেটা সেট আপ করুন:
set.seed(seed=439812L)
x=runif(35,10,30)
y = 5.8 + 1.53*x + rnorm(35,s=5) # population slope is in range
plot(x,y)
lm(y~x)
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
12.681 1.217
... তবে এলএস অনুমানটি এর বাইরে খুব ভাল, কেবল এলোমেলো পরিবর্তনের কারণে ঘটে। সুতরাং এগুলিতে সীমাবদ্ধ প্রতিরোধটি ব্যবহার করতে দিন nls
:
nls(y~a+b*x,algorithm="port",
start=c(a=0,b=1.5),lower=c(a=-Inf,b=1.4),upper=c(a=Inf,b=1.6))
Nonlinear regression model
model: y ~ a + b * x
data: parent.frame()
a b
9.019 1.400
residual sum-of-squares: 706.2
Algorithm "port", convergence message: both X-convergence and relative convergence (5)
যেমন আপনি দেখতে পাচ্ছেন, আপনি ঠিক সীমানায় একটি opeাল পাবেন। যদি আপনি summary
এটিতে লাগানো মডেলটি পাস করেন তবে এটি স্ট্যান্ডার্ড ত্রুটি এবং টি-মানও তৈরি করতে পারে তবে এগুলি কতটা অর্থবহ / ব্যাখ্যাযোগ্য তা আমি নিশ্চিত নই।
তাহলে আমার পরামর্শ (1) কীভাবে তুলনা করে? (অর্থাত্ নির্ধারণ করুন এবং বিরতি অনুমান করার জন্য গড় গড়ে )
b=1.4
c(a=mean(y-x*b),b=b)
a b
9.019376 1.400000
এটি একই অনুমান ...
নীচের প্লটটিতে নীল রেখাটি সর্বনিম্ন স্কোয়ার এবং লাল রেখাটি সীমাবদ্ধ ন্যূনতম স্কোয়ারগুলি:
nls
এটি করার মাধ্যমে চিত্রিত করেছি।
গ্লেন_ বি এর দ্বিতীয় পদ্ধতি, একটি বাক্স সীমাবদ্ধতার সাথে কমপক্ষে স্কোয়ার ব্যবহার করে রিজ রিগ্রেশন মাধ্যমে আরও সহজেই প্রয়োগ করা যেতে পারে। রিজ রিগ্রেশনের সমাধানটিকে ওয়েট ভেক্টরের আদর্শের (এবং তার slাল) এর আদর্শের প্রস্থের উপর আবদ্ধ একটি রিগ্রেশনটির জন্য লাগাগঞ্জিয়ান হিসাবে দেখা যেতে পারে। সুতরাং নীচে whuber এর পরামর্শ অনুসরণ করে, পদ্ধতির (1.6 + 1.4) / 2 = 1.5 এর একটি ধারাটি বিয়োগ করা হবে এবং তারপরে রিজ রিগ্রেশন প্রয়োগ করা হবে এবং ধীরে ধীরে রিজ প্যারামিটারটি বাড়ানো হবে যতক্ষণ না opeালের পরিধি 0.1 এর চেয়ে কম বা সমান হয়।
এই পদ্ধতির সুবিধাটি হ'ল কোনও অভিনব অপ্টিমাইজেশন সরঞ্জামের প্রয়োজন হয় না, কেবল রিজ রিগ্রেশনন, যা ইতিমধ্যে আরে উপলব্ধ রয়েছে (এবং অন্যান্য অনেকগুলি প্যাকেজ)।
তবে গ্লেন_ বি এর সহজ সমাধান (i) আমার কাছে বোধগম্য মনে হচ্ছে (+1)
এই ফলাফলটি এখনও আগ্রহের প্যারামিটারগুলির বিশ্বাসযোগ্য ব্যবস্থাগুলি দেবে (অবশ্যই এই অন্তরগুলির সার্থকতা slাল সম্পর্কে আপনার পূর্ববর্তী তথ্যের যুক্তিসঙ্গততার ভিত্তিতে হবে)।
আপনার পদ্ধতির অপ্টিমাইজেশান সমস্যা হিসাবে সংশোধন করতে এবং একটি অপ্টিমাইজার ব্যবহার করার জন্য আরেকটি পদ্ধতি হতে পারে। এটিকে এভাবে সংস্কার করা যায় কিনা তা আমি নিশ্চিত নই, তবে আর অপ্টিমাইজারগুলিতে এই ব্লগটি পোস্ট করার সময় আমি এই প্রশ্নটি ভেবেছিলাম:
http://zoonek.free.fr/blosxom/R/2012-06-01_Optimization.html