¿Qué sucede si mis datos de regresión lineal contienen varias relaciones lineales combinadas?


34

Digamos que estoy estudiando cómo los narcisos responden a diversas condiciones del suelo. He recopilado datos sobre el pH del suelo frente a la altura madura del narciso. Espero una relación lineal, así que hago una regresión lineal.

Sin embargo, cuando comencé mi estudio, no me di cuenta de que la población en realidad contiene dos variedades de narciso, cada una de las cuales responde de manera muy diferente al pH del suelo. Entonces el gráfico contiene dos relaciones lineales distintas:

pH del suelo vs altura de la flor (cm)

Puedo mirarlo y separarlo manualmente, por supuesto. Pero me pregunto si hay un enfoque más riguroso.

Preguntas:

  1. ¿Existe una prueba estadística para determinar si un conjunto de datos se ajustaría mejor por una sola línea o por N líneas?

  2. ¿Cómo ejecutaría una regresión lineal para ajustar las N líneas? En otras palabras, ¿cómo desenredo los datos mezclados?

Puedo pensar en algunos enfoques combinatorios, pero parecen computacionalmente caros.


Aclaraciones:

  1. La existencia de dos variedades era desconocida en el momento de la recopilación de datos. La variedad de cada narciso no se observó, no se observó y no se registró.

  2. Es imposible recuperar esta información. Los narcisos han muerto desde el momento de la recopilación de datos.

Tengo la impresión de que este problema es algo similar a la aplicación de algoritmos de agrupación, ya que casi necesita saber la cantidad de agrupaciones antes de comenzar. Creo que con CUALQUIER conjunto de datos, aumentar el número de líneas disminuirá el error total de rms. En el extremo, puede dividir su conjunto de datos en pares arbitrarios y simplemente dibujar una línea a través de cada par. (Por ejemplo, si tuviera 1000 puntos de datos, podría dividirlos en 500 pares arbitrarios y dibujar una línea a través de cada par). El ajuste sería exacto y el error eficaz sería exactamente cero. Pero eso no es lo que queremos. Queremos el número "correcto" de líneas.



3
¿Sabes qué dafodil es qué variedad? Si es así, puede incluir esa información en su modelo
rep_ho

1
Este parece un caso clásico de interacción estadística, como en la respuesta de @Demetri Pananos.
rolando2

2
Tengo la sensación de que no tienen la información sobre la variedad de la flor en sus datos. Estoy de acuerdo en que si tuvieran eso, entonces esto sería solo un caso de construir un modelo de interacción o incluso simplemente ejecutar regresiones separadas para cada variedad. Sin embargo, si no tienen esa información, no se pierde toda esperanza. Se podría construir un modelo que estima no solo las líneas separadas sino que también predice las probabilidades de que cada observación pertenezca a cualquiera de los grupos.
Dason

1
@DemetriPananos Di una respuesta que espero tenga sentido. Dependiendo de lo que quieran hacer, es bastante más trabajo. Para hacer algún tipo de prueba, necesitaría hacer una prueba de razón de probabilidad o hacer algún tipo de prueba de aleatorización o algo así. Pero no nos han dado demasiada información y si el objetivo es solo ajustar las líneas y no tienen las etiquetas, entonces no es tan malo hacerlo con el paquete mixtools.
Dason

Respuestas:


31

Creo que la respuesta de Demetri es excelente si suponemos que tiene las etiquetas para las diferentes variedades. Cuando leí tu pregunta, ese no me pareció el caso. Podemos utilizar un enfoque basado en el algoritmo EM para ajustar básicamente el modelo que sugiere Demetri pero sin conocer las etiquetas de la variedad. Afortunadamente, el paquete mixtools en R nos proporciona esta funcionalidad. Dado que sus datos están bastante separados y parece que tiene bastante, debería ser bastante exitoso.

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)

Podemos examinar los resultados

> 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 

Entonces se ajustó a dos regresiones y estimó que el 49.7% de las observaciones cayeron en la regresión para el componente 1 y el 50.2% cayeron en la regresión para el componente 2. La forma en que simulé los datos fue una división 50-50, así que esto es bueno.

Los valores 'verdaderos' que utilicé para la simulación deberían dar las líneas:

y = 41.55 + 5.185 * ph e y = 65.14 + 1.48148 * ph

(que calculé 'a mano' de su gráfico para que los datos que creo se vean similares a los suyos) y las líneas que dio el algoritmo EM en este caso fueron:

y = 41.514 + 5.19 * ph e y = 64.655 + 1.55 * ph

Bastante cerca de los valores reales.

Podemos trazar las líneas ajustadas junto con los datos

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

Líneas ajustadas a través de EM


21

EDITAR: Originalmente pensé que OP sabía qué observaciones provenían de qué especie. La edición de OP deja en claro que mi enfoque original no es factible. Lo dejaré para la posteridad, pero la otra respuesta es mucho mejor. Como consuelo, he codificado un modelo mixto en Stan. No digo que un enfoque bayesiano sea particularmente bueno en este caso, pero es algo interesante que puedo aportar.

Código 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,]);
  }
}

Ejecute el modelo Stan desde 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)

Resultados

ingrese la descripción de la imagen aquí

Las líneas discontinuas son la verdad fundamental, se estiman las líneas continuas.


Respuesta original

Si sabe qué muestra proviene de qué variedad de narciso, puede estimar una interacción entre la variedad y el pH del suelo.

Tu modelo se verá así

y=β0 0+β1variedad+β2PH+β3variedadPH

Aquí hay un ejemplo en R. He generado algunos datos que se ven así:

ingrese la descripción de la imagen aquí

Claramente dos líneas diferentes, y las líneas corresponden a dos especies. Aquí se explica cómo estimar las líneas mediante regresión lineal.

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)

Y el resultado es

> 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

Para las especies etiquetadas con 0, la línea es aproximadamente

y=19+1PH

Para las especies etiquetadas con 1, la línea es aproximadamente

y=40-2PH


Si OP conoce de antemano la variedad de narcisos, ¿por qué no pueden simplemente dividir los datos en dos partes y ejecutar dos regresiones separadas para cada variedad?
Akavall

Si OP no está interesado en las diferencias entre las variedades de narcisos (por ejemplo, ¿la variedad 1 crece más alta que la variedad 2 condicionada por el pH del suelo?), Entonces no hay razón para hacer retroceder todos los datos juntos, excepto quizás argumentos que rodean la precisión.
Demetri Pananos

@Akavail: podrían dividir los datos, pero ejecutarlos de esta manera hace que sea más fácil hacer cualquier tipo de comparación si estuvieran interesados ​​en probar cualquier hipótesis sobre las diferencias entre las variedades. Ejecutarlo combinado también daría estimaciones ligeramente mejores si un supuesto de varianza igual es válido.
Dason

1
Antes de analizar el enfoque EM, consideré el enfoque bayesiano. Pero por mucho que me guste la forma bayesiana de hacer las cosas, me volví flojo y es mucho más fácil simplemente adoptar el enfoque EM. Dicho esto, prefiero un análisis bayesiano y creo que también hace que responder preguntas de seguimiento sea mucho más fácil: puede que le resulte más difícil codificar el modelo inicial, pero una vez que lo haga, es mucho más fácil responder preguntas que podría tener usando el distribución posterior.
Dason

2

El enfoque estadístico es muy similar a dos de las respuestas anteriores, pero trata un poco más sobre cómo elegir el número de clases latentes si carece de conocimiento previo. Puede usar criterios de información o parsimonia como guía para elegir el número de clases latentes.

Aquí hay un ejemplo de Stata que usa una secuencia de modelos de mezclas finitas (FMM) con 2-4 clases / componentes latentes. La primera tabla son los coeficientes para la membresía de clase latente. Estos son un poco difíciles de interpretar, pero se pueden convertir a probabilidades más adelante con estat lcprob. Para cada clase, también obtiene una intersección y un parámetro de pendiente de ph, seguido de probabilidades marginales de clase latente y dos circuitos integrados en la muestra. Estas estimaciones de coeficientes se interpretan como los coeficientes de un modelo de regresión lineal. Aquí, el BIC más pequeño de la muestra le indica que elija el modelo de dos componentes como el mejor. AIC extrañamente selecciona el modelo de 3 componentes. También puede usar circuitos integrados fuera de la muestra para seleccionar o usar validación cruzada.

.01433133004 4

El enfoque FMM no siempre funcionará tan bien en la práctica si las clases son menos severas. Puede encontrar dificultades computacionales con demasiadas clases latentes, especialmente si no tiene suficientes datos o si la función de probabilidad tiene múltiples máximos locales.

. 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.

Gracias por esta respuesta muy interesante. ¡Me has dado algunos conceptos nuevos para investigar!
SlowMagic

0

Me centraré en la cuestión de la significación estadística, ya que Dason ya cubrió la parte de modelado.

No estoy familiarizado con ninguna prueba formal para esto (que estoy seguro de que existe), así que simplemente arrojaré algunas ideas (y probablemente agregaré el código R y los detalles técnicos más adelante).

Primero, es conveniente inferir las clases. Suponiendo que tiene dos líneas ajustadas a los datos, puede reconstruir aproximadamente las dos clases asignando cada punto a la clase de la línea más cercana. Para los puntos cerca de la intersección, se encontrará con problemas, pero por ahora simplemente ignórelos (puede haber una forma de evitar esto, pero por ahora solo espero que esto no cambie mucho).

XlXrXlXrXlXr

Luego hay dos maneras naturales que veo a ir haciendo esto.

La manera más divertida de menos es que basta con ejecutar el conjunto de datos original combinado con las etiquetas de clase inferidos a través de una regresión lineal como en la respuesta de Demetri.

Una forma más interesante de hacerlo sería a través de una versión modificada del ANOVA. El punto es crear un conjunto de datos artificial que representa las dos líneas (con extensión similar entre ellos) y luego aplicar ANOVA. Técnicamente, es necesario hacer esto una vez por el lado izquierdo, y una vez por la derecha (es decir, tendrá dos conjuntos de datos artificiales).

y1(yo)=β1,1X1(yo)+β1,0 0+mi1(yo)
β1,1X1(yo)+β1,0 0
β1,1Xunavsol+β1,0 0
XlunavsolXvalor para el lado izquierdo (lo más importante, esto está sobre ambas clases, ya que eso hace que las cosas sean más consistentes). Es decir, reemplazamos y1(yo) e ( i ) 1 , y de manera similar para la segunda clase. Es decir, su nuevo conjunto de datos consiste en la recopilación de
y~1(yo)=β1,1Xunavsol+β1,0 0+mi1(yo),
y~1(yo)y~2(yo)

norte


-2

¿Es posible que incluir ambos en el mismo gráfico sea un error? Dado que las variedades se comportan completamente diferentes, ¿hay algún valor en superponer los datos? Me parece que está buscando impactos en una especie de narciso, no los impactos de ambientes similares en diferentes narcisos. Si ha perdido los datos que ayudan a determinar la especie "A" de la especie "B", simplemente puede agrupar el comportamiento "A" y el comportamiento "B" e incluir el descubrimiento de dos especies en su narrativa. O, si realmente quiere un gráfico, simplemente use dos conjuntos de datos en el mismo eje. No tengo ni cerca la experiencia que veo en las otras respuestas dadas, así que tengo que encontrar métodos menos "calificados". Realizaría un análisis de datos en un entorno de hoja de trabajo donde las ecuaciones son más fáciles de desarrollar. Luego, una vez que las agrupaciones se vuelven obvias, cree las dos tablas de datos separadas y luego conviértalas en tablas / gráficos. Trabajo con una gran cantidad de datos y a menudo encuentro que mis suposiciones de diferentes correlaciones resultan incorrectas; eso es lo que se supone que los datos nos ayudan a descubrir. Una vez que me doy cuenta de que mis suposiciones son incorrectas, visualizo los datos en función de los comportamientos descubiertos y analizo esos comportamientos y los análisis estadísticos resultantes como parte de la narración.


1
Supongo que usted ha sido rechazado porque su respuesta no proporciona ninguna claridad o idea en respuesta a la pregunta. Debe estructurar su respuesta de manera más útil y dejar en claro qué subpreguntas aborda en cada punto. La pregunta se actualizó entre las respuestas y antes de su respuesta para indicar claramente que la información de la variedad no estaba disponible no era recuperable.
ReneBt

2
Bienvenido a Cross Validated! No se desanime porque su primera respuesta no sea bien recibida, y las soluciones más simples pueden ser muy útiles, pero como el interrogador ya dice "Puedo mirarlo y separarlo manualmente, por supuesto", no parece estar agregando mucho
Scortchi - Restablece a Monica
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.