টুকরোজ লিনিয়ার ফাংশন থেকে ডেটা পরিবর্তনের পয়েন্ট সন্ধান করা


10

গ্রিটিংস,

আমি এমন গবেষণা করছি যা পর্যবেক্ষণ করা জায়গার আকার এবং বিগ ব্যাংয়ের পর থেকে যে সময় অতিবাহিত হয়েছে তা নির্ধারণ করতে সহায়তা করবে। আশা করি আপনি সাহায্য করতে পারেন!

আমার কাছে টুকরোচক লিনিয়ার ফাংশন অনুসারে ডেটা রয়েছে যার উপর আমি দুটি লিনিয়ার রিগ্রেশন করতে চাই perform একটি পয়েন্ট রয়েছে যেখানে atাল এবং আটকানো পরিবর্তিত হয় এবং আমার এই পয়েন্টটি খুঁজে পেতে (একটি প্রোগ্রাম লিখতে হবে) দরকার।

থটস?


3
ক্রস পোস্টিংয়ের নীতি কী? ঠিক একই প্রশ্নটি math.stackexchange.com এ জিজ্ঞাসা করা হয়েছিল: math.stackexchange.com/questions/15214/…
এমপিক্টাস

এক্ষেত্রে সাধারণ অ-রৈখিক সর্বনিম্ন স্কোয়ারগুলি করার ক্ষেত্রে কী ভুল? আমি কি স্পষ্ট কিছু মিস করছি?
grg s

আমি বলব যে পরিবর্তনের পয়েন্টের পরামিতিগুলির সাথে শ্রদ্ধার সাথে লক্ষ্য ফাংশনের ডেরাইভেটিভটি
তুলনামূলকভাবে

Slাল এতটা পরিবর্তিত হবে যে কোনও অ-রৈখিক সর্বনিম্ন স্কোয়ার সংক্ষিপ্ত এবং নির্ভুল হবে না। আমরা যা জানি তা হল আমাদের দুটি বা ততোধিক রৈখিক মডেল রয়েছে, সুতরাং সেই দুটি মডেলটি বের করার জন্য আমাদের স্ট্রাইক করা উচিত।
হ্যালো ওয়ার্ল্ড

উত্তর:


1

mcpপ্যাকেজ এটা করতে পারেন। আপনার ডেটা বলে

প্রথমে কিছু তথ্য অনুকরণ করা যাক:

df = data.frame(x = 1:100,
                y = c(rnorm(40, 10 + (1:40)*0.5),
                      rnorm(60, 10 + 40*0.5 -8 + (1:60)*0.2)))

এখন দেখা যাক আমরা 40 (এবং প্যারামিটার মান) ব্যবহার করে পরিবর্তন পয়েন্টটি পুনরুদ্ধার করতে পারি কিনা mcp:

model = list(
  y ~ 1 + x,  # linear segment
  ~ 1 + x  # another linear segment
)
library(mcp)
fit = mcp(model, df)

এটি প্লট করুন। ধূসর রেখাগুলি ফিট থেকে এলোমেলোভাবে আঁকা, এটি দেখায় যে এটি প্রবণতাটি ক্যাপচার করে। নীল বক্ররেখা আনুমানিক পরিবর্তন বিন্দুর অবস্থান:

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

আসুন স্বতন্ত্র পরামিতি অনুমানগুলি দেখুন। int_হ'ল ইন্টারসেপ্ট, x_এক্সে andালু এবং cp_পরিবর্তনের পয়েন্ট:

summary(fit)

Population-level parameters:
    name  mean lower upper Rhat n.eff
    cp_1 40.48 40.02 41.00    1  2888
   int_1 11.12  9.11 13.17    1   778
   int_2 21.72 20.09 23.49    1   717
 sigma_1  3.23  2.76  3.69    1  5343
     x_1  0.46  0.36  0.54    1   724
     x_2  0.21  0.16  0.26    1   754

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


8

আর প্যাকেজ স্ট্রুচেঞ্জ আপনাকে সাহায্য করতে পারে। ভিগনেটটি দেখুন, অনুরূপ সমস্যাগুলি কীভাবে সমাধান করা যায় এটির একটি সুন্দর ওভারভিউ রয়েছে।


6

যদি পয়েন্টের সংখ্যা খুব বেশি না হয় তবে আপনি সমস্ত সম্ভাবনার চেষ্টা করতে পারেন। আসুন ধরে নেওয়া যাক পয়েন্টগুলি যেখানে । চেয়ে আপনার সাথে লুপ পারে থেকে থেকে এবং দুই লাইন মাপসই উভয় এবং । অবশেষে, আপনি বাছুন যার জন্য উভয় লাইনের জন্য স্কোয়ারের অবশিষ্টাংশের যোগফলের পরিমাণ সর্বনিম্ন।Xi=(xi,yi)i=1,..,Nj2N2{X1,...,Xj}{X(j+1),...,XN}j


আমি আপনার সহজ কিন্তু কার্যকর পরামর্শের ভিত্তিতে একটি উত্তর পোস্ট করেছি।
হ্যালোওয়ার্ল্ড

5

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


3

এছাড়াও সেগমেন্টযুক্ত প্যাকেজটি অতীতে একই ধরণের সমস্যার সাথে আমাকে সহায়তা করেছে।


দুর্ভাগ্যক্রমে, প্যাকেজটির ব্রেক-পয়েন্টের জন্য একটি প্রারম্ভিক মান প্রয়োজন।
হ্যালো ওয়ার্ল্ড

এছাড়াও, segmentedবিভাগগুলির মধ্যে ইন্টারসেপ্ট-পরিবর্তনগুলি মডেল করতে পারে না - কেবলমাত্র প্রথম বিভাগের জন্য একটি বিরতি।
জোনাস লিন্ডেলভ

2

আমি এমবিকিউর উত্তরে তৈরি করেছি যে সমস্ত সম্ভাবনার সন্ধান করছে। তদুপরি, আমি এটি করি:

  • গুণাগুণগুলি তাত্পর্যপূর্ণ তা নিশ্চিত করার জন্য দুটি পিসওয়াইজ মডেলের তাত্পর্য পরীক্ষা করে দেখুন
  • পূর্ণ মডেলের জন্য স্কোয়ারের অবশিষ্টাংশের যোগফলের পার্থক্যটি পরীক্ষা করুন
  • আমার মডেলটি চাক্ষুষভাবে নিশ্চিত করুন (নিশ্চিত করুন এটি কিছু বাজে কিছু নয়)

তাত্পর্য কেন পরীক্ষা করে দেখুন? এটি কারণ ন্যূনতম এসএসই সহ পয়েন্টটি অর্থহীন যদি পিসওয়াস মডেলগুলির কোনওটিই খুব খারাপভাবে ডেটা ফিট করে। এটি highlyালু পরিবর্তিত হয় এমন স্পষ্ট ব্রেকপয়েন্ট ব্যতীত দু'টি অত্যন্ত সংযুক্ত ভেরিয়েবলের জন্য ঘটতে পারে।

আসুন একটি সহজ পরীক্ষার কেস সহ এই সহজ পদ্ধতির চেক করুন:

x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)

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

ব্রেকপয়েন্টটি স্পষ্টতই শূন্য। নিম্নলিখিত আর স্ক্রিপ্ট ব্যবহার করুন:

f <- function(x, y)
{
    d <- data.frame(x=x, y=y)
    d <- d[order(x),]
    r <- data.frame(k=rep(0,length(x)-4), sums=rep(0,length(x)-4))

    plm <- function(i)
    {
        d1 <- head(d,i)
        d2 <- tail(d,-i)

        # Make sure we've divided the region perfectly        
        stopifnot(nrow(d1)+nrow(d2) == nrow(d))

        m1 <- lm(y~x, data=d1)
        m2 <- lm(y~x, data=d2)

        r <- list(m1, m2)
        r
    }

    lapply(2:(nrow(d)-3), function(i)
    {
        r$k[i-2] <<- d[i,]$x

        # Fit two piecewise linear models
        m <- plm(i)

        # Add up the sum of squares for residuals
        r$sums[i-2] <<- sum((m[[1]]$residuals)^2) + sum((m[[2]]$residuals)^2)
    })

    b <- r[which.min(r$sums),]    
    b
}

সমস্ত সম্ভাব্য সংমিশ্রণের জন্য টুকরোজ লিনিয়ার মডেলগুলি ফিট করুন:

f(x,y)
   k sums
   0    0

আমরা যদি দুটি অনুকূল মডেলের জন্য সহগগুলি পরীক্ষা করি তবে সেগুলি অত্যন্ত তাৎপর্যযুক্ত হবে। তাদের আর 2ও খুব বেশি হবে।

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