मैं आर में लगातार प्रतिक्रिया चर के लिए शून्य-फुलाया हुआ प्रतिगमन चलाने की कोशिश कर रहा हूं। मैं एक गेम कार्यान्वयन के बारे में जानता हूं, लेकिन मैं वास्तव में डेल मैक्लेरन द्वारा इस एल्गोरिदम को आज़माना चाहूंगा जो कि वैचारिक रूप से थोड़ा अधिक सीधा है। दुर्भाग्य से, कोड एसएएस में है और मुझे यकीन नहीं है कि इसे लूमे जैसी चीज के लिए फिर से कैसे लिखा जाए।
कोड निम्नानुसार है:
proc nlmixed data=mydata;
parms b0_f=0 b1_f=0
b0_h=0 b1_h=0
log_theta=0;
eta_f = b0_f + b1_f*x1 ;
p_yEQ0 = 1 / (1 + exp(-eta_f));
eta_h = b0_h + b1_h*x1;
mu = exp(eta_h);
theta = exp(log_theta);
r = mu/theta;
if y=0 then
ll = log(p_yEQ0);
else
ll = log(1 - p_yEQ0)
- lgamma(theta) + (theta-1)*log(y) - theta*log(r) - y/r;
model y ~ general(ll);
predict (1 - p_yEQ0)*mu out=expect_zig;
predict r out=shape;
estimate "scale" theta;
run;
प्रेषक: http://listserv.uga.edu/cgi-bin/wa?A2=ind0805A&L=sas-l&P=R20779
जोड़ें:
नोट: यहाँ कोई मिश्रित प्रभाव मौजूद नहीं हैं - केवल निश्चित।
इस फिटिंग का लाभ यह है कि (भले ही गुणांक समान हो, जैसे कि आप P (y = 0) के लिए लॉजिस्टिक रिग्रेशन को अलग से फिट करते हैं और E (y | y> 0) लॉग लिंक के साथ एक गामा त्रुटि रिग्रेशन) आप कर सकते हैं संयुक्त फ़ंक्शन E (y) का अनुमान लगाएं जिसमें शून्य शामिल हैं। एसएएस (सीआई के साथ) लाइन का उपयोग करके इस मूल्य का अनुमान लगा सकते हैं predict (1 - p_yEQ0)*mu
।
इसके अलावा, कोई व्यक्ति ई (y) पर भविष्यवाणियों के महत्व का परीक्षण करने के लिए कस्टम कंट्रास्ट स्टेटमेंट लिखने में सक्षम है। उदाहरण के लिए, एसएएस कोड का एक और संस्करण यहां मैंने उपयोग किया है:
proc nlmixed data=TestZIG;
parms b0_f=0 b1_f=0 b2_f=0 b3_f=0
b0_h=0 b1_h=0 b2_h=0 b3_h=0
log_theta=0;
if gifts = 1 then x1=1; else x1 =0;
if gifts = 2 then x2=1; else x2 =0;
if gifts = 3 then x3=1; else x3 =0;
eta_f = b0_f + b1_f*x1 + b2_f*x2 + b3_f*x3;
p_yEQ0 = 1 / (1 + exp(-eta_f));
eta_h = b0_h + b1_h*x1 + b2_h*x2 + b3_h*x3;
mu = exp(eta_h);
theta = exp(log_theta);
r = mu/theta;
if amount=0 then
ll = log(p_yEQ0);
else
ll = log(1 - p_yEQ0)
- lgamma(theta) + (theta-1)*log(amount) - theta*log(r) - amount/r;
model amount ~ general(ll);
predict (1 - p_yEQ0)*mu out=expect_zig;
estimate "scale" theta;
run;
फिर "गिफ्ट 1" बनाम "गिफ्ट 2" (बी 1 बनाम बी 2) का अनुमान लगाने के लिए हम यह अनुमान कथन लिख सकते हैं:
estimate "gift1 versus gift 2"
(1-(1 / (1 + exp(-b0_f -b1_f))))*(exp(b0_h + b1_h)) - (1-(1 / (1 + exp(-b0_f -b2_f))))*(exp(b0_h + b2_h)) ;
क्या आर ऐसा कर सकता है?