Was ist, wenn meine linearen Regressionsdaten mehrere vermischte lineare Beziehungen enthalten?


34

Angenommen, ich untersuche, wie Narzissen auf verschiedene Bodenbedingungen reagieren. Ich habe Daten über den pH-Wert des Bodens im Vergleich zur reifen Höhe der Narzisse gesammelt. Da ich eine lineare Beziehung erwarte, gehe ich einer linearen Regression nach.

Als ich mit meiner Studie begann, wusste ich jedoch nicht, dass die Population tatsächlich zwei Narzissensorten enthält, von denen jede sehr unterschiedlich auf den pH-Wert des Bodens reagiert. Das Diagramm enthält also zwei verschiedene lineare Beziehungen:

Boden pH vs Blütenhöhe (cm)

Ich kann es natürlich beobachten und manuell trennen. Aber ich frage mich, ob es einen strengeren Ansatz gibt.

Fragen:

  1. Gibt es einen statistischen Test, um festzustellen, ob ein Datensatz besser auf eine einzelne Zeile oder auf N Zeilen passt?

  2. Wie würde ich eine lineare Regression ausführen, um sie an die N-Linien anzupassen? Mit anderen Worten, wie entwirre ich die vermischten Daten?

Ich kann mir einige kombinatorische Ansätze vorstellen, aber sie scheinen rechenintensiv zu sein.


Klarstellungen:

  1. Die Existenz von zwei Sorten war zum Zeitpunkt der Datenerhebung nicht bekannt. Die Sorte jeder Narzisse wurde nicht beobachtet, nicht notiert und nicht aufgezeichnet.

  2. Es ist unmöglich, diese Informationen wiederherzustellen. Die Narzissen sind seit dem Zeitpunkt der Datenerfassung gestorben.

Ich habe den Eindruck, dass dieses Problem dem Anwenden von Clustering-Algorithmen ähnelt, da Sie fast die Anzahl der Cluster kennen müssen, bevor Sie beginnen. Ich glaube, dass mit jedem Datensatz die Erhöhung der Anzahl der Zeilen den gesamten Effektivfehler verringern wird. Im Extremfall können Sie Ihren Datensatz in beliebige Paare aufteilen und einfach eine Linie durch jedes Paar ziehen. (Wenn Sie beispielsweise 1000 Datenpunkte hätten, könnten Sie diese in 500 willkürliche Paare aufteilen und eine Linie durch jedes Paar ziehen.) Die Anpassung wäre genau und der Effektivfehler wäre genau Null. Aber das wollen wir nicht. Wir wollen die "richtige" Anzahl von Zeilen.



3
Weißt du, welche Narzisse welche Sorte ist? Wenn ja, können Sie diese Informationen einfach in Ihr Modell aufnehmen
rep_ho

1
Dies scheint ein klassischer Fall statistischer Interaktion zu sein, wie in der Antwort von @Demetri Pananos.
Rolando2

2
Ich habe das Gefühl, dass sie nicht die Information haben, welche Sorte die Blume in ihren Daten hat. Ich bin damit einverstanden, dass dies nur der Aufbau eines Interaktionsmodells oder sogar die Durchführung separater Regressionen für jede Sorte bedeuten würde. Wenn sie diese Informationen jedoch nicht haben, ist nicht alle Hoffnung verloren. Man könnte ein Modell erstellen, das nicht nur die einzelnen Linien schätzt, sondern auch die Wahrscheinlichkeiten vorhersagt, mit denen jede Beobachtung zu einer der beiden Gruppen gehört.
Dason

1
@ DemetriPananos Ich gab eine Antwort, die hoffentlich Sinn macht. Je nachdem, was sie machen wollen, ist es ein bisschen mehr Arbeit. Um eine Art von Test durchzuführen, müssten Sie einen Likelihood-Ratio-Test oder einen Randomisierungstest durchführen. Aber sie haben uns nicht zu viele Informationen gegeben, und wenn das Ziel nur darin besteht, Linien einzufügen, und sie keine Etiketten haben, ist es nicht schlecht, das mixtools-Paket zu verwenden.
Dason

Antworten:


31

Ich denke, Demetris Antwort ist großartig, wenn wir davon ausgehen, dass Sie die Etiketten für die verschiedenen Sorten haben. Als ich deine Frage las, schien mir das nicht der Fall zu sein. Wir können einen Ansatz verwenden, der auf dem EM-Algorithmus basiert, um das von Demetri vorgeschlagene Modell im Wesentlichen anzupassen, ohne jedoch die Bezeichnungen für die Sorte zu kennen. Zum Glück stellt uns das mixtools-Paket in R diese Funktionalität zur Verfügung. Da Ihre Daten ziemlich getrennt sind und Sie anscheinend einiges haben, sollte es ziemlich erfolgreich sein.

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)

Wir können die Ergebnisse untersuchen

> 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 

Es passte also zu zwei Regressionen und es wurde geschätzt, dass 49,7% der Beobachtungen in die Regression für Komponente 1 und 50,2% in die Regression für Komponente 2 fielen. So wie ich die Daten simuliert habe, war es eine 50: 50-Aufteilung, das ist also gut.

Die 'wahren' Werte, die ich für die Simulation verwendet habe, sollten die folgenden Zeilen enthalten:

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

(die ich 'von Hand' anhand Ihres Diagramms geschätzt habe, damit die von mir erstellten Daten ähnlich wie Ihre aussehen) und die Linien, die der EM-Algorithmus in diesem Fall lieferte, waren:

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

Ziemlich nah an den tatsächlichen Werten.

Wir können die angepassten Linien zusammen mit den Daten zeichnen

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

Verlegte Leitungen über EM


21

EDIT: Ich dachte ursprünglich, OP wüsste, welche Beobachtungen von welcher Art stammen. Die Bearbeitung von OP macht deutlich, dass mein ursprünglicher Ansatz nicht durchführbar ist. Ich werde es der Nachwelt überlassen, aber die andere Antwort ist viel besser. Zum Trost habe ich in Stan ein Mischmodell programmiert. Ich sage nicht, dass ein Bayes-Ansatz in diesem Fall besonders gut ist, aber es ist einfach etwas Ordentliches, das ich beitragen kann.

Stan Code

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

Führen Sie das Stan-Modell von R aus

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)

Ergebnisse

Bildbeschreibung hier eingeben

Gestrichelte Linien sind die Grundwahrheit, durchgezogene Linien werden geschätzt.


Ursprüngliche Antwort

Wenn Sie wissen, welche Probe von welcher Narzissensorte stammt, können Sie eine Wechselwirkung zwischen Sorte und Boden-PH abschätzen.

Ihr Modell wird so aussehen

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

Hier ist ein Beispiel in R. Ich habe einige Daten generiert, die so aussehen:

Bildbeschreibung hier eingeben

Klar zwei verschiedene Linien, und die Linien entsprechen zwei Arten. Hier erfahren Sie, wie Sie die Linien mithilfe der linearen Regression schätzen.

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)

Und das Ergebnis ist

> 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

Bei Arten mit der Bezeichnung 0 beträgt die Linie ungefähr

y=19+1PH

Bei Arten mit der Bezeichnung 1 beträgt die Linie ungefähr

y=402PH


Wenn OP die Narzissensorte im Voraus kennt, warum können sie dann die Daten nicht einfach in zwei Teile aufteilen und für jede Sorte zwei separate Regressionen ausführen?
Akavall

Wenn OP nicht an Unterschieden zwischen Narzissensorten interessiert ist (z. B. Wächst die Sorte 1 höher als die Sorte 2, die auf dem PH-Wert des Bodens konditioniert ist), gibt es keinen Grund, alle Daten zusammen zu regressieren, mit Ausnahme von Argumenten zur Genauigkeit.
Demetri Pananos

@Akavail - Sie könnten die Daten aufteilen, aber wenn sie so betrieben werden, ist es einfacher, Vergleiche anzustellen, wenn sie eine Hypothese über Unterschiede zwischen den Sorten testen möchten. Die kombinierte Ausführung würde auch leicht bessere Schätzungen ergeben, wenn eine Annahme gleicher Varianz gültig ist.
Dason

1
Bevor ich mich mit dem EM-Ansatz befasste, dachte ich über den Bayes'schen Ansatz nach. Aber so sehr ich die Bayes-Methode mag, bin ich faul geworden und es ist viel einfacher, einfach den EM-Ansatz zu wählen. Vor diesem Hintergrund bevorzuge ich eine Bayes'sche Analyse und ich denke, dass die Beantwortung von Folgefragen auch viel einfacher ist - es ist möglicherweise schwieriger, das ursprüngliche Modell zu codieren, aber wenn Sie dies tun, ist es viel einfacher, Fragen mit der zu beantworten hintere Verteilung.
Dason

2

Der statistische Ansatz ist zwei der obigen Antworten sehr ähnlich, befasst sich jedoch ein wenig mehr mit der Auswahl der Anzahl latenter Klassen, wenn Sie keine Vorkenntnisse haben. Sie können Informationskriterien oder Sparsamkeit als Richtlinie für die Auswahl der Anzahl latenter Klassen verwenden.

Hier ist ein Stata-Beispiel, das eine Sequenz von Finite-Mix-Modellen (FMMs) mit 2-4 latenten Klassen / Komponenten verwendet. Die erste Tabelle enthält die Koeffizienten für die latente Klassenzugehörigkeit. Diese sind etwas schwierig zu interpretieren, können aber später mit in Wahrscheinlichkeiten umgewandelt werden estat lcprob. Für jede Klasse erhalten Sie außerdem einen Intercept- und einen Ph-Steigungsparameter, gefolgt von latenten Klassengrenzwahrscheinlichkeiten und zwei In-Sample-ICs. Diese Koeffizientenschätzungen werden genauso interpretiert wie die Koeffizienten aus einem linearen Regressionsmodell. Hier sagt Ihnen der kleinste BIC in der Stichprobe, dass Sie das Zweikomponentenmodell als das beste auswählen sollen. AIC wählt seltsamerweise das 3-Komponenten-Modell. Sie können auch Out-of-Sample- ICs verwenden, um die Kreuzvalidierung auszuwählen oder zu verwenden.

.01433133004

Der FMM-Ansatz funktioniert in der Praxis nicht immer so gut, wenn die Klassen weniger streng sind. Es kann vorkommen, dass Sie bei zu vielen latenten Klassen auf Rechenschwierigkeiten stoßen, insbesondere wenn Sie nicht genügend Daten haben oder die Wahrscheinlichkeitsfunktion mehrere lokale Maxima aufweist.

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

Vielen Dank für diese sehr interessante Antwort. Sie haben mir einige neue Forschungskonzepte gegeben!
SlowMagic

0

Ich werde mich auf die Frage der statistischen Signifikanz konzentrieren, da Dason bereits den Modellierungsteil behandelt hat.

Ich bin mit irgendwelchen formalen Tests dafür nicht vertraut (von denen ich mir sicher bin, dass sie existieren), also werfe ich nur ein paar Ideen raus (und werde wahrscheinlich später R-Code und technische Details hinzufügen).

Erstens ist es bequem, die Klassen abzuleiten. Angenommen, Sie haben zwei Linien, die an die Daten angepasst sind, können Sie die beiden Klassen ungefähr rekonstruieren, indem Sie jeden Punkt der Klasse der Linie zuordnen, die ihm am nächsten liegt. Bei Punkten in der Nähe der Kreuzung treten Probleme auf, ignorieren Sie diese jedoch vorerst (es gibt möglicherweise eine Möglichkeit, dies zu umgehen, aber hoffen Sie vorerst, dass sich daran nicht viel ändert).

xlxrxlxrxlxr

Dann sehe ich zwei natürliche Wege, dies zu tun.

Die weniger unterhaltsame Möglichkeit besteht darin, Ihren ursprünglichen Datensatz in Kombination mit den abgeleiteten Klassenbeschriftungen durch eine lineare Regression wie in Demetris Antwort auszuführen.

Interessanter wäre eine modifizierte Version von ANOVA. Es geht darum, ein künstliches Dataset zu erstellen, das die beiden Linien (mit einer ähnlichen Verteilung zwischen ihnen) darstellt, und dann ANOVA anzuwenden. Technisch gesehen müssen Sie dies einmal für die linke und einmal für die rechte Seite tun (dh Sie haben zwei künstliche Datensätze).

y1(i)=β1,1x1(i)+β1,0+e1(i)
β1,1x1(i)+β1,0
β1,1xavg+β1,0
xlavgxWert für die linke Seite (wichtig ist, dass dies über beide Klassen geht, da dies die Dinge konsistenter macht). Das heißt, wir ersetzen y1(i) e ( i ) 1 ,
y~1(i)=β1,1xavg+β1,0+e1(i),
y~1(i)y~2(i)

N


-2

Ist es möglich, dass es ein Fehler ist, beide in dasselbe Diagramm aufzunehmen? Gibt es in Anbetracht des völlig unterschiedlichen Verhaltens der Sorten einen Wert für die Überlappung der Daten? Es scheint mir, dass Sie nach Auswirkungen auf eine Narzissenart suchen, nicht nach den Auswirkungen ähnlicher Umgebungen auf verschiedene Narzissen. Wenn Sie die Daten verloren haben, mit deren Hilfe Art "A" von Art "B" bestimmt werden kann, können Sie einfach Verhalten "A" und Verhalten "B" gruppieren und die Entdeckung von zwei Arten in Ihre Erzählung einbeziehen. Oder, wenn Sie wirklich ein Diagramm möchten, verwenden Sie einfach zwei Datensätze auf derselben Achse. Ich habe nicht annähernd das Fachwissen, das ich in den anderen gegebenen Antworten sehe, deshalb muss ich weniger "geschickte" Methoden finden. Ich würde eine Datenanalyse in einer Arbeitsblattumgebung ausführen, in der die Gleichungen einfacher zu entwickeln sind. Dann, Sobald die Gruppierungen offensichtlich werden, erstellen Sie die beiden separaten Datentabellen, und konvertieren Sie sie in Diagramme / Grafiken. Ich arbeite mit sehr vielen Daten und stelle oft fest, dass meine Annahmen zu unterschiedlichen Korrelationen falsch sind. Das ist es, was uns Daten beim Entdecken helfen sollen. Sobald ich erfahre, dass meine Annahmen falsch sind, zeige ich die Daten basierend auf den ermittelten Verhaltensweisen an und diskutiere diese Verhaltensweisen und die daraus resultierenden statistischen Analysen als Teil der Erzählung.


1
Ich vermute, dass Sie abgelehnt wurden, weil Ihre Antwort keine Klarheit oder Einsicht in die Beantwortung der Frage bietet. Sie müssen Ihre Antwort hilfreicher strukturieren und klarstellen, welche Unterfragen Sie an jedem Punkt beantworten. Die Frage wurde zwischen den Antworten und vor Ihrer Antwort aktualisiert, um deutlich zu machen, dass die Sorteninformationen nicht verfügbar und nicht wiederherstellbar waren.
ReneBt

2
Willkommen bei Cross Validated! Bitte lassen Sie sich nicht abschrecken, wenn Ihre erste Antwort nicht gut ankommt - und einfachere Lösungen können sehr nützlich sein -, aber da der Fragesteller bereits sagt, "ich kann es beobachten und natürlich manuell trennen", scheint dies nicht der Fall zu sein viel hinzufügen.
Scortchi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.