বাইনারি এবং একটি অবিচ্ছিন্ন ভেরিয়েবলের মধ্যে এলোমেলো সম্পর্কযুক্ত ডেটা তৈরি করুন


23

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

ধন্যবাদ

উত্তর:


20

@ অ্যাক্রামের পদ্ধতি অবশ্যই কার্যকর হবে। নির্ভরতা বৈশিষ্ট্যের ক্ষেত্রে এটি যদিও কিছুটা সীমাবদ্ধ।

আর একটি পদ্ধতি হ'ল যৌথ বিতরণ করার জন্য একটি কপুলা ব্যবহার করা। আপনি সাফল্য এবং বয়সের জন্য প্রান্তিক বিতরণ নির্দিষ্ট করতে পারেন (যদি আপনার বিদ্যমান ডেটা থাকে তবে এটি বিশেষত সহজ) এবং একটি কপুলার পরিবার। কোপুলার প্যারামিটারগুলি পরিবর্তিত করা নির্ভরশীলতার বিভিন্ন ডিগ্রি অর্জন করবে এবং বিভিন্ন কপুলার পরিবার আপনাকে বিভিন্ন নির্ভরতা সম্পর্ক দেবে (যেমন শক্তিশালী উপরের লেজের নির্ভরতা)।

কপুলা প্যাকেজের মাধ্যমে আর-এ এটি করার সাম্প্রতিক একটি সংক্ষিপ্ত বিবরণ এখানে উপলভ্য । অতিরিক্ত প্যাকেজগুলির জন্য সেই কাগজে আলোচনাটি দেখুন।

আপনার অগত্যা পুরো প্যাকেজটির প্রয়োজন নেই; গাউসিয়ান কপুলা, প্রান্তিক সাফল্যের সম্ভাবনা 0.6 এবং গামা বিতরণকৃত বয়সগুলি ব্যবহার করে এখানে একটি সাধারণ উদাহরণ। নির্ভরতা নিয়ন্ত্রণ করতে বিভিন্ন পরিবর্তিত হয়।

r = 0.8 # correlation coefficient
sigma = matrix(c(1,r,r,1), ncol=2)
s = chol(sigma)
n = 10000
z = s%*%matrix(rnorm(n*2), nrow=2)
u = pnorm(z)

age = qgamma(u[1,], 15, 0.5)
age_bracket = cut(age, breaks = seq(0,max(age), by=5))
success = u[2,]>0.4

round(prop.table(table(age_bracket, success)),2)

plot(density(age[!success]), main="Age by Success", xlab="age")
lines(density(age[success]), lty=2)
legend('topright', c("Failure", "Success"), lty=c(1,2))

আউটপুট:

টেবিল:

           success
age_bracket FALSE TRUE
    (0,5]    0.00 0.00
    (5,10]   0.00 0.00
    (10,15]  0.03 0.00
    (15,20]  0.07 0.03
    (20,25]  0.10 0.09
    (25,30]  0.07 0.13
    (30,35]  0.04 0.14
    (35,40]  0.02 0.11
    (40,45]  0.01 0.07
    (45,50]  0.00 0.04
    (50,55]  0.00 0.02
    (55,60]  0.00 0.01
    (60,65]  0.00 0.00
    (65,70]  0.00 0.00
    (70,75]  0.00 0.00
    (75,80]  0.00 0.00

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


দুর্দান্ত উত্তর! কম-প্রশংসিত সরঞ্জাম যদি কপুলগুলি একটি সুন্দর। প্রবিট মডেল (অবিচ্ছিন্ন চলকের উপর গাউসিয়ান প্রান্তিকের সাথে) গাউসিয়ান কপুলার মডেলের একটি বিশেষ ক্ষেত্রে। তবে এটি অনেক বেশি সাধারণ সমাধান।
jpillow

1
@ জেএমএস: +1 হ্যাঁ, কপুলাস খুব আবেদনময়ী। আমি তাদের আরও বিশদে পড়াশোনা করার চেষ্টা করা উচিত!
অক্টোবর

@jpillow প্রকৃতপক্ষে; গাউসিয়ান কপুলা মডেলগুলি কোনও ধরণের মাল্টিভারিয়েট প্রবিট-টাইপ মডেলগুলিকে গ্রাহ্য করে। স্কেল মিক্সিংয়ের মাধ্যমে তারা টি / লজিস্টিক কোপুলি এবং লজিট / রোবট মডেলগুলিতেও প্রসারিত করে। ট্রেস দুর্দান্ত :)
জেএমএস

@ ক্রম কর! মিশ্র ডেটা প্রসঙ্গে অনেকগুলি মুক্ত প্রশ্ন রয়েছে (যখন তাদের মডেল হিসাবে ব্যবহার করা হয় এবং কেবল তাদের কাছ থেকে আঁকেন না) যে আমার মতো লোকেরা সমাধান দেখতে পছন্দ করবে ...
জেএমএস

@ জেএমএস দুর্দান্ত উত্তর!
ব্যবহারকারী 33

28

আপনি লজিস্টিক রিগ্রেশন মডেল অনুকরণ করতে পারেন ।

আরও স্পষ্টভাবে, আপনি প্রথমে বয়সের পরিবর্তনশীল (উদাহরণস্বরূপ ইউনিফর্ম বিতরণ ব্যবহার করে) এর জন্য মানগুলি তৈরি করতে পারেন এবং তারপরে ব্যবহার করে সাফল্যের সম্ভাবনাগুলি গণনা করতে পারেন

π(এক্স)=মেপুঃ(β0+ +β1এক্স)1+ +মেপুঃ(β0+ +β1এক্স)

β0β1β1

π

আর এর উদাহরণস্বরূপ উদাহরণ:

n <- 10
beta0 <- -1.6
beta1 <- 0.03
x <- runif(n=n, min=18, max=60)
pi_x <- exp(beta0 + beta1 * x) / (1 + exp(beta0 + beta1 * x))
y <- rbinom(n=length(x), size=1, prob=pi_x)
data <- data.frame(x, pi_x, y)
names(data) <- c("age", "pi", "y")
print(data)

         age        pi y
 1  44.99389 0.4377784 1
 2  38.06071 0.3874180 0
 3  48.84682 0.4664019 1
 4  24.60762 0.2969694 0
 5  39.21008 0.3956323 1
 6  24.89943 0.2988003 0
 7  51.21295 0.4841025 1
 8  43.63633 0.4277811 0
 9  33.05582 0.3524413 0
 10 30.20088 0.3331497 1

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

@jpillow: আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ। আমি এটি asap উপর চিন্তা করব!
অক্টোবর

1
প্রবিট / গাউসিয়ান কপুলার মডেলটি সম্পর্কে কী সুন্দর তা হ'ল প্যারামিটারগুলি দুটি পরিমাণের মধ্যে কোভারিয়েন্স ম্যাট্রিক্স রূপ নেয় (যার মধ্যে একটি পরে 0 এবং 1 তে বাইনারিযুক্ত হয়)। সুতরাং এটি ব্যাখ্যাযোগ্যতার দৃষ্টিকোণ থেকে দুর্দান্ত (তবে কম্পিউটারের সুবিধার দিক থেকে এত সুন্দর নয়)।
jpillow

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