আর-তে 100 ভেরিয়েবল সহ একটি রৈখিক মডেল সূত্র কীভাবে লিখবেন


22

আর-তে 100 পরামিতি সহ কোনও মডেলের উপর লিনিয়ার রিগ্রেশন তৈরি করার কি আর সহজ উপায় আছে? ধরা যাক আমাদের 10 ভ্যালু সহ ভেক্টর ওয়াই এবং 10 টি কলাম এবং 100 সারি সহ একটি ডেটাফ্রেম এক্স আছে গাণিতিক স্বরলিপিতে আমি লিখব Y = X[[1]] + X[[2]] + ... + X[[100]]। আমি কীভাবে আর সিনট্যাক্সে অনুরূপ কিছু লিখব?


1
100 বা 1000 আছে? এছাড়াও, আপনার সাধারণত কলামগুলি ভেরিয়েবল হতে হবে এবং সারিগুলি পর্যবেক্ষণ হতে পারে (এটি এখানে বিপরীত রয়েছে বলে মনে হয়)
ম্যাক্রো

100 অতিরিক্ত 0 টি টাইপো ছিল
খ্রিস্টিয়ান

2
সত্যি? আপনি কি সত্যি এটা করতে চান? আমি ভবিষ্যদ্বাণীকারীদের রৈখিক সংমিশ্রণের মধ্যে অত্যধিক সংযোজন এবং পারস্পরিক সম্পর্ক সম্পর্কে উদ্বিগ্ন। কেবলমাত্র এটিই নয় , 100 ভবিষ্যদ্বাণীকারীদের সাথে তবে কেবল 10 টি পর্যবেক্ষণেই আপনার এবং লিনিয়ার রিগ্রেশন মোটেও কাজ করে না। p>n
অ্যারন - মনিকা

উত্তর:


29

এটা চেষ্টা কর

df<-data.frame(y=rnorm(10),x1=rnorm(10),x2=rnorm(10))
lm(y~.,df)

4
এবং যদি আপনি চান, বলুন, সমস্ত দ্বিতীয়-ক্রম ইন্টারঅ্যাকশন, আপনি লিখতে পারেন y ~ . + .^2। ইত্যাদি।
লুৎজ প্রেশেল্ট

3
এবং আপনি যদি কেবলমাত্র দ্বিতীয় ক্রমের ইন্টারঅ্যাকশন চান y ~ . + .:x1তবে এর মতো কিছু আপনাকে প্রতিটি ভেরিয়েবলের (ব্যতীত x1) ইন্টারঅ্যাকশন দেয় x1। ইত্যাদি; আপনি ধারণা পেতে।
লুৎজ প্রেশেল্ট

21

দুর্দান্ত উত্তর!

আমি ডিফল্ট ভাবে যে যোগ করুন, কলিং হবে formulaএকটি উপর data.frameঅন্যদের সম্মুখের প্রথম কলামটি প্রত্যাবর্তন একটি যুত সূত্র তৈরি করে।

সুতরাং @ ডানাস.জুওকাসের উত্তরের ক্ষেত্রে আপনি এমনকি করতে পারেন

lm(df)

যা সঠিকভাবে ব্যাখ্যা করা হয়।


তবুও, আপনি ইন্টারঅ্যাকশন পদে মিশ্রিত করতে চাইলে এই উত্তরটি কার্যকর হয় না। আপনার (+1) করেন।
gui11aume

6
বেশিরভাগ Rঅপারেটর কীভাবে ওভারলোড হয় তা আমি ক্রমাগত বিস্মিত হই :)
ম্যাক্রো

19

YnXn×pp=100

Z = as.data.frame(cbind(Y,X))
lm(Y ~ .,data=Z)

যদি এমন অন্যান্য কলামগুলি থাকে যা আপনি ভবিষ্যদ্বাণীকারী হিসাবে অন্তর্ভুক্ত করতে চান না, তবে আপনাকে Xএই কৌশলটি ব্যবহার করার আগে বা -এগুলি বাদ দেওয়ার জন্য মডেল সূত্রে ব্যবহার করার আগে সেগুলি সরিয়ে ফেলতে হবে । উদাহরণস্বরূপ, আপনি যদি th 67 তম ভবিষ্যদ্বাণীকে বাদ দিতে চান (যার সাথে সম্পর্কিত নাম রয়েছে x67), তবে আপনি লিখতে পারেন

lm(Y ~ .-x67,data=Z)

এছাড়াও, আপনি যদি ইন্টারঅ্যাকশন ইত্যাদি অন্তর্ভুক্ত করতে চান তবে আপনাকে সেগুলি ম্যানুয়ালি যুক্ত করতে হবে (উদাহরণস্বরূপ)

lm(Y ~ .+X[,1]*X[,2],data=Z)

বা নিশ্চিত করুন যে সেগুলি কলাম হিসাবে প্রবেশ করেছে X


19

আপনি formulaএবং pasteফাংশনগুলির সংমিশ্রণটিও ব্যবহার করতে পারেন ।

সেটআপ ডেটা : আসুন কল্পনা আমরা data.frame যে predictor ভেরিয়েবল রয়েছে আছে x1করতে x100এবং আমাদের নির্ভরশীল পরিবর্তনশীল y, কিন্তু আরো একটি উত্পাত পরিবর্তনশীল যে asdfasdf। এছাড়াও ভবিষ্যদ্বাণীকারী ভেরিয়েবলগুলি একটি ক্রমে এমনভাবে সাজানো হয় যে সেগুলি সমস্ত ডেটা.ফ্রেমে সংগত নয়।

Data <- data.frame(matrix(rnorm(102 * 200), ncol=102))
names(Data) <- c(paste("x", 1:50, sep=""), 
    "asdfasdf", "y", paste("x", 51:100, sep=""))

আপনার কাছে ভবিষ্যদ্বাণীকারী ভেরিয়েবলের নাম যুক্ত একটি স্ট্রিং রয়েছে তাও কল্পনা করুন। এই ক্ষেত্রে, এটি সহজেই pasteফাংশনটি ব্যবহার করে তৈরি করা যেতে পারে তবে অন্যান্য পরিস্থিতিতে, grepবা এই স্ট্রিংটি পেতে অন্য কোনও পদ্ধতির ব্যবহার করা যেতে পারে।

PredictorVariables <- paste("x", 1:100, sep="")

পদ্ধতির প্রয়োগ করুন : এরপরে আমরা নীচে নীচে একটি সূত্র তৈরি করতে পারি:

Formula <- formula(paste("y ~ ", 
     paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
  • collapseযুক্তি টিপে +predictor ভেরিয়েবল মধ্যে
  • formulaস্ট্রিংটি lmফাংশনের জন্য উপযুক্ত শ্রেণির সূত্রের একটি সামগ্রীতে রূপান্তরিত করে ।

আরও সাধারণভাবে, আমি যখন ভেরিয়েবলের ভেক্টর হিসাবে প্রেডিকটার ভেরিয়েবল সরবরাহ করতে চাই তখন আমি নিয়মিত নিম্নলিখিত ফাংশনটি ব্যবহার করি।

regression <- function(dv, ivs, data) {
    # run a linear model with text arguments for dv and ivs
    iv_string <- paste(ivs, collapse=" + ")
    regression_formula <- as.formula(paste(dv, iv_string, sep=" ~ "))
    lm(regression_formula, data)

}

যেমন,

regression("y", PredictorVariables, Data)

2
+1 টি। আমি এই কৌশলটি সব সময় ব্যবহার করি। মাঝেমধ্যে, তবে কোনও সূত্রটি একটি ভেরিয়েবলে সংরক্ষণের কারণে সমস্যাগুলির কারণ হয়। কল করার আগে সূত্রটি মূল্যায়নের জন্য স্ট্যাকওভারফ্লো.com/a/7668846/210673 দেখুন । do.calllm
অ্যারন - মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.