একাধিক অজানা নট দিয়ে কীভাবে পিসওয়্যার লিনিয়ার রিগ্রেশন করবেন?


14

টুকরোচক লিনিয়ার রিগ্রেশন করার জন্য কি কোনও প্যাকেজ রয়েছে, যা একাধিক নট স্বয়ংক্রিয়ভাবে সনাক্ত করতে পারে? ধন্যবাদ। আমি যখন স্ট্রোকঞ্জ প্যাকেজটি ব্যবহার করি। আমি পরিবর্তন পয়েন্টগুলি সনাক্ত করতে পারি না। এটি কীভাবে পরিবর্তনের পয়েন্টগুলি সনাক্ত করে তা আমার কোনও ধারণা নেই। প্লটগুলি থেকে, আমি দেখতে পেলাম যে আমি চাই যে এটি বেশিরভাগ পয়েন্ট রয়েছে যা এগুলি বেছে নিতে আমাকে সহায়তা করতে পারে। এখানে কেউ উদাহরণ দিতে পারে?


1
এটি stats.stackexchange.com/questions/5700/… হিসাবে একই প্রশ্ন হিসাবে উপস্থিত বলে মনে হচ্ছে । যদি এটি কোনও উল্লেখযোগ্য উপায়ে পৃথক হয়, দয়া করে পার্থক্যগুলি প্রতিফলিত করতে আপনার প্রশ্ন সম্পাদনা করে আমাদের জানান; অন্যথায়, আমরা এটি সদৃশ হিসাবে বন্ধ করব।
whuber

1
আমি প্রশ্নটি সম্পাদনা করেছি।
হংকং ওয়াং

1
আমি মনে করি আপনি এটি একটি অ-রৈখিক অপ্টিমাইজেশান সমস্যা হিসাবে করতে পারেন। গুণমানগুলি এবং গাঁটের অবস্থানগুলিকে পরামিতি হিসাবে লাগানোর জন্য কেবল ফাংশনের সমীকরণটি লিখুন।
999

1
আমি মনে করি segmentedপ্যাকেজটি আপনি যা খুঁজছেন তা is
আলেফসিন

1
আমার অভিন্ন সমস্যা ছিল, আর এর segmentedপ্যাকেজটি দিয়ে এটি সমাধান হয়েছে : stackoverflow.com/a/18715116/857416
একটি আলাদা বেন

উত্তর:


8

হায় MARS প্রযোজ্য? আর এর প্যাকেজ রয়েছে earthযা এটি কার্যকর করে।


8

সাধারণভাবে, কিছু টুকরা অনুসারে রৈখিক হিসাবে ফিট করতে কিছুটা বিজোড় d তবে, আপনি যদি সত্যিই এটি করতে চান, তবে মার্স অ্যালগরিদম সবচেয়ে সরাসরি। এটি একবারে একটি গিঁট ফাংশন তৈরি করবে; এবং তারপরে সাধারণত অতিরিক্ত-ফিটিং আলা সিদ্ধান্তের গাছগুলিকে লড়াই করার জন্য গিঁটের সংখ্যাটি ছাঁটাই করে। আপনি R এর মাধ্যমে MARS অ্যালগোথিম অ্যাক্সেস করতে পারেন earthবা এর মাধ্যমে mda। সাধারণভাবে, এটি জিসিভির সাথে ফিট রয়েছে যা এখনও অন্য তথ্য মানদণ্ড (এআইসি, বিআইসিসি ইত্যাদি) থেকে সরিয়ে নেই with

নটগুলি একবারে বড় হওয়ার পরে মার্স সত্যিই আপনাকে "অনুকূল" ফিট দেয় না। গিঁটের স্থান নির্ধারণের সম্ভাব্য ক্রমগুলি দ্রুত বিস্ফোরিত হবার কারণে সত্যিকারের "অনুকূল" সংখ্যার নট ফিট করা সত্যিই কঠিন হবে।

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

এখানে দণ্ডিত লিনিয়ার স্মুথযুক্ত স্প্লাইমের জন্য কয়েকটি উদাহরণ কোড দেওয়া হয়েছে:

require(mgcv);data(iris);
gam.test <- gam(Sepal.Length ~ s(Petal.Width,k=6,bs='ps',m=0),data=iris)
summary(gam.test);plot(gam.test);

প্রকৃত নটগুলি বেছে নেওয়া অগত্যা কোনও সত্য প্রতিচ্ছবি পয়েন্টগুলির সাথে সম্পর্কিত নয়।


3

আমি কয়েক বছর আগে একবার এটি স্ক্র্যাচ থেকে প্রোগ্রাম করেছি এবং আমার কম্পিউটারে পিস-ভিত্তিক লিনিয়ার রিগ্রেশন করার জন্য আমার একটি মতলব ফাইল রয়েছে। প্রায় 1 থেকে 4 ব্রেকপয়েন্টগুলি প্রায় 20 পরিমাপের পয়েন্ট বা তার জন্য কমপিটেশনালভাবে সম্ভব। 5 বা 7 ব্রেক পয়েন্টগুলি সত্যই খুব বেশি হতে শুরু করে।

খাঁটি গাণিতিক পদ্ধতির হিসাবে আমি দেখতে পাচ্ছি আপনার প্রশ্নের নীচের মন্তব্যে লিঙ্কযুক্ত প্রশ্নে ব্যবহারকারী এমবিকিউ দ্বারা প্রস্তাবিত সমস্ত সম্ভাব্য সংমিশ্রণের চেষ্টা করা।

যেহেতু লাগানো লাইনগুলি সমস্ত ক্রমাগত এবং সংলগ্ন (কোনও ওভারল্যাপ নেই) সংযুক্তিগুলি পাস্কাল ত্রিভুজটি অনুসরণ করবে। যদি লাইন বিভাগগুলি দ্বারা ব্যবহৃত ডেটা পয়েন্টগুলির মধ্যে ওভারল্যাপ থাকে তবে আমি বিশ্বাস করি যে সংযোজকগুলি পরিবর্তে দ্বিতীয় ধরণের স্ট্র্লিং নম্বরগুলি অনুসরণ করবে।

আমার মনের সেরা সমাধানটি লাগানো লাইনগুলির সংমিশ্রণটি বেছে নেওয়া উচিত যা লাগানো লাইনের আর lation 2 পারস্পরিক সম্পর্কের মানগুলির সর্বনিম্ন স্ট্যান্ডার্ড বিচ্যুতি রয়েছে। আমি একটি উদাহরণ দিয়ে ব্যাখ্যা করার চেষ্টা করব। মনে রাখবেন যে ডেটাতে কয়টি ব্রেক পয়েন্ট পাওয়া উচিত তা জিজ্ঞাসা করা "ব্রিটেনের উপকূল কত দিন?" যেমন ফ্রোকাল সম্পর্কে বেনোইট ম্যান্ডেলব্রোটস (একজন গণিতবিদ) এর পেপারে। এবং ব্রেক পয়েন্ট এবং রিগ্রেশন গভীরতার মধ্যে একটি বাণিজ্য বন্ধ রয়েছে।

এখন উদাহরণ হিসাবে।

Yএক্সএক্সY

এক্সYআর2আমিএন1আর2আমিএন2গুলিতোমার দর্শন লগ করামিআর2বনামএকটিতোমার দর্শন লগ করাগুলিগুলিটিএকটিএনএকটিRবনামআমিএকটিটিআমিএনআর2111,0000,04001,04000,6788221,0000,01181,01180,6987331,0000,00041,00040,7067441,0000,00311,00310,7048551,0000,01351,01350,6974661,0000,02381,02380,6902771,0000,02771,02770,6874881,0000,02221,02220,6913991,0000,00931,00930,700410101,000-1,9781,0000,70711190,97090,02710,99800,66731280,89510,11391,00900,55231370,77340,25581,02920,36591460,61340,43211,04550,12811550,43210,61341,04550,12821640,25580,77331,02910,36591730,11390,89511,00900,55231820,02720,97080,99800,667219101,0001,0000,70712020,00941,0001,00940,70042130,02221,0001,02220,69142240,02781,0001,02780,68742350,02391,0001,02390,69022460,01361,0001,01360,69742570,00321,0001,00320,70482680,00041,0001,00040,70682790,01181,0001,01180,698728100,041,0001,040,6788

এই y মানগুলির গ্রাফ রয়েছে:

আদর্শ ডেটা

যা স্পষ্টভাবে দুটি বিরতি পয়েন্ট আছে। যুক্তির স্বার্থে আমরা আর ^ 2 পারস্পরিক সম্পর্কের মান গণনা করব (এক্সেল সেল সূত্রগুলির সাথে (ইউরোপীয় ডট-কমা শৈলী)):

=INDEX(LINEST(B1:$B$1;A1:$A$1;TRUE;TRUE);3;1)
=INDEX(LINEST(B1:$B$28;A1:$A$28;TRUE;TRUE);3;1)

দুটি লাগানো লাইনের সমস্ত অ-ওভারল্যাপিং সংমিশ্রণের জন্য । আর ^ 2 মানের সমস্ত সম্ভাব্য জোড়গুলির গ্রাফ রয়েছে:

আর ^ 2 মান

প্রশ্নটি হল যে আমাদের আর values ​​2 মানগুলির কোন জোয়ারটি বেছে নেওয়া উচিত এবং শিরোনামে জিজ্ঞাসা করা আমরা কীভাবে একাধিক ব্রেক পয়েন্টগুলিতে সাধারণীকরণ করব? একটি পছন্দ হ'ল সংমিশ্রণটি বেছে নেওয়া যার জন্য আর-স্কোয়ার পারস্পরিক সম্পর্কের যোগফল সর্বাধিক। এটি প্লট করে আমরা নীচের উপরের নীল বক্ররেখা পেতে:

আর স্কোয়ারের আর স্কোয়ারের মান বিচ্যুতির যোগফল

1,0455

পিস অনুযায়ী লিনিয়ার রিগ্রেশন - মতলব - একাধিক ব্রেক পয়েন্ট points


1

টোমে এবং মিরান্দায় বর্ণিত একটি দুর্দান্ত সুন্দর অ্যালগরিদম রয়েছে (1984)

প্রস্তাবিত পদ্ধতিটি নির্ধারিত সময় সিরিজের সাথে মানানসই সর্বনিম্ন-স্কোয়ার পদ্ধতির ব্যবহার করে যা ব্রেকপয়েন্টগুলির মধ্যে সর্বনিম্ন দূরত্ব এবং প্রতিটি ব্রেকপয়েন্টে সর্বনিম্ন প্রবণতা পরিবর্তনের ক্ষেত্রে বিভিন্ন সীমাবদ্ধতার অধীন straight

কোড এবং একটি জিইউআই তাদের ওয়েবসাইট ফোর্টরান এবং আইডিএল উভয়তে উপলব্ধ: http://www.dfisica.ubi.pt/~artome/linearstep.html


0

... প্রথমে আপনাকে অবশ্যই এটিগুলি পুনরাবৃত্তির মাধ্যমে করতে হবে এবং কিছু তথ্যমূলক মানদণ্ডের অধীনে, যেমন এআইসি এআইসিসি বিআইসি সিপি; কারণ আপনি একটি "আদর্শ" ফিট পেতে পারেন, যদি নট সংখ্যার কে = সংখ্যা ওড ডেটা পয়েন্ট এন করে, ঠিক আছে। ... প্রথমে কে = 0; L = K + 1 রিগ্রেশনগুলি অনুমান করুন, উদাহরণস্বরূপ এআইসিসি গণনা করুন; তারপরে একটি পৃথক বিভাগে ন্যূনতম সংখ্যার ডেটা পয়েন্ট ধরে ধরে, এল = 3 বা এল = 4 বলুন, ঠিক আছে ... কে = 1 দিন; প্রথম নট হিসাবে এল-থের ডেটা থেকে শুরু করুন, এসএস বা এমএলই গণনা করুন ... এবং ধাপে ধাপে নট, এসএস বা এমএলই হিসাবে পরবর্তী ডাটা পয়েন্টে এন - এল ডেটাতে শেষ নট পর্যন্ত; সেরা ফিট (এসএস বা এমএলই) হিসাবটি এআইসিসি গণনা সহ চয়ন করুন ... ... কে = 2 দিন; ... পূর্ববর্তী সমস্ত নিবন্ধগুলি (এটি তাদের এসএস বা এমএলই) ব্যবহার করুন তবে ধাপে ধাপে একটি একক বিভাগকে সমস্ত সম্ভাব্য অংশে বিভক্ত করুন ... সেরা ফিট (এসএস বা এমএলই) সাথে এআইসিসি গণনা সহ ব্যবস্থাটি বেছে নিন ... শেষের আইআইসিসি যদি এরপরে ঘটে থাকে তবে আগেরটি: পুনরাবৃত্তিগুলি বন্ধ করুন! এটি এআইসিসির মানদণ্ডের অধীনে একটি অনুকূল সমাধান, ঠিক আছে


এআইসি, বিআইসি ব্যবহার করা যাবে না কারণ তারা অতিরিক্ত পরামিতিগুলির জন্য দণ্ডিত হয়েছিল, যা এখানে স্পষ্টভাবে নয়।
হ্যালো ওয়ার্ল্ড

0

আমি একবার জয়েনপয়েন্ট নামক একটি প্রোগ্রাম জুড়ে এসেছি । তাদের ওয়েবসাইটে তারা বলে এটি একটি জোড়পয়েন্ট মডেল ফিট করে যেখানে "জোড়পয়েন্টে" বিভিন্ন লাইন একসাথে যুক্ত হয়েছে "। এবং আরও: "ব্যবহারকারী ন্যূনতম এবং সর্বাধিক সংখ্যক জোড় সংখ্যার সরবরাহ করে The প্রোগ্রামটি ন্যূনতম সংখ্যার জোয়েন্টপয়েন্ট (যেমন 0 জোড় সংযোগগুলি, যা একটি সরল রেখা) দিয়ে শুরু হয় এবং আরও জোড়পয়েন্টগুলি পরিসংখ্যানগতভাবে তাত্পর্যপূর্ণ কিনা এবং তা মডেলটিতে যুক্ত করা আবশ্যক কিনা তা পরীক্ষা করে (সর্বাধিক সংখ্যা পর্যন্ত) "

এনসিআই এটি ক্যান্সারের হারের ট্রেন্ড মডেলিংয়ের জন্য ব্যবহার করে, সম্ভবত এটি আপনার প্রয়োজনের সাথেও খাপ খায়।


0

টুকরা দিকের ফাংশনে ডেটাতে ফিট করার জন্য:

এখানে চিত্র বর্ণনা লিখুন

একটি1,একটি2,পি1,কুই1,পি2,কুই2,পি3,কুই3

এখানে চিত্র বর্ণনা লিখুন

উদাহরণস্বরূপ, ম্যাটস গ্রানভিকের দেওয়া সঠিক ডেটা সহ ফলাফলটি:

এখানে চিত্র বর্ণনা লিখুন

বিক্ষিপ্ত ডেটা ব্যতীত, এই উদাহরণটি খুব তাৎপর্যপূর্ণ নয়। বিক্ষিপ্ত ডেটা সহ অন্যান্য উদাহরণগুলি রেফারেন্সড পেপারে দেখানো হয়েছে।


0

আপনি mcpযদি প্যাকেজটি ব্যবহার করতে পারেন তবে আপনি যদি অনুমানের পরিবর্তন পয়েন্টের সংখ্যা জানেন। এটি আপনাকে দুর্দান্ত মডেলিংয়ের নমনীয়তা এবং পরিবর্তন পয়েন্টগুলি এবং রিগ্রেশন প্যারামিটারগুলি সম্পর্কে প্রচুর তথ্য দেয় তবে গতির দামে।

এমসিপি ওয়েবসাইটে অনেকগুলি প্রয়োগকৃত উদাহরণ রয়েছে যেমন,

library(mcp)

# Define the model
model = list(
  response ~ 1,  # plateau (int_1)
  ~ 0 + time,    # joined slope (time_2) at cp_1
  ~ 1 + time     # disjoined slope (int_3, time_3) at cp_2
)

# Fit it. The `ex_demo` dataset is included in mcp
fit = mcp(model, data = ex_demo)

তারপরে আপনি কল্পনা করতে পারেন:

plot(fit)

এখানে চিত্র বর্ণনা লিখুন

বা সংক্ষিপ্তসার:

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: response ~ 1
  2: response ~ 1 ~ 0 + time
  3: response ~ 1 ~ 1 + time

Population-level parameters:
    name match  sim  mean lower  upper Rhat n.eff
    cp_1    OK 30.0 30.27 23.19 38.760    1   384
    cp_2    OK 70.0 69.78 69.27 70.238    1  5792
   int_1    OK 10.0 10.26  8.82 11.768    1  1480
   int_3    OK  0.0  0.44 -2.49  3.428    1   810
 sigma_1    OK  4.0  4.01  3.43  4.591    1  3852
  time_2    OK  0.5  0.53  0.40  0.662    1   437
  time_3    OK -0.2 -0.22 -0.38 -0.035    1   834

দাবি অস্বীকার: আমি এমসিপির বিকাশকারী।


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