एक द्विआधारी और एक सतत चर के बीच यादृच्छिक सहसंबंधित डेटा उत्पन्न करें


23

मैं दो चर उत्पन्न करना चाहता हूं। एक द्विआधारी परिणाम चर (सफलता / विफलता कहते हैं) और दूसरा वर्षों में आयु है। मैं चाहता हूं कि सफलता के साथ उम्र का सकारात्मक संबंध हो। उदाहरण के लिए उच्च आयु वर्ग में कम की तुलना में अधिक सफलताएं होनी चाहिए। आदर्श रूप से मैं सहसंबंध की डिग्री को नियंत्रित करने की स्थिति में होना चाहिए। मैं उसको कैसे करू?

धन्यवाद

जवाबों:


20

@ ओकराम का दृष्टिकोण निश्चित रूप से काम करेगा। निर्भरता गुणों के संदर्भ में यह कुछ हद तक प्रतिबंधात्मक है।

एक अन्य विधि एक संयुक्त वितरण प्राप्त करने के लिए कोप्युला का उपयोग करना है। आप सफलता और उम्र के लिए सीमांत वितरण निर्दिष्ट कर सकते हैं (यदि आपके पास मौजूदा डेटा यह विशेष रूप से सरल है) और एक कोप्युला परिवार। कोप्युला के मापदंडों को भिन्न करने पर निर्भरता के विभिन्न डिग्री प्राप्त होंगे, और विभिन्न कोप्युला परिवार आपको विभिन्न निर्भरता संबंध (जैसे मजबूत ऊपरी पूंछ निर्भरता) प्रदान करेंगे।

R में कोप्युला पैकेज के माध्यम से ऐसा करने का एक हालिया अवलोकन यहां उपलब्ध है । अतिरिक्त पैकेज के लिए उस पेपर में चर्चा भी देखें।

आपको जरूरी नहीं कि पूरे पैकेज की आवश्यकता हो; यहाँ एक सरल उदाहरण एक गाऊसी कोपला, सीमांत सफलता की संभावना 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 वास्तव में; गॉसियन कोप्युला मॉडल किसी भी प्रकार के मल्टीवेरेट प्रोबेट-प्रकार के मॉडल को मानते हैं। मिश्रित पैमाने पर वे टी / लॉजिस्टिक कोप्युले और लॉजिट / रोबिट मॉडल का भी विस्तार करते हैं। ट्रेस कूल :)
JMS

@ocram करो! मिश्रित डेटा संदर्भों में बहुत सारे खुले प्रश्न हैं (जब उन्हें मॉडल के रूप में उपयोग किया जाता है और सिर्फ उनसे ड्राइंग नहीं किया जाता है) जो मेरे जैसे लोगों को हल देखना पसंद करेंगे ...
JMS

@JMS बहुत बढ़िया जवाब!
2033 पर user333

28

आप लॉजिस्टिक रिग्रेशन मॉडल का अनुकरण कर सकते हैं ।

अधिक सटीक रूप से, आप पहले आयु चर (उदाहरण के लिए एक समान वितरण का उपयोग करके) के लिए मान उत्पन्न कर सकते हैं और फिर सफलता का उपयोग कर सकते हैं

π(x)=exp(β0+β1x)1+exp(β0+β1x)

β0β1β1

π

R में उदाहरणात्मक उदाहरण:

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 + ई ^ एक्स) ^ - 1), लेकिन एक गौसेवियन के बारे में सोचना अच्छा है जिसमें से एक चर सेंसर ("गोल") है।
jpillow

@jpillow: आपकी टिप्पणी के लिए धन्यवाद। मैं इस पर सोचेगा!
ओकराम

1
प्रोबेट / गॉसियन कोप्युला मॉडल के बारे में क्या अच्छा है कि पैरामीटर दो मात्राओं के बीच एक कोवरियन मैट्रिक्स का रूप लेते हैं (जिनमें से एक को फिर 0 और 1 में द्विपरीकृत किया जाता है)। तो यह व्याख्या के दृष्टिकोण से अच्छा है (लेकिन कम्प्यूटेशनल सुविधा के दृष्टिकोण से इतना अच्छा नहीं है)।
jpillow

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.