Est-il possible de calculer le R au carré sur une régression des moindres carrés totaux?

8

J'utilise la fonction Deming fournie par Terry T. sur ce fil de discussion r-help archivé . Je compare deux méthodes, j'ai donc des données qui ressemblent à ceci:

y  x     stdy   stdx
1  1.2   0.23   0.67
2  1.8   0.05   0.89
4  7.5   1.13   0.44
... ...  ...   ...

J'ai effectué ma régression de Deming (également appelée "régression des moindres carrés totaux") et j'obtiens une pente et une interception. Je voudrais obtenir un coefficient de corrélation alors j'ai commencé à calculer le . J'ai saisi manuellement la formule:R2

R2 <- function(coef,i,x,y,sdty){
    predy    <- (coef*x)+i
    stdyl    <- sum((y-predy)^2)   ### The calculated std like if it was a lm (SSres)
    Reelstdy <- sum(stdy)          ### the real stdy from the data  (SSres real)
    disty    <- sum((y-mean(y))^2) ### SS tot
    R2       <- 1-(stdyl/disty)    ### R2 formula
    R2avecstdyconnu <- 1-(Reelstdy/disty) ### R2 with the known stdy
    return(data.frame(R2, R2avecstdyconnu, stdy, Reelstdy))
}

Cette formule fonctionne et me donne une sortie.

  • Lequel des deux plus de sens? (Personnellement, je pense que les deux sont plutôt biaisés.) R2
  • Existe-t-il un moyen d'obtenir un coefficient de corrélation à partir d'une régression totale au moins quadratique?

RÉSULTAT DE LA RÉGRESSION DE DEMING:

Call:
deming(x = Data$DS, y = Data$DM, xstd = Data$SES, ystd = Data$SEM,     dfbeta = T)

               Coef  se(coef)         z            p
Intercept 0.3874572 0.2249302 3.1004680 2.806415e-10
Slope     1.2546922 0.1140142 0.8450883 4.549709e-02

   Scale= 0.7906686 
> 
Nico Coallier
la source
2
Puisqu'un coefficient de corrélation peut être calculé sans aucune référence à la régression, pourriez-vous préciser ce que vous entendez par «coefficient de corrélation»? J'essaie de savoir si le Pearson répondra à votre question ou si vous cherchez peut-être une sorte de "coefficient de détermination" pour servir d'analogue aux moindres carrés . Si c'est le dernier, qu'espérez-vous que cet analogue vous dira? ρR2
whuber
J'essaie de voir dans quelle mesure y est en corrélation avec x. J'ai ajouté ma sortie à la question de la régression de déming (régression totale au moins au carré). Je veux pouvoir dire que les deux méthodes donnent des résultats similaires en d'autres termes.
Nico Coallier

Réponses:

6

Pour développer la réponse de whuber ci-dessus - Pearson vous donnera ce que vous voulez. Il détermine dans quelle mesure y est corrélé avec x en utilisant une approche indépendante du modèle de régression :

ρX,Y=cov(X,Y)σXσY

gx.rma du paquetage rgr fera le total des moindres carrés et calculera Pearson pour vous (ou vous pouvez continuer avec Deming et le faire manuellement).

require(rgr)
set.seed(3)
x<-rnorm(101,mean=2.3,sd=4.2)
x<-x+seq(0,100) 
set.seed(3)
y<-rnorm(101,mean=4.9,sd=1.9)
y<-y+seq(6,206,length=101)

rma<-gx.rma(x,y)
rma$corr
[1] 0.9922014

Donc, la réponse de base à votre question est, lorsque vous faites le moins de carrés au total, oubliez le R au carré et utilisez simplement Pearson. Vous pouvez toujours rectifier cela si vous voulez un résultat entre 0 et 1. Cela fera tout ce dont vous avez besoin.

Cela dit, je vais élaborer un peu, si je comprends bien, il semble que nous devrions être en mesure de calculer un équivalent R au carré.

Tout d'abord, essayons une régression de somme normale de carrés sur les données en utilisant lm. Notez qu'il donne le même coefficient de corrélation que Pearson (après enracinement carré et ne se souciant que de la magnitude, évidemment).

ols<-lm(y~x)
sqrt(summary(ols)$r.squared)
[1] 0.9922014

Ceci est calculé à partir du résultat du modèle lm en utilisant l'approche traditionnelle de la somme des carrés

R2=1SresStot

Donc, à condition d'utiliser le modèle donné par lm, le carré (Pearson) et le carré R sont équivalents.

Cependant, si vous utilisez le modèle à partir de la somme de la régression totale des carrés et essayez d'utiliser la dernière équation, vous obtiendrez un résultat légèrement différent. C'est évident parce que les moindres carrés normaux et totaux utilisent différentes fonctions de minimisation, donc donnez des modèles avec des gradients et des interceptions légèrement différents. (N'oubliez pas que la première équation donnera toujours le même résultat qu'elle ne regarde que les données.)

C'est là que je suis raccroché. Si les deux équations donnent le même résultat lors de l'utilisation du modèle lm, alors il doit sûrement y avoir une formulation équivalente pour la dernière équation, mais lors de l'utilisation du modèle des moindres carrés totaux, qui donne également le même résultat?

J'ai joué rapidement avec différentes approches en utilisant la fonction de minimisation appropriée (comme l'affiche ici: Coefficient de détermination d'une régression orthogonale ), mais je ne peux pas trouver un moyen de le faire - s'il y en a un.

Peut-être que nous sommes tous les deux accrochés au fait que Pearson et R-carré donnent le même résultat lors de l'utilisation des moindres carrés normaux - et il n'y a tout simplement pas de moyen de faire R-carré sur le total des moindres carrés, ce qui donnera le même résultat comme Pearson. Mais je n'en sais pas assez pour dire pourquoi.

Mooks
la source
Merci pour votre réponse mais ... Je pense toujours que le gx.rma ne convient pas à ce que j'essaie de faire, c'est pourquoi j'ai utilisé la régression de démingage. Parce que je ne sais pas comment le gx.rma explique réellement l'erreur standard connue ... Mais il se peut que je me méprenne sur quelque chose ici ... Je vais devoir le vérifier quand j'aurai le temps
Nico Coallier
1
Le fait est que vous pouvez calculer un coefficient de corrélation entre x et y (que vous mentionnez) sans aucune régression du tout . Je pense que vous êtes accroché à la différence d'une corrélation entre les données et d'une évaluation de la qualité de la régression - ce n'est pas nécessairement la même chose. Pearson ^ 2 vous donne le premier et, dans le cas de LS-normal (avec lm), est le même que R ^ 2. Pour orthogonal-LS, ce n'est pas le cas. Donc, poser des questions sur le coefficient de corrélation. et R ^ 2 (surtout maintenant vous mentionnez l'erreur std) sont en fait deux questions différentes. Vous voudrez peut-être reformuler l'OP.
Mooks
Je n'ai peut-être pas été assez clair ... ce que je veux faire, c'est le Pearson. Mais ce qui me dérange, c'est qu'il n'y a pas de R ^ 2 pour la régression totale des moindres carrés. J'utilise le moindre carré total pour ajuster mon coefficient (pente). Mais je vais utiliser le Pearson pour la corrélation comme vous l'avez suggéré. Merci
Nico Coallier
Je comprends, c'est quelque chose qui me dérange aussi! Je pense qu'il devrait y avoir une formule équivalente pour donner un R2 pour le total des moindres carrés aussi, mais je ne comprends probablement pas complètement. Bien que, si vous souhaitez simplement ajuster votre pente, vous pouvez simplement utiliser la fonction de minimisation qui est la base du LS total dans Deming. Essayez mathworld.wolfram.com/… ou arxiv.org/pdf/math/9805076.pdf . Vous pouvez également envisager l'analyse des composants principaux avec prcomp ou princomp - c'est fondamentalement la même chose et peut-être qu'ils lancent quelque chose qui aide.
Mooks
1

Utilisation du package "mcr"

et en utilisant la fonction pour générer votre modèle de régression de deming

yourmodel<-mcreg(x, y, ...) # you need to be familiar with the various types of deming constant SD or CV%. these can give very different results. But that's different question.

et produire un tracé en utilisant la fonction

MCResult.plot(your model)

Cela affiche la corrélation du moment de production de Pearson sur le graphique du modèle, qui vous indique la force et la direction de la relation linéaire entre vos deux variables x, y, mais ne donne pas la proportion de la variation qui est expliquée.

J'espère que cela pourra aider.

George
la source