Que se passe-t-il si mes données de régression linéaire contiennent plusieurs relations linéaires combinées?

34

Disons que j'étudie comment les jonquilles réagissent aux différentes conditions du sol. J'ai recueilli des données sur le pH du sol par rapport à la taille adulte de la jonquille. Je m'attends à une relation linéaire, alors je vais faire une régression linéaire.

Cependant, je n’avais pas réalisé au début de mon étude que la population contenait en fait deux variétés de jonquilles, chacune d’elles réagissant très différemment au pH du sol. Le graphique contient donc deux relations linéaires distinctes:

pH du sol en fonction de la hauteur de la fleur (cm)

Je peux le regarder et le séparer manuellement, bien sûr. Mais je me demande s’il existe une approche plus rigoureuse.

Des questions:

  1. Existe-t-il un test statistique permettant de déterminer si un ensemble de données serait mieux ajusté sur une seule ligne ou sur N lignes?

  2. Comment pourrais-je exécuter une régression linéaire pour s'adapter aux N lignes? En d'autres termes, comment puis-je démêler les données mélangées?

Je peux penser à certaines approches combinatoires, mais elles semblent coûteuses en calcul.


Clarifications:

  1. L'existence de deux variétés était inconnue au moment de la collecte des données. La variété de chaque jonquille n'a pas été observée, notée et non enregistrée.

  2. Il est impossible de récupérer cette information. Les jonquilles sont mortes depuis la collecte des données.

J'ai l'impression que ce problème est similaire à l'application d'algorithmes de clustering, en ce sens que vous avez presque besoin de connaître le nombre de clusters avant de commencer. Je crois qu’avec N'IMPORTE QUEL ensemble de données, l’augmentation du nombre de lignes réduira l’erreur quadratique totale. À l'extrême, vous pouvez diviser votre ensemble de données en paires arbitraires et tracer simplement une ligne pour chaque paire. (Par exemple, si vous avez 1 000 points de données, vous pouvez les diviser en 500 paires arbitraires et tracer une ligne sur chaque paire.) L'ajustement serait exact et l'erreur efficace serait exactement zéro. Mais ce n'est pas ce que nous voulons. Nous voulons le "bon" nombre de lignes.

SlowMagic
la source
3
savez-vous quel dafodil est quelle variété? Si tel est le cas, vous pouvez simplement inclure cette information dans votre modèle
rep_ho le
1
Cela semble un cas classique d'interaction statistique, comme dans la réponse de @Demetri Pananos.
rolando2 le
2
J'ai l'impression qu'ils n'ont pas l'information sur la variété dans laquelle se trouvait la fleur. Je conviens que s'ils l'avaient, il s'agirait simplement de créer un modèle d'interaction ou même de faire des régressions distinctes pour chaque variété. Cependant, s'ils n'ont pas cette information, tout espoir n'est pas perdu. On pourrait construire un modèle qui estime non seulement les lignes séparées, mais aussi les probabilités que chaque observation appartienne à l'un ou l'autre groupe.
Dason
1
@DemetriPananos J'ai fourni une réponse qui, espérons-le, a du sens. Selon ce qu'ils veulent faire, c'est un peu plus de travail. Pour faire un test, vous devez faire un test du rapport de vraisemblance ou un test de randomisation. Mais ils ne nous ont pas donné trop d’informations et si l’objectif est simplement d’adapter les lignes et qu’ils n’ont pas les étiquettes, il n’est pas si mal de le faire en utilisant le paquet mixtools.
Dason

Réponses:

31

Je pense que la réponse de Demetri est excellente si nous supposons que vous avez les étiquettes pour les différentes variétés. Lorsque j'ai lu votre question, cela ne semblait pas être le cas. Nous pouvons utiliser une approche basée sur l'algorithme EM pour ajuster le modèle proposé par Demetri mais sans connaître les étiquettes de la variété. Heureusement, le paquet mixtools dans R fournit cette fonctionnalité pour nous. Puisque vos données sont assez séparées et que vous semblez en avoir assez, cela devrait être assez réussi.

library(mixtools)

# Generate some fake data that looks kind of like yours
n1 <- 150
ph1 = runif(n1, 5.1, 7.8)
y1 <- 41.55 + 5.185*ph1 + rnorm(n1, 0, .25)

n2 <- 150
ph2 <- runif(n2, 5.3, 8)
y2 <- 65.14 + 1.48148*ph2 + rnorm(n2, 0, 0.25)

# There are definitely better ways to do all of this but oh well
dat <- data.frame(ph = c(ph1, ph2), 
                  y = c(y1, y2), 
                  group = rep(c(1,2), times = c(n1, n2)))

# Looks about right
plot(dat$ph, dat$y)

# Fit the regression. One line for each component. This defaults
# to assuming there are two underlying groups/components in the data
out <- regmixEM(y = dat$y, x = dat$ph, addintercept = T)

Nous pouvons examiner les résultats

> summary(out)
summary of regmixEM object:
          comp 1    comp 2
lambda  0.497393  0.502607
sigma   0.248649  0.231388
beta1  64.655578 41.514342
beta2   1.557906  5.190076
loglik at estimate:  -182.4186 

Cela correspond donc à deux régressions et il a été estimé que 49,7% des observations entraient dans la régression pour la composante 1 et 50,2% dans la régression pour la composante 2. La façon dont j'ai simulé les données était une division 50-50, donc c'est bien.

Les «vraies» valeurs que j'ai utilisées pour la simulation doivent donner les lignes suivantes:

y = 41,55 + 5,185 * ph et y = 65,14 + 1,48148 * ph

(que j’ai estimé "à la main" à partir de votre graphique pour que les données que je crée soient similaires au vôtre) et les lignes que l’algorithme EM a donné dans ce cas sont les suivantes:

y = 41,514 + 5,19 * ph et y = 64,655 + 1,55 * ph

C'est sacrément proche des valeurs réelles.

Nous pouvons tracer les lignes ajustées avec les données

plot(dat$ph, dat$y, xlab = "Soil Ph", ylab = "Flower Height (cm)")
abline(out$beta[,1], col = "blue") # plot the first fitted line
abline(out$beta[,2], col = "red") # plot the second fitted line

Lignes ajustées via EM

Dason
la source
21

EDIT: Au départ, je pensais qu'OP savait quelles observations provenaient de quelle espèce. Le montage d'OP montre clairement que mon approche originale n'est pas réalisable. Je vais laisser la place à la postérité, mais l'autre réponse est bien meilleure. En guise de consolation, j'ai codé un modèle de mélange dans Stan. Je ne dis pas qu'une approche bayésienne est particulièrement efficace dans ce cas, mais c'est simplement une chose intéressante à laquelle je peux contribuer.

Code Stan

data{

  //Number of data points
  int N; 

  real y[N];
  real x[N];
}
parameters{
  //mixing parameter
  real<lower=0, upper =1>  theta;

  //Regression intercepts
  real beta_0[2];

  //Regression slopes.
  ordered[2] beta_1;

  //Regression noise
  real<lower=0> sigma[2];
}
model{

  //priors
  theta ~ beta(5,5);
  beta_0 ~ normal(0,1);
  beta_1 ~ normal(0,1);
  sigma ~ cauchy(0,2.5);

  //mixture likelihood
  for (n in 1:N){
    target+=log_mix(theta,
                     normal_lpdf(y[n] | beta_0[1] + beta_1[1]*x[n], sigma[1]),
                     normal_lpdf(y[n] | beta_0[2] + beta_1[2]*x[n], sigma[2]));
  }
}
generated quantities {
  //posterior predictive distribution
  //will allow us to see what points belong are assigned
  //to which mixture 
  matrix[N,2] p;
  matrix[N,2] ps;
  for (n in 1:N){
    p[n,1] = log_mix(theta,
                     normal_lpdf(y[n] | beta_0[1] + beta_1[1]*x[n], sigma[1]),
                     normal_lpdf(y[n] | beta_0[2] + beta_1[2]*x[n], sigma[2]));

    p[n,2]= log_mix(1-theta,
                     normal_lpdf(y[n] | beta_0[1] + beta_1[1]*x[n], sigma[1]),
                     normal_lpdf(y[n] | beta_0[2] + beta_1[2]*x[n], sigma[2]));

    ps[n,]= p[n,]/sum(p[n,]);
  }
}

Exécuter le modèle Stan à partir de R

library(tidyverse)
library(rstan)


#Simulate the data
N = 100
x = rnorm(N, 0, 3)
group = factor(sample(c('a','b'),size = N, replace = T))

y = model.matrix(~x*group)%*% c(0,1,0,2) 
y = as.numeric(y) + rnorm(N)

d = data_frame(x = x, y = y)

d %>% 
  ggplot(aes(x,y))+
  geom_point()

#Fit the model
N = length(x)
x = as.numeric(x)
y = y

fit = stan('mixmodel.stan', 
           data = list(N= N, x = x, y = y),
           chains = 8,
           iter = 4000)

Résultats

entrez la description de l'image ici

Les lignes pointillées sont la vérité au sol, les lignes continues sont estimées.


Réponse originale

Si vous savez quel échantillon provient de quelle variété de jonquille, vous pouvez estimer une interaction entre cette variété et le pH du sol.

Votre modèle ressemblera à

y=β0+β1variety+β2PH+β3varietyPH

Voici un exemple dans R. J'ai généré des données qui ressemblent à ceci:

entrez la description de l'image ici

Clairement deux lignes différentes, et les lignes correspondent à deux espèces. Voici comment estimer les lignes en utilisant la régression linéaire.

library(tidyverse)

#Simulate the data
N = 1000
ph = runif(N,5,8)
species = rbinom(N,1,0.5)

y = model.matrix(~ph*species)%*% c(20,1,20,-3) + rnorm(N, 0, 0.5)
y = as.numeric(y)

d = data_frame(ph = ph, species = species, y = y)

#Estimate the model
model = lm(y~species*ph, data = d)
summary(model)

Et le résultat est

> summary(model)

Call:
lm(formula = y ~ species * ph, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.61884 -0.31976 -0.00226  0.33521  1.46428 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 19.85850    0.17484  113.58   <2e-16 ***
species     20.31363    0.24626   82.49   <2e-16 ***
ph           1.01599    0.02671   38.04   <2e-16 ***
species:ph  -3.03174    0.03756  -80.72   <2e-16 ***
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4997 on 996 degrees of freedom
Multiple R-squared:  0.8844,    Adjusted R-squared:  0.8841 
F-statistic:  2541 on 3 and 996 DF,  p-value: < 2.2e-16

Pour les espèces marquées 0, la ligne est approximativement

y=19+1PH

Pour les espèces identifiées 1, la ligne est approximativement

y=402PH

Demetri Pananos
la source
Si OP connaît la variété de jonquille à l'avance, pourquoi ne peut-il pas simplement diviser les données en deux parties et exécuter deux régressions distinctes pour chaque variété?
Akavall
Si OP ne s'intéresse pas aux différences entre les variétés de jonquilles (par exemple, la variété 1 grandit-elle plus que la variété 2 conditionnée par le pH du sol), il n'y a aucune raison de régresser toutes les données ensemble, sauf peut-être pour des arguments concernant la précision.
Demetri Pananos le
@Akavail - Ils pourraient scinder les données, mais leur utilisation facilite les comparaisons si elles sont intéressées par le test d'hypothèses sur les différences entre les variétés. Son utilisation combinée donnerait également des estimations légèrement meilleures si une hypothèse de variance égale est valide.
Dason
1
Avant d’examiner l’approche EM, j’avais considéré l’approche bayésienne. Mais bien que j'aime la façon bayésienne de faire les choses, je suis devenu paresseux et il est beaucoup plus facile d'adopter l'approche EM. Cela dit, je préfère de loin une analyse bayésienne et je pense que cela facilite également la réponse aux questions suivantes: vous aurez peut-être plus de difficulté à coder le modèle initial, mais une fois que vous le ferez, il sera beaucoup plus facile de répondre aux questions que vous pourriez avoir à l'aide du distribution postérieure.
Dason
2

L'approche statistique est très similaire à deux des réponses ci-dessus, mais elle explique un peu plus comment choisir le nombre de classes latentes si vous manquez de connaissances préalables. Vous pouvez utiliser des critères d’information ou de parcimonie pour vous guider dans le choix du nombre de classes latentes.

Voici un exemple de Stata utilisant une séquence de modèles de mélanges finis (FMM) avec 2 à 4 classes / composants latents. Le premier tableau contient les coefficients pour l'appartenance à une classe latente. Celles-ci sont un peu difficiles à interpréter, mais elles peuvent être converties en probabilités ultérieurement estat lcprob. Pour chaque classe, vous obtenez également un paramètre d'interception et un paramètre de pente de ph, suivis des probabilités marginales de classe latente et de deux circuits intégrés dans l'échantillon. Ces estimations de coefficients sont interprétées comme les coefficients d'un modèle de régression linéaire. Ici, le plus petit code BIC de l' échantillon vous indique de choisir le modèle à deux composants comme étant le meilleur. AIC choisit étrangement le modèle à 3 composants. Vous pouvez également utiliser des CI hors échantillon pour sélectionner ou utiliser la validation croisée.

.01433133004

L’approche FMM ne fonctionnera pas toujours aussi bien si les cours sont moins rigoureux. Vous pouvez rencontrer des difficultés de calcul avec trop de classes latentes, en particulier si vous ne disposez pas de suffisamment de données, ou si la fonction de vraisemblance a plusieurs maxima locaux.

. clear

. /* Fake Data */
. set seed 10011979

. set obs 300
number of observations (_N) was 0, now 300

. gen     ph = runiform(5.1, 7.8) in 1/150
(150 missing values generated)

. replace ph = runiform(5.3, 8)   in 151/300
(150 real changes made)

. gen y      = 41.55 + 5.185*ph   + rnormal(0, .25)  in 1/150
(150 missing values generated)

. replace y  = 65.14 + 1.48148*ph + rnormal(0, 0.25) in 151/300
(150 real changes made)

. 
. /* 2 Component FMM */
. fmm 2, nolog: regress y ph

Finite mixture model                            Number of obs     =        300
Log likelihood =  -194.5215

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.Class      |  (base outcome)
-------------+----------------------------------------------------------------
2.Class      |
       _cons |   .0034359   .1220066     0.03   0.978    -.2356927    .2425645
------------------------------------------------------------------------------

Class          : 1
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   5.173137   .0251922   205.35   0.000     5.123761    5.222513
       _cons |     41.654   .1622011   256.80   0.000      41.3361    41.97191
-------------+----------------------------------------------------------------
     var(e.y)|   .0619599   .0076322                      .0486698     .078879
------------------------------------------------------------------------------

Class          : 2
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   1.486062    .026488    56.10   0.000     1.434147    1.537978
       _cons |   65.10664   .1789922   363.74   0.000     64.75582    65.45746
-------------+----------------------------------------------------------------
     var(e.y)|   .0630583   .0075271                      .0499042    .0796797
------------------------------------------------------------------------------

. estat lcprob

Latent class marginal probabilities             Number of obs     =        300

--------------------------------------------------------------
             |            Delta-method
             |     Margin   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
       Class |
          1  |    .499141   .0305016      .4396545    .5586519
          2  |    .500859   .0305016      .4413481    .5603455
--------------------------------------------------------------

. estat ic

Akaike's information criterion and Bayesian information criterion

-----------------------------------------------------------------------------
       Model |        Obs  ll(null)  ll(model)      df         AIC        BIC
-------------+---------------------------------------------------------------
           . |        300         .  -194.5215       7     403.043   428.9695
-----------------------------------------------------------------------------
               Note: N=Obs used in calculating BIC; see [R] BIC note.

. 
. /* 3 Component FMM */
. fmm 3, nolog: regress y ph

Finite mixture model                            Number of obs     =        300
Log likelihood =  -187.4824

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.Class      |  (base outcome)
-------------+----------------------------------------------------------------
2.Class      |
       _cons |  -.0312504    .123099    -0.25   0.800    -.2725199    .2100192
-------------+----------------------------------------------------------------
3.Class      |
       _cons |  -3.553227   .5246159    -6.77   0.000    -4.581456   -2.524999
------------------------------------------------------------------------------

Class          : 1
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   5.173077   .0252246   205.08   0.000     5.123637    5.222516
       _cons |   41.65412     .16241   256.48   0.000      41.3358    41.97243
-------------+----------------------------------------------------------------
     var(e.y)|   .0621157   .0076595                      .0487797    .0790975
------------------------------------------------------------------------------

Class          : 2
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   1.476049   .0257958    57.22   0.000      1.42549    1.526608
       _cons |   65.18698   .1745018   373.56   0.000     64.84496    65.52899
-------------+----------------------------------------------------------------
     var(e.y)|   .0578413   .0070774                      .0455078    .0735173
------------------------------------------------------------------------------

Class          : 3
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   1.776746   .0020074   885.09   0.000     1.772811     1.78068
       _cons |   62.76633   .0134072  4681.54   0.000     62.74005    62.79261
-------------+----------------------------------------------------------------
     var(e.y)|   9.36e-06   6.85e-06                      2.23e-06    .0000392
------------------------------------------------------------------------------

. estat lcprob

Latent class marginal probabilities             Number of obs     =        300

--------------------------------------------------------------
             |            Delta-method
             |     Margin   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
       Class |
          1  |   .5005343   .0304855      .4410591    .5599944
          2  |   .4851343   .0306119      .4256343    .5450587
          3  |   .0143313   .0073775      .0051968     .038894
--------------------------------------------------------------

. estat ic

Akaike's information criterion and Bayesian information criterion

-----------------------------------------------------------------------------
       Model |        Obs  ll(null)  ll(model)      df         AIC        BIC
-------------+---------------------------------------------------------------
           . |        300         .  -187.4824      11    396.9648   437.7064
-----------------------------------------------------------------------------
               Note: N=Obs used in calculating BIC; see [R] BIC note.

. 
. /* 4 Component FMM */
. fmm 4, nolog: regress y ph

Finite mixture model                            Number of obs     =        300
Log likelihood = -188.06042

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.Class      |  (base outcome)
-------------+----------------------------------------------------------------
2.Class      |
       _cons |  -.6450345   .5853396    -1.10   0.270    -1.792279      .50221
-------------+----------------------------------------------------------------
3.Class      |
       _cons |  -.8026907   .6794755    -1.18   0.237    -2.134438    .5290568
-------------+----------------------------------------------------------------
4.Class      |
       _cons |  -3.484714   .5548643    -6.28   0.000    -4.572229     -2.3972
------------------------------------------------------------------------------

Class          : 1
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   5.173031   .0251474   205.71   0.000     5.123743    5.222319
       _cons |   41.65574    .161938   257.23   0.000     41.33835    41.97313
-------------+----------------------------------------------------------------
     var(e.y)|   .0617238   .0076596                      .0483975    .0787195
------------------------------------------------------------------------------

Class          : 2
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   1.503764   .0371216    40.51   0.000     1.431007    1.576521
       _cons |   65.13498   .2666049   244.31   0.000     64.61244    65.65751
-------------+----------------------------------------------------------------
     var(e.y)|   .0387473   .0188853                      .0149062    .1007195
------------------------------------------------------------------------------

Class          : 3
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   1.441334   .0443892    32.47   0.000     1.354333    1.528335
       _cons |   65.26791   .2765801   235.98   0.000     64.72582       65.81
-------------+----------------------------------------------------------------
     var(e.y)|   .0307352    .010982                      .0152578    .0619127
------------------------------------------------------------------------------

Class          : 4
Response       : y
Model          : regress

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
y            |
          ph |   1.665207   .0079194   210.27   0.000     1.649685    1.680728
       _cons |   63.42577   .0510052  1243.52   0.000      63.3258    63.52573
-------------+----------------------------------------------------------------
     var(e.y)|    .000096   .0000769                        .00002    .0004611
------------------------------------------------------------------------------

. estat lcprob

Latent class marginal probabilities             Number of obs     =        300

--------------------------------------------------------------
             |            Delta-method
             |     Margin   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
       Class |
          1  |   .4991443   .0304808      .4396979     .558615
          2  |   .2618733   .1506066      .0715338    .6203076
          3  |   .2236773    .150279      .0501835    .6110804
          4  |    .015305    .008329       .005234    .0438994
--------------------------------------------------------------

. estat ic

Akaike's information criterion and Bayesian information criterion

-----------------------------------------------------------------------------
       Model |        Obs  ll(null)  ll(model)      df         AIC        BIC
-------------+---------------------------------------------------------------
           . |        300         .  -188.0604      15    406.1208   461.6776
-----------------------------------------------------------------------------
               Note: N=Obs used in calculating BIC; see [R] BIC note.
Dimitriy V. Masterov
la source
Merci pour cette réponse très intéressante. Vous m'avez donné de nouveaux concepts à rechercher!
SlowMagic
0

Je vais me concentrer sur la question de la signification statistique puisque Dason a déjà couvert la partie modélisation.

Je ne suis pas familier avec les tests formels pour cela (qui, j'en suis sûr, existe), je vais donc simplement présenter quelques idées (et j'ajouterai probablement du code R et des détails techniques plus tard).

Premièrement, il est commode de déduire les classes. En supposant que deux lignes soient adaptées aux données, vous pouvez approximativement reconstruire les deux classes en affectant chaque point à la classe de la ligne la plus proche. Pour les points proches de l'intersection, vous rencontrerez des problèmes, mais pour l'instant ignorez-les (il y a peut-être un moyen de contourner cela, mais pour le moment, espérons que cela ne changera pas beaucoup).

xlxrxlxrxlxr

Ensuite, il y a deux façons naturelles de procéder.

La méthode la moins amusante consiste simplement à exécuter votre jeu de données d'origine en combinaison avec les étiquettes de classe inférées via une régression linéaire comme dans la réponse de Demetri.

Une façon plus intéressante de le faire serait d'utiliser une version modifiée de ANOVA. Le but est de créer un jeu de données artificiel qui représente les deux lignes (avec un écart similaire entre elles), puis d'appliquer une ANOVA. Techniquement, vous devez le faire une fois pour le côté gauche et une fois pour le droit (vous aurez donc deux jeux de données artificiels).

y1(i)=β1,1x1(i)+β1,0+e1(i)
β1,1x1(i)+β1,0
β1,1xavg+β1,0
xlavgxy1(i)
y~1(i)=β1,1xavg+β1,0+e1(i),
y~1(i)y~2(i)

N

Jacob Maibach
la source
-2

Est-il possible que l'inclusion des deux dans le même graphique est une erreur? Étant donné que les variétés se comportent de manière complètement différente, le chevauchement des données a-t-il une valeur? Il me semble que vous recherchez des impacts sur une espèce de jonquille, et non des impacts d’environnements similaires sur différentes jonquilles. Si vous avez perdu les données permettant de déterminer l'espèce "A" à partir de l'espèce "B", vous pouvez simplement grouper le comportement "A" et le comportement "B" et inclure la découverte de deux espèces dans votre récit. Ou, si vous voulez vraiment un graphique, utilisez simplement deux ensembles de données sur le même axe. Je n'ai aucune expertise proche de celle que je vois dans les autres réponses données, donc je dois trouver des méthodes moins "qualifiées". Je voudrais exécuter une analyse de données dans un environnement de feuille de travail où les équations sont plus faciles à développer. Ensuite, une fois que les regroupements deviennent évidents, créez les deux tableaux de données distincts, puis convertissez-les en diagrammes / graphiques. Je travaille avec beaucoup de données et je constate souvent que mes suppositions de corrélations différentes sont fausses; c'est ce que les données sont supposées nous aider à découvrir. Une fois que j'ai appris que mes hypothèses sont fausses, j'affiche les données en fonction des comportements découverts et discute de ces comportements et des analyses statistiques résultantes dans le cadre de la narration.

KBKIA
la source
1
Je suppose que votre vote a été négatif parce que votre réponse n’apporte aucune clarté ou perspicacité en réponse à la question. Vous devez structurer votre réponse plus utilement et préciser les sous-questions que vous abordez à chaque étape. La question a été mise à jour entre les réponses et avant votre réponse, indiquez clairement que les informations sur les variétés ne sont pas disponibles, ni récupérables.
ReneBt
2
Bienvenue sur Cross Validated! S'il vous plaît, ne soyez pas rebutés par votre première réponse qui n'a pas été bien reçue - et des solutions plus simples peuvent être très utiles - mais comme l'interrogateur dit déjà "je peux le regarder et le séparer manuellement, bien sûr", cela ne semble pas être le cas. ajouter beaucoup.
Scortchi