আর-তে একটি এনএলএস মডেলের জন্য সঠিক প্রারম্ভিক মানগুলি পাওয়া


12

আমি নিম্নলিখিত হিসাবে একটি ডেটা সেট একটি সাধারণ শক্তি আইন মডেল ফিট করার চেষ্টা করছি:

mydf:

rev     weeks
17906.4 1
5303.72 2
2700.58 3
1696.77 4
947.53  5
362.03  6

লক্ষ্যটি হ'ল পাওয়ার লাইনটি পেরিয়ে যাওয়া এবং এটি ব্যবহার করা revভবিষ্যতের সপ্তাহের জন্য ভ্যাল্যগুলি পূর্বাভাস দেওয়ার জন্য। একগুচ্ছ গবেষণা আমাকে nlsফাংশনে নিয়ে গেছে, যা আমি নীচে প্রয়োগ করেছিলাম।

newMod <- nls(rev ~ a*weeks^b, data=modeldf, start = list(a=1,b=1))
predict(newMod, newdata = data.frame(weeks=c(1,2,3,4,5,6,7,8,9,10)))

এটি কোনও lmমডেলের পক্ষে কাজ করার সময় , আমি একটি singular gradientত্রুটি পেয়েছি, যা আমি বুঝতে পারি যে আমার শুরুর মানগুলি aএবং এর সাথে করণীয় b। আমি বিভিন্ন মানগুলি চেষ্টা করেছিলাম এমনকি এমনকি এক্সেলে এটির পরিকল্পনা করতে, লোন পাস করতে, একটি সমীকরণ পেতে, তারপরে সমীকরণ থেকে মানগুলি ব্যবহার করার চেষ্টা করেও তবুও ত্রুটি পেয়েছি। আমি অনেক বিষয়ে উত্তর একটি গুচ্ছ দিকে তাকিয়ে এই এক এবং দ্বিতীয় উত্তর (প্রথম বুঝতে পারিনি) চেষ্টা করেছি, কিন্তু কোন ফলাফল করতে।

সঠিক আরম্ভের মানগুলি কীভাবে খুঁজে পাওয়া যায় সে সম্পর্কে আমি এখানে সত্যিই কিছু সহায়তা ব্যবহার করতে পারি। বা বিকল্পভাবে, আমি এনএলএসের পরিবর্তে অন্য কোন ফাংশনটি ব্যবহার করতে পারি।

আপনি যদি mydfস্বাচ্ছন্দ্যে পুনরায় তৈরি করতে চান :

mydf <- data.frame(rev=c(17906.4, 5303.72, 2700.58 ,1696.77 ,947.53 ,362.03), weeks=c(1,2,3,4,5,6)) 

1
যদিও আর এর শর্তে বর্ণিত হয়েছে (এটি সত্যিই কিছু ভাষায় বিবৃত করতে হবে), অ-রৈখিক মডেল ফিটের জন্য উপযুক্ত প্রারম্ভিক মানগুলি কীভাবে সন্ধান করা যায় তা এখানে বিষয়ভিত্তিক হওয়ার পরিসংখ্যানগত, আইএমও। এটি আসলে কোনও প্রোগ্রামিং কিউ নয়, যেমন।
গুং - মনিকা পুনরায়

উত্তর:


13

ননলাইনার সর্বনিম্ন স্কোয়ার মডেলগুলির ক্ষেত্রে এটি একটি সাধারণ সমস্যা; যদি আপনার শুরুর মানগুলি সর্বোত্তম থেকে খুব দূরে থাকে তবে অ্যালগরিদমটি রূপান্তর করতে পারে না, যদিও এটি সর্বোত্তমের নিকটে ভাল আচরণ করা যেতে পারে।

যদি আপনি উভয় পক্ষের লগগুলি নিয়ে শুরু করেন এবং লিনিয়ার মডেলটি ফিট করেন তবে আপনি এবং theাল এবং ইন্টারসেপ্ট হিসাবে (9.947 এবং -2.011) হিসাবে প্রাক্কলন পাবেন (সম্পাদনা করুন: এটি প্রাকৃতিক লগ)লগ(একটি)

আপনি যদি এগুলি ব্যবহার এবং এবং জন্য প্রাথমিক মানগুলিকে গাইড করার জন্য সবকিছু ঠিকঠাক বলে মনে হচ্ছে:একটি

 newMod <- nls(rev ~ a*weeks^b, data=mydf, start = list(a=exp(9.947),b=-2.011))
 predict(newMod, newdata = data.frame(weeks=c(1,2,3,4,5,6,7,8,9,10)))
 [1] 17919.2138  5280.7001  2584.0109  1556.1951  1050.1230   761.4947   580.3091   458.6027
 [9]   372.6231   309.4658

এটি অত্যন্ত সহায়ক, আপনাকে অনেক ধন্যবাদ! আপনি কিভাবে এখানে আপনার "একটি" মান পেয়েছেন তা সম্পর্কে আমার একটি প্রশ্ন আছে। আমি lm (লগ 10 (রেভ) ~ লগ 10 (সপ্তাহ)) চালানোর চেষ্টা করেছি এবং তারপরে "সংক্ষিপ্তসার" ফাংশনটি ব্যবহার করে এবং যখন আমি একই "বি" মান পাই, তখন আমার "a" মানটি 4.3201 এ চলে আসে। আপনি একটি = 9.947 এ পৌঁছানোর জন্য আলাদাভাবে কি করেছিলেন?
নিওন ব্লুহায়ার

লক্ষ্য করুন যে আমি expএটিকে অবরুদ্ধ হওয়া মানগুলিতে ফিরিয়ে নিয়েছি , এটি একটি সূত্র যা ইঙ্গিত করে যে আমি প্লেইন logফাংশনটি ব্যবহার করেছি । আপনি যে লগ এবং অ্যান্টলোগটি ব্যবহার করেন তার সাথে সামঞ্জস্য থাকা অবধি আপনি প্রারম্ভিক মানের জন্য একই উত্তর পাবেন। সুতরাং আপনি বেস 10 করতে পারেন এবং আমি বেস করতে পারি এবং সব কিছু একই।
গ্লেন_বি -রিনস্টেট মনিকা

আহ, তুমি পুরোপুরি ঠিক আমার পক্ষ থেকে অপেশাদার ভুল। গাণিতিক স্বরলিপিটি "লগ" অর্থ লগ বেস 10 এবং প্রাকৃতিক লগের জন্য "ln" প্রত্যাশার বিষয়ে চিন্তাভাবনা রাখে। স্পষ্টতার জন্য ধন্যবাদ।
নিওন ব্লুহায়ার

1
অনেক গণিতবিদ (এবং অনেক পরিসংখ্যানবিদদের) কাছে একটি অজানা "লগ" হ'ল প্রাকৃতিক লগ, যতটা পাপ ফাংশন সম্পর্কে অযৌক্তিক যুক্তি রেডিয়ানে থাকে। [সংঘর্ষবিরোধী সম্মেলনগুলি দুর্ভাগ্যক্রমে, বিভ্রান্তির কারণ হতে পারে, তবে আমি যখন আর ব্যবহার শুরু করি, উদাহরণস্বরূপ, আর-এর পরে আমি লগ ফাংশনটি ব্যবহারের বিষয়ে দু'বার ভাবিনি এবং আমি একই সম্মেলনটি ভাগ করে
নিয়েছি

4

চেষ্টা

 newMod <- nls(rev ~ a*weeks^b, data=mydf, startlist(a=17919.2127344,b=-1.76270557120))

আমাকে এই উত্তরটি কিছুটা প্রসারিত করতে বলা হয়েছে। এই সমস্যাটি এত সহজ যে আমি একরকম অবাক হয়েছি যে এতে এনএলএস ব্যর্থ হয়। আসল সমস্যাটি সম্পূর্ণ আর পদ্ধতির এবং ননলাইনার মডেল ফিটিংয়ের দর্শনের সাথে। বাস্তব বিশ্বে x-1 এবং 1 এবং y এবং y এর মধ্যে 0 an 1 (y = ax ^ b) এর মধ্যে মিথ্যা বলতে x স্কেল করে। এটি সম্ভবত রূপান্তর করতে এনএলএস পেতে যথেষ্ট হবে। অবশ্যই গ্লেন পয়েন্ট হিসাবে আপনি একই লগ লিনিয়ার মডেল ফিট করতে পারেন। এটি এই বাস্তবতার উপর নির্ভর করে যে একটি সাধারণ রূপান্তর রয়েছে যা মডেলকে লিনিয়ারাইজ করে। এটি প্রায়শই হয় না। এনএলএসের মতো আর রুটিনগুলির সমস্যা হ'ল তারা মডেলটির পুনঃনির্মাণের জন্য সমর্থন সরবরাহ করে না। এক্ষেত্রে পুনরায় সংশোধন সহজ, কেবল পুনরুদ্ধার / সাম্প্রতিক এক্স এবং ওয়াই। তবে মডেলটি ফিট করার সাথে ব্যবহারকারীর মূল প্যারামিটার থেকে a এবং b এর বিভিন্ন পরামিতি থাকবে। যদিও এগুলি থেকে মূলগুলি গণনা করা সহজ তবে অন্যটি অসুবিধাটি হ'ল এই পরামিতিগুলির অনুমানের জন্য অনুমিত স্ট্যান্ডার্ড বিচ্যুতিগুলি পাওয়া সাধারণভাবে এত সহজ নয়। এটি ডেল্টা পদ্ধতি দ্বারা সম্পন্ন হয়েছে যা লগ-সম্ভাবনার হেসিয়ান এবং কিছু ডেরাইভেটিভকে অন্তর্ভুক্ত করে। ননলাইনার প্যারামিটার অনুমানের সফ্টওয়্যারটির উচিত এই গণনাগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করা উচিত, যাতে মডেলটির পুনঃনির্মাণ সহজেই সমর্থিত হয়। সফ্টওয়্যারটির আরেকটি জিনিস সমর্থন করা উচিত তা হ'ল পর্যায়গুলির ধারণা। গ্লেনের সংস্করণ দিয়ে প্রথম ধাপ 1 হিসাবে মডেলটিকে ফিট করার কথা ভাবতে পারেন "আসল" মডেলটি দ্বিতীয় পর্যায়ে ফিট fit অন্যান্য অসুবিধাটি হ'ল এই প্যারামিটারের অনুমানের জন্য অনুমিত স্ট্যান্ডার্ড বিচ্যুতিগুলি পাওয়া এত সাধারণ বিষয় নয়। এটি ডেল্টা পদ্ধতি দ্বারা সম্পন্ন হয়েছে যা লগ-সম্ভাবনার হেসিয়ান এবং কিছু ডেরাইভেটিভকে অন্তর্ভুক্ত করে। ননলাইনার প্যারামিটার অনুমানের সফ্টওয়্যারটির উচিত এই গণনাগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করা উচিত, যাতে মডেলটির পুনঃনির্মাণ সহজেই সমর্থিত হয়। সফ্টওয়্যারটির আরেকটি জিনিস সমর্থন করা উচিত তা হ'ল পর্যায়গুলির ধারণা। গ্লেনের সংস্করণ দিয়ে প্রথম ধাপ 1 হিসাবে মডেলটিকে ফিট করার কথা ভাবতে পারেন "আসল" মডেলটি দ্বিতীয় পর্যায়ে ফিট fit অন্যান্য অসুবিধাটি হ'ল এই প্যারামিটারের অনুমানের জন্য অনুমিত স্ট্যান্ডার্ড বিচ্যুতিগুলি পাওয়া এত সাধারণ বিষয় নয়। এটি ডেল্টা পদ্ধতি দ্বারা সম্পন্ন হয়েছে যা লগ-সম্ভাবনার হেসিয়ান এবং কিছু ডেরাইভেটিভকে অন্তর্ভুক্ত করে। ননলাইনার প্যারামিটার অনুমানের সফ্টওয়্যারটির উচিত এই গণনাগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করা উচিত, যাতে মডেলটির পুনঃনির্মাণ সহজেই সমর্থিত হয়। সফ্টওয়্যারটির আরেকটি জিনিস সমর্থন করা উচিত তা হ'ল পর্যায়গুলির ধারণা। গ্লেনের সংস্করণ দিয়ে প্রথম ধাপ 1 হিসাবে মডেলটিকে ফিট করার কথা ভাবতে পারেন "আসল" মডেলটি দ্বিতীয় পর্যায়ে ফিট fit ননলাইনার প্যারামিটার অনুমানের সফ্টওয়্যারটির উচিত এই গণনাগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করা উচিত, যাতে মডেলটির পুনঃনির্মাণ সহজেই সমর্থিত হয়। সফ্টওয়্যারটির আরেকটি জিনিস সমর্থন করা উচিত তা হ'ল পর্যায়গুলির ধারণা। গ্লেনের সংস্করণ দিয়ে প্রথম ধাপ 1 হিসাবে মডেলটিকে ফিট করার কথা ভাবতে পারেন "আসল" মডেলটি দ্বিতীয় পর্যায়ে ফিট fit ননলাইনার প্যারামিটার অনুমানের সফ্টওয়্যারটির উচিত এই গণনাগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করা উচিত, যাতে মডেলটির পুনঃনির্মাণ সহজেই সমর্থিত হয়। সফ্টওয়্যারটির আরেকটি জিনিস সমর্থন করা উচিত তা হ'ল পর্যায়গুলির ধারণা। গ্লেনের সংস্করণ দিয়ে প্রথম ধাপ 1 হিসাবে মডেলটিকে ফিট করার কথা ভাবতে পারেন "আসল" মডেলটি দ্বিতীয় পর্যায়ে ফিট fit

আমি আপনার মডেলটিকে অ্যাডি মডেল বিল্ডারের সাথে ফিট করে যা প্রাকৃতিক উপায়ে পর্যায়ক্রমে সমর্থন করে। প্রথম পর্যায়ে শুধুমাত্র একটি অনুমান করা হয়েছিল। এটি আপনার মডেলটি বলপার্কে প্রবেশ করবে। দ্বিতীয় পর্যায়ে a এবং b সমাধান পাওয়ার অনুমান করা হয়। এডি মডেল বিল্ডার ডেল্টা পদ্ধতির মাধ্যমে মডেল প্যারামিটারগুলির যে কোনও ক্রিয়াকলাপের জন্য স্বয়ংক্রিয়ভাবে স্ট্যান্ডার্ড বিচ্যুতিগুলি গণনা করে যাতে এটি মডেলের স্থিতিশীল পুনঃনির্ধারণকে উত্সাহ দেয়।


2

লেভেনবার্গ-মার্কোয়ার্ড অ্যালগরিদম সাহায্য করতে পারে:

modeldf <- data.frame(rev=c(17906.4, 5303.72, 2700.58 ,1696.77 ,947.53 ,362.03), weeks=c(1,2,3,4,5,6))

require(minpack.lm)
fit <- nlsLM(rev ~ a*weeks^b, data=modeldf, start = list(a=1,b=1))

require(broom)
fit_data <- augment(fit)

plot(.fitted~rev, data=fit_data)

1

আমার অভিজ্ঞতায় এনএলআর মডেলগুলির পরামিতিগুলির জন্য মান শুরু করার একটি ভাল উপায় হ'ল বিবর্তনীয় অ্যালগরিদম ব্যবহার করা। প্রাথমিক অনুসন্ধান জনগোষ্ঠীর (100) এলোমেলো অনুমানের (পিতামাতারা) অনুসন্ধানের জায়গাগুলি সেরা 20 (বংশধর) চয়ন করুন এবং এগুলি একটি সফল জনগোষ্ঠীর অনুসন্ধানকে সংজ্ঞায়িত করতে সহায়তা করতে ব্যবহার করুন। একত্রিত হওয়া অবধি পুনরাবৃত্তি করুন। গ্রেডিয়েন্ট বা হেসিয়ানদের দরকার নেই, কেবল এসএসই মূল্যায়ন। যদি আপনি খুব লোভী না হন তবে এটি প্রায়শই কাজ করে। লোকেরা প্রায়শই সমস্যাগুলি হ'ল তারা বিশ্বব্যাপী অনুসন্ধানের কাজটি সম্পাদনের জন্য স্থানীয় অনুসন্ধান (নিউটন-রাফসন) ব্যবহার করছে are সর্বদা হিসাবে এটি হাতের কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করার বিষয়। নিউটনের স্থানীয় অনুসন্ধানের জন্য শুরুর মানগুলি খুঁজে পাওয়ার জন্য EA গ্লোবাল অনুসন্ধান ব্যবহার করা আরও বোধগম্য হয় এবং এরপরে এটি সর্বনিম্নে নামিয়ে দেওয়া যায়। তবে, সমস্ত কিছুর মতোই শয়তানও বিশদে রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.