মডেল.ম্যাট্রিক্সে ইন্টারসেপ্ট কলামটি কেন প্রথম ফ্যাক্টরটি প্রতিস্থাপন করবে?


9

আমি আমার ফ্যাক্টর কলামটি ডামি ভেরিয়েবলগুলিতে রূপান্তর করার চেষ্টা করছি:

str(cards$pointsBin)
# Factor w/ 5 levels ".lte100",".lte150",..: 3 2 3 1 4 4 2 2 4 4 ...

labels <- model.matrix(~ pointsBin, data=cards)

head(labels)

#     (Intercept) pointsBin.lte150 pointsBin.lte200 pointsBin.lte250 pointsBin.lte300
# 741           1                0                0                0                0
# 407           1                1                0                0                0
# 676           1                0                0                1                0
# 697           1                1                0                0                0
# 422           1                0                1                0                0
# 300           1                0                1                0                0

আমার ফ্যাক্টর ( ".lte100") এর প্রথম মানটির জন্য কোনও কলাম নেই , যা প্রথম সারিতে শ্রেণিভুক্ত করা উচিত। আমি কীভাবে এই ডেটা ফিরে পাব? এবং ইন্টারসেপ্ট কলামটি সমস্ত 1 এর মতো বলে মনে হচ্ছে?


3
আপনার কাছে যখন "কে" ডামি ভেরিয়েবল রয়েছে তখন আপনার ফলাফলের মডেলটিতে ক।) ইন্টারসেপ্ট টার্ম (যা একটি কলাম) এবং খ।) "কে -1" অতিরিক্ত কলাম রয়েছে। কারণটি হ'ল অন্যথায় ফলাফল ম্যাট্রিক্সের কলামগুলি রৈখিকভাবে স্বাধীন হবে না এবং (ফলস্বরূপ, আপনি ওএলএস করতে সক্ষম হবেন না )।
— স্টিভ এস

2
কেন 'অর্থবহ' নয়? এটি একই মডেলের ফিটের একই ধার্মিকতার সাথে, কেবল অন্যভাবে প্যারামিটারাইজড।
— ওল্ফগ্যাং

2
@ ডিজিটগোফার: আপনি যখন কোনও রিগ্রেশন চালান এবং এই জাতীয় মডেলটি শেষ করেন: , আপনি প্রযুক্তিগতভাবে একটি মডেলের সাথে শেষ করছেন এটি: , যেখানে এই নতুন শব্দটি always সর্বদা "1" এর সমান (তাই এর কলামটি বেশী)। আপনি যদি নিয়মিত রিগ্রেশন চলাকালীন এই কলামগুলি মুছে ফেলা হয় তবে আপনি পক্ষপাতদুষ্ট মডেলটি শেষ করবেন যেহেতু আপনি বাস্তবে প্রতিটি একক মডেলকে উত্সের মাধ্যমে জোর করে নিচ্ছেন। y^=β0+β1∗x1y^=β0∗x0+β1∗x1x0
— স্টিভ এস

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

2
@ স্টিভস: ধন্যবাদ আমার চেক করা উচিত ছিল: এটি সেল-মানে কোডিংয়ে স্যুইচ করে। এটি আপনি যা প্রত্যাশা করতে পারেন তা করে না, যা জোর-মাধ্যমে-উত্সের মডেলটির সাথে উপযুক্ত যা আপনি যথাযথভাবে বিরুদ্ধে সতর্ক করেছিলেন (এটি যদিও এটি করবে, যখন কলামটির সংখ্যার প্রকার হবে)।
— স্কর্চচি - মনিকা পুনরায় ইনস্টল করুন

উত্তর:


10

নিম্নোক্ত বিবেচনা কর:

require(mlbench)

data(HouseVotes84, package = "mlbench")
head(HouseVotes84)

labels <- model.matrix(~ V1, data=HouseVotes84)
head(labels)

labels1 <- model.matrix(~ V1+1, data=HouseVotes84)
head(labels1)

labels0 <- model.matrix(~ V1+0, data=HouseVotes84)
head(labels0)

labels_1 <- model.matrix(~ V1-1, data=HouseVotes84)
head(labels_1)

প্রথম দুটি কমান্ড অভিন্ন। শেষ দুটি কমান্ড ইন্টারসেপ্ট উত্পাদন না করার জন্য সুনির্দিষ্ট করে এবং দুটি ডামি ভেরিয়েবলকে উত্পাদিত করে।


1
আপনাকে ধন্যবাদ - এটি কোডটি আমি চেয়েছিলাম তা ব্যাখ্যা করে। তবে এটি কেন বা আমাকে বুঝতে সহায়তা করে তা ব্যাখ্যা করে না।
— ডিজিটগোফার

2
@ ডিজিটগোফার: রেফারেন্স-লেভেল কোডিং এবং অন্যান্য কোডিং স্কিমগুলির ব্যাখ্যার জন্য ats.ucla.edu/stat/r/library/contrast_coding.htm দেখুন ।
— স্কর্চচি - মনিকা পুনরায় ইনস্টল করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.