বহুপদী কনট্রাস্ট ভেরিয়েবলের গণনা


11

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

বিভিন্ন ধরণের বিপরীতে ভেরিয়েবলের (যেমন বিচ্যুতি, সরল, হেলমার্ট ইত্যাদি) পাসটি হ'ল:

  1. প্রকারের সাথে বৈপরীত্য সহগগুলি ম্যাট্রিক্সের অনুরূপ রচনা করুন।
  2. কোডের ম্যাট্রিক্স পেতে এটি বিপরীত বা সাধারণকরণ-বিপরীত।

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

Suppose there is 3-group factor and we want to recode it into a set of deviation  contrast variables.
The last group is treated as reference. Then the contrast coefficients matrix L is

         Group1 Group2 Group3
   var1   2/3   -1/3   -1/3
   var2  -1/3    2/3   -1/3

and ginv(L) is then the sought-for coding matrix

         var1 var2
  Group1   1    0
  Group2   0    1
  Group3  -1   -1

(We might also use inv(L) instead if we add a row for constant, equal to 1/3, at the head of L.)

বহুপদী কনট্রাস্ট ভেরিয়েবলগুলি পাওয়ার জন্য কি একই বা অনুরূপ উপায় আছে? যদি হ্যাঁ ম্যাট্রিক্স সি দেখতে কেমন হবে এবং এটি কীভাবে রচনা করবেন? যদি এখনও কোনটি না হয় তবে পলিনমিকাল কনট্রাস্ট ভেরিয়েবলগুলি দক্ষতার সাথে গণনা করার উপায় (যেমন ম্যাট্রিক্স বীজগণিতের দ্বারা)।


1
আমি আপনার প্রশ্নটি যাচাই করার পরে দেখেছি (ঘটনাচক্রে) যে ফলাফলগুলি আমার পোস্টে অনুসরণ করা qr.qy()ম্যানুয়াল গণনার সাথে একমত হয় । আমি সত্যিই আশ্চর্য হয়েছি যে সদৃশ ছাড়াই আপনার প্রশ্নের উত্তর দেওয়ার জন্য আমি আলাদা কিছু বলতে পারি। আমি সত্যিই খারাপ কাজ করতে চাই না ... আপনার প্রতি শ্রদ্ধা জানাতে আমি আপনার পোস্টগুলি যথেষ্ট পরিমাণে পড়েছি ... যদি আমি কোড ব্যতীত ধারণাটি প্রকাশ করার উপায় খুঁজে পাই তবে কেবল লিনিয়ার বীজগণিতের মাধ্যমে, আমি এটি ফিরে আসব। আমি খুশি, যদিও আপনি কিছু মূল্য হিসাবে আমার অনুসন্ধান খুঁজে পেয়েছেন। শুভেচ্ছা, টনি। qr.Q(qr(X))Q%*%z
আন্তনি পরল্লদা

@ আন্টনি, আপনাকে ধন্যবাদ আমার উদ্দেশ্য হ'ল এটি কোড করতে সক্ষম হবে (এসপিএসএসে, এর সিনট্যাক্স দ্বারা)। আপনি যে ফাংশনগুলি উল্লেখ করেছেন সেগুলি কীভাবে কাজ করে তা নির্ধারণ করা সম্ভব?
ttnphns

উত্তর:


5

এই বিষয়টিতে আমার পূর্বের পোস্টে একটি সিগ হিসাবে আমি লিনিয়ার বীজগণিত এবং সম্পর্কিত আর ফাংশনগুলির পিছনে কিছু অস্থায়ী (অসম্পূর্ণ হওয়া সত্ত্বেও) অনুসন্ধান ভাগ করতে চাই। এটি কাজ চলছে বলে মনে করা হচ্ছে।

ফাংশনগুলির অস্বচ্ছতার অংশটি গৃহকর্তার পচনের "কমপ্যাক্ট" ফর্মের সাথে সম্পর্কিত । গৃহস্থালীর পচনের পিছনে ধারণাটি হ'ল হাইপারপ্লেনের মাধ্যমে ইউনিট-ভেক্টর- দ্বারা নির্ধারিত হাইপারপ্লেন জুড়ে ভেক্টরগুলিকে প্রতিফলিত করা , তবে এই প্লেনটিকে উদ্দেশ্যমূলক উপায়ে বেছে নেওয়া যাতে মূল ম্যাট্রিক্স এর প্রতিটি কলাম ভেক্টর প্রজেক্ট করা যায় to সম্মুখের মান একক ভেক্টর। সাধারণীকৃত আদর্শ -২ ভেক্টর - বিভিন্ন গৃহস্থালীর রূপান্তরগুলি করতে ব্যবহার করা যেতে পারে ।ইউ1 1 ইউ আই - 2QRuAe11uI2uuTx

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

ফলস্বরূপ অভিক্ষেপ হিসাবে প্রকাশ করা যেতে পারে

sign(xi=x1)×x[1000]+[x1x2x3xm]

ভেক্টর কলাম মধ্যে পার্থক্য প্রতিনিধিত্ব করে ভেক্টর ম্যাট্রিক্স মধ্যে যে আমরা পচা করতে চান এবং ভেক্টর subspace বা "মিরর" দ্বারা নির্ধারিত জুড়ে প্রতিফলন সংশ্লিষ্ট ।vxAyu

ল্যাপাক দ্বারা ব্যবহৃত পদ্ধতিটি গৃহস্থালীর প্রতিচ্ছবিগুলির মধ্যে প্রথম প্রবেশের স্টোরের প্রয়োজনীয়তা এর মধ্যে রূপান্তরিত করে rates পরিবর্তে ভেক্টর স্বাভাবিক করার করার সঙ্গে , এটা ঠিক মুষ্টি এন্ট্রি করে একটি রূপান্তরিত হয় ; তবুও, এই নতুন ভেক্টরগুলি - তাদের কল করুন এখনও দিকনির্দেশক ভেক্টর হিসাবে ব্যবহার করা যেতে পারে।1vuu=11w

পদ্ধতির সৌন্দর্যটি হ'ল যে কোনও পচে উপরের ত্রিভুজাকার হয়, আমরা এই রিফ্লেক্টরগুলি পূরণ করতে প্রকৃতির ত্রিভুজের নীচে এর উপাদানের সুবিধা নিতে পারি । ধন্যবাদ, এই ভেক্টরগুলিতে নেতৃস্থানীয় এন্ট্রিগুলি সমান , ম্যাট্রিক্সের "বিতর্কিত" তির্যকটিতে একটি সমস্যা প্রতিরোধ করে: জেনেও যে তারা তাদের অন্তর্ভুক্ত করার দরকার নেই, এবং এর এন্ট্রিগুলিতে তির্যকটি উত্পাদন করতে পারে ।RQR0Rw11R

ফাংশনের "কমপ্যাক্ট কিউআর" ম্যাট্রিক্সটিকে "মোডিফাইড" রিফ্লেক্টরগুলির জন্য qr()$qrপ্রায় ম্যাট্রিক্স এবং নিম্ন ত্রিভুজাকার "স্টোরেজ" ম্যাট্রিক্সের সংযোজন হিসাবে বোঝা যায় ।R

গৃহস্থালীর অভিক্ষেপে এখনও form ফর্মটি থাকবে তবে আমরা ( ) এর সাথে কাজ করব না , বরং ভেক্টর দিয়ে f বিএফ ডাব্লু , যার মধ্যে কেবল প্রথম এন্ট্রিটি হওয়ার গ্যারান্টেড এবংI2uuTxux=1w1

(1)I2uuTx=I2wwwTwx=I2wwTw2x

কেউ ধরে নিতে পারে যে এই প্রতিফলকের প্রথম এন্ট্রি বাদ দিয়ে তির্যক বা নীচে সংরক্ষণ করা ঠিক হবে এবং একটি দিন কল করুন। যাইহোক, জিনিসগুলি এত সহজ কখনও হয় না। পরিবর্তে কি তির্যক নিচের সংরক্ষিত হয় তার সংমিশ্রণ সেইমালিকের রূপান্তর (1), যেমন, যে হিসাবে প্রকাশ মধ্যে কোফিসিয়েন্টস সংজ্ঞা হিসাবে:wR1qr()$qrwtau

τ=wTw2=w2 , প্রতিফলকগুলি হিসাবে প্রকাশ করা যেতে পারে । এই "প্রতিবিম্বক" ভেক্টরগুলি তথাকথিত "কমপ্যাক্ট " -এ অধীনে সঞ্চিত ।reflectors=w/τRQR

এখন আমরা ভেক্টর থেকে এক ডিগ্রি দূরে রয়েছি এবং প্রথম এন্ট্রিটি আর , সুতরাং "প্রতিফলক" ভেক্টরগুলির প্রথম এন্ট্রি বাদ দিয়ে আমরা জোর দিয়েছি বলে আউটপুট এগুলি পুনরুদ্ধার করার কীটি অন্তর্ভুক্ত করতে হবে to সব কিছু ফিট । সুতরাং আমরা আউটপুটে মান দেখতে পাচ্ছি ? ঠিক আছে, এটি অনুমানযোগ্য হবে না would এর পরিবর্তে (যেখানে এই কীটি সঞ্চিত রয়েছে) আমরা ।w1qr()qr()$qrτqr()$qrauxρ=reflectors22=wTwτ2/2

নীচে লাল রঙের মধ্যে ফ্রেমযুক্ত, আমরা তাদের প্রথম এন্ট্রি বাদ দিয়ে "প্রতিচ্ছবি" ( ) দেখতে পাচ্ছি ।w/τ

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

সমস্ত কোড এখানে , তবে যেহেতু এই উত্তরটি কোডিং এবং লিনিয়ার বীজগণিতের ছেদ সম্পর্কিত, তাই আমি আউটপুটটি খুব সহজেই পেস্ট করব:


options(scipen=999)
set.seed(13)
(X = matrix(c(rnorm(16)), nrow=4, byrow=F))
           [,1]      [,2]       [,3]       [,4]
[1,]  0.5543269 1.1425261 -0.3653828 -1.3609845
[2,] -0.2802719 0.4155261  1.1051443 -1.8560272
[3,]  1.7751634 1.2295066 -1.0935940 -0.4398554
[4,]  0.1873201 0.2366797  0.4618709 -0.1939469

এখন আমি ফাংশনটি নীচে লিখেছি House():

   House = function(A){
    Q = diag(nrow(A))
    reflectors = matrix(0,nrow=nrow(A),ncol=ncol(A))
    for(r in 1:(nrow(A) - 1)){ 
        # We will apply Householder to progressively the columns in A, decreasing 1 element at a time.
        x = A[r:nrow(A), r] 
        # We now get the vector v, starting with first entry = norm-2 of x[i] times 1
        # The sign is to avoid computational issues
        first = (sign(x[1]) * sqrt(sum(x^2))) +  x[1]
        # We get the rest of v, which is x unchanged, since e1 = [1, 0, 0, ..., 0]
        # We go the the last column / row, hence the if statement:
        v = if(length(x) > 1){c(first, x[2:length(x)])}else{v = c(first)}
        # Now we make the first entry unitary:
        w = v/first
        # Tau will be used in the Householder transform, so here it goes:
        t = as.numeric(t(w)%*%w) / 2
        # And the "reflectors" are stored as in the R qr()$qr function:
        reflectors[r: nrow(A), r] = w/t
        # The Householder tranformation is:
        I = diag(length(r:nrow(A)))
        H.transf = I - 1/t * (w %*% t(w))
        H_i  = diag(nrow(A))
        H_i[r:nrow(A),r:ncol(A)] = H.transf
        # And we apply the Householder reflection - we left multiply the entire A or Q
        A = H_i %*% A
        Q = H_i %*% Q
    }
    DECOMPOSITION = list("Q"= t(Q), "R"= round(A,7), 
            "compact Q as in qr()$qr"=  
            ((A*upper.tri(A,diag=T))+(reflectors*lower.tri(reflectors,diag=F))), 
            "reflectors" = reflectors,
            "rho"=c(apply(reflectors[,1:(ncol(reflectors)- 1)], 2, 
                function(x) sum(x^2) / 2), A[nrow(A),ncol(A)]))
    return(DECOMPOSITION)
}

আসুন আউটপুটটি আর-বিল্ট-ইন ফাংশনগুলির সাথে তুলনা করি। প্রথমে ঘরে তৈরি ফাংশন:

(H = House(X))
$Q
            [,1]        [,2]       [,3]       [,4]
[1,] -0.29329367 -0.73996967  0.5382474  0.2769719
[2,]  0.14829152 -0.65124800 -0.5656093 -0.4837063
[3,] -0.93923665  0.13835611 -0.1947321 -0.2465187
[4,] -0.09911084 -0.09580458 -0.5936794  0.7928072

$R
          [,1]       [,2]       [,3]      [,4]
[1,] -1.890006 -1.4517318  1.2524151 0.5562856
[2,]  0.000000 -0.9686105 -0.6449056 2.1735456
[3,]  0.000000  0.0000000 -0.8829916 0.5180361
[4,]  0.000000  0.0000000  0.0000000 0.4754876

$`compact Q as in qr()$qr`
            [,1]        [,2]       [,3]      [,4]
[1,] -1.89000649 -1.45173183  1.2524151 0.5562856
[2,] -0.14829152 -0.96861050 -0.6449056 2.1735456
[3,]  0.93923665 -0.67574886 -0.8829916 0.5180361
[4,]  0.09911084  0.03909742  0.6235799 0.4754876

$reflectors
            [,1]        [,2]      [,3] [,4]
[1,]  1.29329367  0.00000000 0.0000000    0
[2,] -0.14829152  1.73609434 0.0000000    0
[3,]  0.93923665 -0.67574886 1.7817597    0
[4,]  0.09911084  0.03909742 0.6235799    0

$rho
[1] 1.2932937 1.7360943 1.7817597 0.4754876

আর ফাংশন:

qr.Q(qr(X))
            [,1]        [,2]       [,3]       [,4]
[1,] -0.29329367 -0.73996967  0.5382474  0.2769719
[2,]  0.14829152 -0.65124800 -0.5656093 -0.4837063
[3,] -0.93923665  0.13835611 -0.1947321 -0.2465187
[4,] -0.09911084 -0.09580458 -0.5936794  0.7928072

qr.R(qr(X))
          [,1]       [,2]       [,3]      [,4]
[1,] -1.890006 -1.4517318  1.2524151 0.5562856
[2,]  0.000000 -0.9686105 -0.6449056 2.1735456
[3,]  0.000000  0.0000000 -0.8829916 0.5180361
[4,]  0.000000  0.0000000  0.0000000 0.4754876

$qr
            [,1]        [,2]       [,3]      [,4]
[1,] -1.89000649 -1.45173183  1.2524151 0.5562856
[2,] -0.14829152 -0.96861050 -0.6449056 2.1735456
[3,]  0.93923665 -0.67574886 -0.8829916 0.5180361
[4,]  0.09911084  0.03909742  0.6235799 0.4754876

$qraux
[1] 1.2932937 1.7360943 1.7817597 0.4754876

+1 তবে আমি অনুমান করি যে এসপিএস কিউআর পঁচার জন্য ফাংশন তৈরি করেছে (বা আমি কি ভুল?), সুতরাং যদি কিউআর জড়িত এসপিএসে কিছু কোড করা হয় তবে ম্যানুয়ালি কিউআর অ্যালগরিদম প্রয়োগ করার প্রয়োজন নেই।
অ্যামিবা

@ আমেবা ধন্যবাদ যেহেতু আমরা একা আছি, আমাকে আপনার প্রতি বিশ্বাস রাখতে দাও: ওপির লেখক আমার কাছ থেকে কোনও সাহায্যের প্রয়োজন নেই, তবে আমি সহকর্মী পোস্টে যে বিশেষত আর ফাংশনগুলি ব্যবহার করেছি তার অভ্যন্তরীণ কাজগুলি সম্পর্কে তাঁর মন্তব্য (উপরে) নিয়েছিলাম took ব্যক্তিগত মজাদার চ্যালেঞ্জ হিসাবে, কারণ এটি আমাকে বুঝতে পেরেছিল যে আমি আর ফাংশনগুলিতে অন্তর্নির্মিত কিউআর ফ্যাক্টরীকরণের এই বাস্তবায়নগুলি কতটা বুঝতে পেরেছি। যেহেতু আমার পক্ষে কোনও ভাল রেফারেন্স পাওয়া, বা অনলাইনে জিজ্ঞাসা করে সত্যই কোনও পার্থক্যের উত্তর পাওয়া আমার পক্ষে অবিশ্বাস্যরকম ছিল তাই আমি স্বীকার করার চেয়ে যত্নবান হওয়ার চেয়ে বেশি চেষ্টা করার পরে যা পেয়েছি তা পোস্ট করছি।
আন্তনি পরেল্লদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.