আমি ম্যানুয়াল বহুত্বকীয় প্রসারণ এবং আর `পলি` ফাংশনটি ব্যবহার করার জন্য কেন বিভিন্ন পূর্বাভাস পাচ্ছি?


10

আমি কেন ম্যানুয়াল বহুত্বকীয় প্রসারণ এবং আর polyফাংশন ব্যবহারের জন্য বিভিন্ন পূর্বাভাস পাচ্ছি ?

set.seed(0)
x <- rnorm(10)
y <- runif(10)
plot(x,y,ylim=c(-0.5,1.5))
grid()

# xp is a grid variable for ploting
xp <- seq(-3,3,by=0.01)
x_exp <- data.frame(f1=x,f2=x^2)
fit <- lm(y~.-1,data=x_exp)
xp_exp <- data.frame(f1=xp,f2=xp^2)
yp <- predict(fit,xp_exp)
lines(xp,yp)

# using poly function
fit2 <- lm(y~ poly(x,degree=2) -1)
yp <- predict(fit2,data.frame(x=xp))
lines(xp,yp,col=2)

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

আমার প্রচেষ্টা:

  • এটি ইন্টারসেপ্টের সাথে সমস্যা বলে মনে হচ্ছে, যখন আমি মডেলটিকে ইন্টারসেপ্টের সাথে ফিট করি, অর্থাৎ -1মডেলটিতে নেই formula, দুটি লাইন একই। তবে কেন বাধা ছাড়া দুটি লাইন আলাদা?

  • আর একটি "ফিক্স" rawঅরথোগোনাল বহুবর্ষের পরিবর্তে বহুব্যাপী সম্প্রসারণ ব্যবহার করছে । যদি আমরা কোডটি পরিবর্তন করি তবে fit2 = lm(y~ poly(x,degree=2, raw=T) -1)2 টি লাইন একই করে দেবো। কিন্তু কেন?


4
এটি আপনার প্রশ্ন থেকে প্রকাশিত বিষয়বস্তু নয়, তবে আপনি প্রায়শই মন্তব্য করার পক্ষে খুব খোলা থাকেন। আপনার কোডটি পড়ার সময়, প্রথম যে বিষয়টি আমি লক্ষ্য করি তা হ'ল আপনি ব্যবহার =এবং <-অসম্পূর্ণভাবে নিয়োগের জন্য। আমি সত্যিই এটি করব না, এটি ঠিক বিভ্রান্তিকর নয়, তবে এটি কোনও লাভের জন্য আপনার কোডটিতে প্রচুর ভিজ্যুয়াল শোরগোল যোগ করে। আপনার ব্যক্তিগত কোডটি ব্যবহার করার জন্য আপনার এক বা অন্যটিতে স্থির হওয়া উচিত, এবং কেবল এটির সাথে আটকে থাকুন।
ম্যাথু ড্র্যারি

কোডিংয়ে আমাকে সাহায্য করার জন্য ধন্যবাদ! প্রশ্ন স্থির @
ম্যাথেজড্রুরি

3
তৈরীর জন্য এলোমেলো ফলো-আপ ডগা <-একটি ঝগড়া কম টাইপ করতে: alt+-
জেএডি

@ জারকো ডাবডেলডাম কোডিং টিপটির জন্য ধন্যবাদ। আমি কী বোর্ডের শর্ট কাটগুলি পছন্দ করি
হাইটাও ডু

উত্তর:


12

আপনি যথাযথভাবে লক্ষ্য করেছেন যে মূল পার্থক্যটি হ'ল কারণ প্রথম ক্ষেত্রে আপনি "কাঁচা" বহুপদী ব্যবহার করেন যখন দ্বিতীয় ক্ষেত্রে আপনি অরথোগোনাল বহুভুজ ব্যবহার করেন। সুতরাং যদি পরবর্তী lmকলটি পরিবর্তিত হয়: fit3<-lm(y~ poly(x,degree=2, raw = TRUE) -1)আমরা fitএবং এর মধ্যে একই ফলাফল পাব fit3। কারণ কেন আমরা এই ক্ষেত্রে একই ফলাফল পেতে "তুচ্ছ" হয়; আমরা ঠিক যেমন মডেল ফিট করি ঠিক তেমনই fit<-lm(y~.-1,data=x_exp)কোনও চমক নেই।

কেউ সহজেই পরীক্ষা করতে পারেন যে দুটি মডেলের মডেল ম্যাট্রিকগুলি একই all.equal( model.matrix(fit), model.matrix(fit3) , check.attributes= FALSE) # TRUE)


আরও আকর্ষণীয় বিষয় হ'ল কোনও ইন্টারসেপ্ট ব্যবহার করার সময় আপনি কেন একই প্লট পাবেন। প্রথম লক্ষ্য করার বিষয়টি হ'ল, যখন কোনও ইন্টারসেপ্ট সহ কোনও মডেল ফিট করে fit

  • ক্ষেত্রে fit2কেবলমাত্র আমরা মডেল ভবিষ্যৎবাণী উল্লম্বভাবে সরাতে; বক্ররেখার আসল আকৃতি একই।

  • অন্যদিকে fit, উল্লম্ব স্থান নির্ধারণের ক্ষেত্রে নয় বরং সামগ্রিকভাবে সম্পূর্ণ ভিন্ন আকারের ফলাফলের ক্ষেত্রে একটি বিরতি সহ

আমরা সহজেই বিদ্যমান প্লটের উপর নীচে ফিট করে ফিট করে দেখতে পারি can

fit_b<-lm(y~. ,data=x_exp)
yp=predict(fit_b,xp_exp)
lines(xp,yp, col='green', lwd = 2)

fit2_b<-lm(y~ poly(x,degree=2, raw = FALSE) )
yp=predict(fit2_b,data.frame(x=xp))
lines(xp,yp,col='blue')

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

ঠিক আছে ... নো-ইন্টারসেপ্টটি কেন আলাদা হয় যখন ইন্টারসেপ্ট-সহ ফিটগুলি একই হয়? ক্যাচটি আবারও অर्थোগোনালটি অবস্থায় রয়েছে।

fit_bব্যবহৃত মডেল ম্যাট্রিক্সের ক্ষেত্রে অরথোগোনাল উপাদান রয়েছে, গ্রাম ম্যাট্রিক্সটি crossprod( model.matrix(fit_b) )তির্যক থেকে অনেক দূরে; এর ক্ষেত্রে fit2_bউপাদান লম্ব হয় ( crossprod( model.matrix(fit2_b) )কার্যকরভাবে তির্যক যায়)।

fitfit_b এক্সটিএক্সfitfit2fit2_b

আকর্ষণীয় বাই-প্রশ্ন হ'ল কেন fit_bএবং fit2_bএকইরকম; সমস্ত মডেল থেকে ম্যাট্রিক হয় fit_bএবং মুখের মানfit2_b একই হয় না । এখানে আমাদের কেবল চূড়ান্তভাবে মনে রাখা এবং একই তথ্য থাকা দরকার। কেবলমাত্র একটি রৈখিক সংমিশ্রণটি মূলত তাদের ফলাফলের ফিটগুলি একই হবে। লাগানো সহগতে লক্ষ্য করা পার্থক্যগুলি অরথোগোনাল হওয়ার জন্য মানগুলির রৈখিক পুনঃনির্ধারণকে প্রতিফলিত করে । (জি। গ্রোথেনডিক উত্তরটিও এখানে বিভিন্ন উদাহরণের জন্য দেখুন))fit_bfit2_bfit2_bfit_bfit_b


+2.5 দুর্দান্ত উত্তরের জন্য ধন্যবাদ। চূড়ান্ত গ্রাফের জন্য, আমি @ কেজেটিব হালওয়ারসেনের কাছ থেকে শিখেছি: এটি বর্ণনা করার আরও একটি বিমূর্ত উপায় হ'ল মডেলটি কেবলমাত্র একটি নির্দিষ্ট লিনিয়ার উপ-স্থানের উপর নির্ভর করে, যথা কলাম স্পেসটি ডিজাইন ম্যাট্রিক্স দ্বারা সংজ্ঞায়িত হয়। তবে প্যারামিটারগুলি, কেবলমাত্র এই সাবস্পেসের উপর নির্ভর করে না, সেই নির্দিষ্ট স্থানটি ব্যবহার করে, অর্থাৎ কলামগুলি নিজেই প্রদত্ত সেই উপ-স্থানের ভিত্তিতে নির্ভর করে। উদাহরণস্বরূপ, মডেল থেকে ভবিষ্যদ্বাণীগুলি কেবল লিনিয়ার সাবস্পেসের উপর নির্ভর করবে, চুসেন ভিত্তিতে নয়।
হাইতাও ডু

আশা করি আপনি কিছু মনে করবেন না, আমি কিছুটা পুনরায় ফর্ম্যাট করেছি ..
হাইতাও ডু

@ hxd1011: কিছুতেই সমস্যা নেই, কিছুটা "ঝুঁটি" দেওয়ার জন্য ধন্যবাদ thanks
usεr11852
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.