Por favor, me dê uma idéia de como recodificar com eficiência uma variável categórica (fator) no conjunto de variáveis de contraste polinomial ortogonais.
Para muitos tipos de variáveis de contraste (por exemplo, desvio, simples, Helmert etc.), o passe é:
- Componha a matriz dos coeficientes de contraste correspondente ao tipo.
- Inversa ou generalizada-inversa para obter a matriz de códigos.
Por exemplo:
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.)
Existe a mesma maneira ou similar de obter variáveis de contraste polinomial? Se sim, como seria a matriz C e como compor? Se não, qual ainda é o caminho para calcular as variáveis de contraste polinomial de forma eficiente (por exemplo, álgebra matricial).
contrasts
polynomial
ttnphns
fonte
fonte
qr.qy()
concordam com os cálculos manuaisqr.Q(qr(X))
seguidos porQ%*%z
no meu post. Eu realmente me pergunto se posso dizer algo diferente para responder sua pergunta sem duplicação. Realmente não quero fazer um trabalho ruim ... Li suas postagens o suficiente para ter muito respeito por você ... Se eu encontrar uma maneira de expressar o conceito sem código, apenas conceitualmente através da álgebra linear, Eu voltarei a isso. Estou feliz, no entanto, que você tenha achado minha exploração da questão de algum valor. Muitas felicidades, Toni.Respostas:
Como segue o meu post anterior sobre esse tópico , quero compartilhar algumas tentativas (embora incompletas) de explorar as funções por trás da álgebra linear e funções R relacionadas. Isso deveria ser um trabalho em andamento.
Parte da opacidade das funções tem a ver com a forma "compacta" da decomposição Householder . A idéia por trás da decomposição do chefe de família é refletir vetores através de um hiperplano determinado por um vetor de unidade como no diagrama abaixo, mas escolher esse plano de maneira proposital para projetar todos os vetores de coluna da matriz original no vetor de unidade padrão . O vetor normalizado da norma-2 pode ser usado para calcular as diferentes transformações de Household .u A e 1 1 u I - 2QR u A e1 1 u I−2uuTx
A projeção resultante pode ser expressa como
O vetor representa a diferença entre os vetores de coluna na matriz que queremos decompor e os vetores correspondentes à reflexão no subespaço ou no "espelho" determinado por .v x A y u
O método usado pelo LAPACK libera a necessidade de armazenamento da primeira entrada nos refletores do agregado familiar, transformando-os em 's. Em vez de normalizar o vetor para com , é apenas a primeira entrada que é convertida em ; ainda assim, esses novos vetores - chamem-nos ainda podem ser usados como vetores direcionais.1 v u ∥u∥=1 1 w
A beleza do método é que, dado que em um decomposição é triangular superior, nós podemos realmente aproveitar os elementos em abaixo da diagonal para preenchê-los com estes refletores. Felizmente, as entradas principais nesses vetores são iguais a , impedindo um problema na diagonal "disputada" da matriz: sabendo que são todas as elas não precisam ser incluídas e podem render a diagonal para as entradas de .R QR 0 R w 1 1 R
A matriz "QR compacta" na funçãoR
qr()$qr
pode ser entendida como aproximadamente a adição da matriz e a matriz triangular "de armazenamento" inferior para os refletores "modificados".A projeção do chefe de família ainda terá o formato , mas não trabalharemos com ( ), mas sim com um vetor , dos quais apenas a primeira entrada é garantida como eI−2uuTx u ∥x∥=1 w 1
Seria de supor que seria muito bem para armazenar estes refletores abaixo da diagonal ou excluindo a primeira entrada de , e chamá-lo um dia. No entanto, as coisas nunca são tão fáceis. Em vez disso, o que é armazenado abaixo da diagonal é uma combinação de e os coeficientes na transformação Household expressos como (1), de modo que, definindo como:w R 1 w tau
qr()$qr
Agora, estamos a um grau de distância dos vetores e a primeira entrada não é mais ; portanto, a saída de precisará incluir a chave para restaurá-los, pois insistimos em excluir a primeira entrada dos vetores "refletores" para encaixar tudo . Então, estamos vendo os valores na saída? Bem, não, isso seria previsível. Em vez disso, na saída de (onde essa chave está armazenada), encontramos .w 1 τ ρ=∑reflectors22=wTwτ2/2
qr()
qr()$qr
qr()$qraux
Assim, emoldurados em vermelho abaixo, vemos os "refletores" ( ), excluindo sua primeira entrada.w/τ
Todo o código está aqui , mas como essa resposta é sobre a interseção de codificação e álgebra linear, colarei a saída para facilitar:
Agora eu escrevi a função da
House()
seguinte maneira:Vamos comparar a saída com as funções internas do R. Primeiro a função caseira:
para as funções R:
fonte