যখন এলএমের পূর্বাভাসকৃত মানটির কোনও তাত্পর্য না থাকে তখন কেন একটি আর ^ 2 মান হয় (এবং এটি কী নির্ধারণ করছে)?


10

নিম্নলিখিত আর কোড বিবেচনা করুন:

example <- function(n) {
    X <- 1:n
    Y <- rep(1,n)
    return(lm(Y~X))
}
#(2.13.0, i386-pc-mingw32)
summary(example(7))    #R^2 = .1963
summary(example(62))   #R^2 = .4529
summary(example(4540)) #R^2 = .7832
summary(example(104))) #R^2 = 0
#I did a search for n 6:10000, the result for R^2 is NaN for
#n = 2, 4, 16, 64, 256, 1024, 2085 (not a typo), 4096, 6175 (not a typo), and 8340 (not a typo)

এ খুঁজছি http://svn.r-project.org/R/trunk/src/appl/dqrls.f ), সাহায্য করা হয়নি আমাকে বুঝতে কি ঘটছে কারণ আমি ফোরট্রান জানি না। অন্য একটি প্রশ্নের উত্তরে বলা হয়েছিল যে ফ্লোটিং পয়েন্ট মেশিন সহনশীলতার ত্রুটিগুলি এক্স এর নিকটবর্তী সহগের জন্য দোষী ছিল, তবে বেশিরভাগ 0 নয়।

R2 এর চেয়ে বেশি হয় যখন এর মান coef(example(n))["X"]0 এর কাছাকাছি হয় তবে ...

  1. কেন একটি মান আছে? R2
  2. কী (বিশেষভাবে) এটি নির্ধারণ করছে?
  3. NaNফলাফলের আপাতদৃষ্টিতে সুশৃঙ্খল অগ্রগতি কেন ?
  4. সেই অগ্রগতির লঙ্ঘন কেন?
  5. এর 'প্রত্যাশিত' আচরণটি কী?

দ্রষ্টব্য: আমার উত্তর দেখতে আরও গঠনমূলক কিছু দেখতে 7 এর আর ^ 2 0.4542 হওয়া উচিত। :-)

1
ভাল, সত্যি কথা বলতে, ব্যবহারকারীদের সরঞ্জাম ব্যবহারের আগে পরিসংখ্যানগত পদ্ধতি সম্পর্কে আসলে কিছু জানা উচিত বলে মনে করা হয় (এর বিপরীতে, এক্সেল ব্যবহারকারীরা (সস্তা শট সম্পর্কে দুঃখিত,))। যেহেতু এটি স্পষ্টতই স্পষ্ট যে আর ^ 2 ত্রুটি শূন্যের কাছে পৌঁছানোর সাথে সাথে 1 এর কাছে চলেছে, তাই আমরা কোনও ফাংশনের সীমাবদ্ধতার সাথে একটি এনএএন মানকে বিভ্রান্ত করার চেয়ে ভাল জানি। এখন, যদি আর ^ 2 ইয়োনিজ হিসাবে বিভক্ত হওয়ার ক্ষেত্রে সমস্যা ছিল -> 0 (বলুন, এর সাথে ওয়াইয়ের স্টেটমেন্টটি প্রতিস্থাপন করুন Y <- rep(1,n)+runif(n)*ynoise), তবে এটি আকর্ষণীয় হবে :-)
কার্ল উইটহফট

@ এজনমে: আমি মনে করি ফলাফলগুলি মেশিন নির্দিষ্ট, বা কমপক্ষে 32 বা 64 বিট নির্দিষ্ট; আমার কাছে একটি 32-বিট মেশিন রয়েছে যা 7 এর জন্য 0.1963 দেয় তবে আমার 64-বিট মেশিনটি NaN দেয়। মজার বিষয় হল, -৪-বিট মেশিনে, আর ^ 2 গুলি যেগুলি এনএএন নয় তারা সবগুলি 0.5 টির খুব কাছে। আমি যখন এটি সম্পর্কে চিন্তা করি তখন তা উপলব্ধি করে তবে এটি প্রথমে আমাকে অবাক করে।
অ্যারন

1
আপনি দ্বৈত নির্ভুলতা রাউন্ডিং ত্রুটি অধ্যয়ন করছেন। গুণাগুণগুলি একবার দেখুন; যেমন apply(as.matrix(2:17), 1, function(n){example(n)$coefficients[-1]}),। (উইন 7 এক্স 64 জেওনের আমার ফলাফলগুলি -8e-17 থেকে + 3e-16; প্রায় অর্ধেকটি সত্য জিরো। এই কোডটি আপনি দেখতে চান।
whuber

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

উত্তর:


6

বেন বলকার যেমন বলেছেন, এই প্রশ্নের উত্তর কোডের কোডে পাওয়া যাবে summary.lm()

শিরোনাম এখানে:

function (object, correlation = FALSE, symbolic.cor = FALSE, 
    ...) 
{

সুতরাং, আসুন x <- 1:1000; y <- rep(1,1000); z <- lm(y ~ x)এবং তারপরে এই সামান্য পরিবর্তিত এক্সট্রাক্টটি একবার দেখুন:

    p <- z$rank
    rdf <- z$df.residual
    Qr <- stats:::qr.lm(z)
    n <- NROW(Qr$qr)
    r <- z$residuals
    f <- z$fitted.values
    w <- z$weights
    if (is.null(w)) {
        mss <- sum((f - mean(f))^2)
        rss <- sum(r^2)
    }
    ans <- z[c("call", "terms")]
    if (p != attr(z$terms, "intercept")) {
        df.int <- 1L
        ans$r.squared <- mss/(mss + rss)
        ans$adj.r.squared <- 1 - (1 - ans$r.squared) * ((n - 
            df.int)/rdf)
    }

লক্ষ করুন যে, উত্তর $ r.squared হয় ...0.4998923

একটি প্রশ্নের সাথে একটি প্রশ্নের উত্তর দিতে: আমরা এ থেকে কী আঁকবো? :)

আমি বিশ্বাস করি যে উত্তরটি কীভাবে ভাসমান পয়েন্ট সংখ্যা পরিচালনা করে in আমি এটি মনে করি mssএবং rssএটি খুব ছোট (স্কোয়ার্ড) গোলাকার ত্রুটির যোগফল, সুতরাং কারণ প্রায় 0.5। অগ্রগতি হিসাবে, আমি সন্দেহ এই মান রয়েছে তা গণনা এটি (উভয় জন্য +/- অনুমান 0 আউট বাতিল করতে লাগে কি আছে এবং হিসাবে, সম্ভবত এই উৎস মান)। যদিও মানগুলি অগ্রগতির চেয়ে আলাদা হয় তবে আমি জানি না ।R2mssrss0/0NaN2^(1:k)


আপডেট 1: আর-তে আন্ডারফ্লো সতর্কতাগুলির সমাধান করা হয়নি এমন কয়েকটি কারণের জন্য আর-সাহায্যের একটি দুর্দান্ত থ্রেড is

তদতিরিক্ত , এই এসও কিউএন্ডএর আন্ডারফ্লো, উচ্চতর নির্ভুল গাণিতিক ইত্যাদি সম্পর্কিত অনেকগুলি আকর্ষণীয় পোস্ট এবং দরকারী লিঙ্ক রয়েছে has


8

আমি প্রশ্ন জিজ্ঞাসা করার জন্য আপনার অনুপ্রেরণা সম্পর্কে কৌতূহলী। এই আচরণটি হওয়া উচিত এমন কোনও ব্যবহারিক কারণ আমি ভাবতে পারি না ; বৌদ্ধিক কৌতূহল একটি বিকল্প (এবং আইএমও অনেক বেশি বুদ্ধিমান) কারণ। আমি মনে করি এই প্রশ্নের উত্তর দেওয়ার জন্য আপনাকে ফোরট্রান বোঝার দরকার নেই, তবে আমি মনে করি আপনার কিউআর পচন এবং রৈখিক প্রতিরোধে এর ব্যবহার সম্পর্কে জেনে রাখা উচিত। যদি আপনি dqrlsএকটি কালো বাক্স হিসাবে বিবেচনা করে যা কোনও কিউআর পচনকে গণনা করে এবং এ সম্পর্কিত বিভিন্ন তথ্য ফিরিয়ে দেয়, তবে আপনি ধাপগুলি সনাক্ত করতে পারবেন ... বা summary.lmআর -2 কীভাবে গণনা করা হয় তা দেখতে কেবল সোজা গিয়ে সন্ধান করতে পারবেন । নির্দিষ্টভাবে:

mss <- if (attr(z$terms, "intercept")) 
          sum((f - mean(f))^2)
       else sum(f^2)
rss <- sum(r^2)
## ... stuff ...
ans$r.squared <- mss/(mss + rss)

তারপরে আপনাকে ফিরে যেতে হবে lm.fitএবং দেখতে পাবেন যে লাগানো মানগুলি গণনা করা হয়েছে r1 <- y - z$residuals(যেমন প্রতিক্রিয়া বিয়োগের অবশিষ্টাংশ হিসাবে)। এখন আপনি কীভাবে অবশিষ্টাংশের মান নির্ধারণ করেন এবং মানটি বিয়োগের গড়টি হ'ল শূন্য কিনা তা নির্ধারণ করতে পারেন এবং সেখান থেকে গণনার ফলাফলগুলি বের করে ...


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

1
এমএমএস এবং আরএসএস উভয়ই z এর ফলাফল, যা সংক্ষেপ.lm এর ভিতরে থাকা lm অবজেক্টের নাম। সুতরাং, কোনও উত্তরের জন্য সম্ভবত কিউআর পচনের ব্যাখ্যা প্রয়োজন, লিনিয়ার রিগ্রেশনটিতে এর ব্যবহার এবং বিশেষত কিছু বিবরণ QR পচনটি কেন QR পচনটি 0 এর পরিবর্তে 0 এর পরিবর্তে 0 এর সমীকরণের সাথে শেষ হয় তা ব্যাখ্যা করার জন্য কোডের অন্তর্নিহিত R তে ইনস্ট্যান্টেড হিসাবে ব্যাখ্যা করা দরকার ।
রাসেলপিয়ার্স

mssrssR2R2

R2

0

R2R2=1SSerrSStot


1
আপনি কি এমন ব্যবহারিক পরিস্থিতি দিতে পারেন যেখানে এই আচরণটি গুরুত্বপূর্ণ?
বেন বলকার

3
@ ব্র্যান্ডন - আইট্রেটাররা সেখানে হাসিখুশি রাখলেন এবং আপনি তবুও ঝিমিয়ে পড়েছেন !
কার্ল উইথফট

2
@eznme একটি ত্রুটি ভাল হওয়ার পরেও, আইআইইই-75৫৪ পাটিগণিতের বিশ্বে, বিশেষত আইইইই-75৫ 75 জগতে যে সকল স্থানে ভাসমান পয়েন্টের সমস্যা দেখা দেয় সেখানে ধরা খুব শক্ত। এখানে পাঠটি হ'ল এমনকি রুটির সাথে রুটি এবং মাখনের গণনাও খুব সুন্দরভাবে পরিচালনা করা উচিত।
Iterator

2
এই বিবেচনাগুলি বিশেষভাবে গুরুত্বপূর্ণ কারণ তাঁর লেখায় জন চেম্বারস (এস এর প্রবর্তকদের একজন এবং অতএব আর এর একজন "দাদা") নির্ভরযোগ্য কম্পিউটিংয়ের জন্য আর ব্যবহারের উপর জোর দিয়েছিলেন উদাহরণস্বরূপ, চেম্বারগুলি দেখুন, ডেটা অ্যানালাইসিসের জন্য সফটওয়্যার: প্রোগ্রামিং উইথ আর (স্প্রঞ্জার ভার্লাগ ২০০৮): "ডেটা বিশ্লেষণের জন্য গণনা এবং সফ্টওয়্যার বিশ্বাসযোগ্য হওয়া উচিত: তাদের দাবি অনুযায়ী করা উচিত, এবং এটি করতে দেখা যেতে হবে।" [পি। ৩.]
শুক্র

2
সমস্যাটি হ'ল আরও ভাল বা আরও খারাপের জন্য, আর-কোরটি প্রতিরোধক (যেমন তারা দেখছেন) কোডটি অনেকের সাথে সন্ধান করে, অনেকগুলি চেক যা সমস্ত কোণার কেসগুলিতে বাধা দেয় এবং সম্ভাব্য অদ্ভুত ব্যবহারকারীর ত্রুটিগুলি থামিয়ে দেয় - তারা ভয় পায় (আমি মনে করি) এটি (ক) তাদের সময় প্রচুর পরিমাণে নেবে, (খ) কোড বেসটি আরও বেশি বড় এবং আরও বেশি শক্ত করে পড়বে (কারণ আক্ষরিক সহস্রই এই বিশেষ কেস রয়েছে), এবং (গ) সারাক্ষণ এই ধরনের চেক জোর করে কার্যকর করা কমিয়ে দেয়? এমনকি এমন পরিস্থিতিতেও যখন গণনাগুলি বহুবার, বহুবার পুনরাবৃত্তি হয়।
বেন বলকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.