Co jeśli moje dane regresji liniowej zawierają kilka współzależnych zależności liniowych?

34

Powiedzmy, że badam, jak żonkile reagują na różne warunki glebowe. Zebrałem dane na temat pH gleby w porównaniu do dojrzałej wysokości żonkila. Oczekuję relacji liniowej, więc zaczynam o regresji liniowej.

Jednak nie zdawałem sobie sprawy, kiedy rozpocząłem badanie, że populacja zawiera dwie odmiany żonkila, z których każda reaguje bardzo różnie na pH gleby. Zatem wykres zawiera dwie wyraźne zależności liniowe:

pH gleby a wysokość kwiatu (cm)

Oczywiście mogę to zrobić gałką oczną i rozdzielić ręcznie. Ale zastanawiam się, czy istnieje bardziej rygorystyczne podejście.

Pytania:

  1. Czy istnieje test statystyczny, aby ustalić, czy zestaw danych lepiej pasowałby do pojedynczej linii czy N linii?

  2. Jak uruchomić regresję liniową, aby dopasować linie N? Innymi słowy, w jaki sposób mogę rozplątać zmieszane dane?

Mogę myśleć o niektórych podejściach kombinatorycznych, ale wydają się one drogie obliczeniowo.


Wyjaśnienia:

  1. Istnienie dwóch odmian było nieznane w momencie gromadzenia danych. Odmiany każdego żonkila nie zaobserwowano, nie odnotowano i nie odnotowano.

  2. Nie można odzyskać tych informacji. Żonkile zmarły od czasu gromadzenia danych.

Mam wrażenie, że ten problem jest podobny do stosowania algorytmów klastrowania, ponieważ prawie musisz znać liczbę klastrów przed rozpoczęciem. Wierzę, że przy DOWOLNYM zestawie danych zwiększenie liczby linii zmniejszy całkowity błąd rms. W skrajności możesz podzielić swój zestaw danych na dowolne pary i po prostu narysować linię przez każdą parę. (Na przykład, jeśli masz 1000 punktów danych, możesz podzielić je na 500 dowolnych par i narysować linię przez każdą parę.) Dopasowanie byłoby dokładne, a błąd rms wyniósłby dokładnie zero. Ale nie tego chcemy. Chcemy „właściwej” liczby linii.

SlowMagic
źródło
3
czy wiesz, który dafodil jest którą odmianą? Jeśli tak, możesz po prostu dołączyć te informacje do swojego modelu
rep_ho
1
To klasyczny przypadek interakcji statystycznych, jak w odpowiedzi @Demetri Pananos.
rolando2
2
Mam wrażenie, że nie mają informacji o tym, jaką odmianę kwiat miał w swoich danych. Zgadzam się, że gdyby tak mieli, byłby to tylko przypadek zbudowania modelu interakcji lub nawet przeprowadzenia osobnych regresji dla każdej odmiany. Jeśli jednak nie mają tych informacji, nie wszystko jest stracone. Można zbudować model, który szacuje nie tylko oddzielne linie, ale także przewiduje prawdopodobieństwo, że każda obserwacja należy do każdej grupy.
Dason
1
@DemetriPananos Udzieliłem odpowiedzi, która, mam nadzieję, ma sens. W zależności od tego, co chcą zrobić, jest to o wiele więcej pracy. Aby wykonać jakiś test, należy wykonać test ilorazu prawdopodobieństwa lub test losowości lub coś w tym rodzaju. Ale nie dali nam zbyt wiele informacji, a jeśli celem jest po prostu dopasowanie linii i nie mają etykiet, to nie jest tak źle, używając pakietu mixtools.
Dason

Odpowiedzi:

31

Myślę, że odpowiedź Demetri jest świetna, jeśli założymy, że masz etykiety dla różnych odmian. Kiedy czytam twoje pytanie, wydaje mi się, że tak nie jest. Możemy zastosować podejście oparte na algorytmie EM, aby zasadniczo dopasować model, który sugeruje Demetri, ale nie znając etykiet dla odmiany. Na szczęście pakiet mixtools w R zapewnia nam tę funkcjonalność. Ponieważ twoje dane są dość rozdzielone i wydaje się, że masz ich dość, powinno to być dość udane.

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)

Możemy zbadać wyniki

> 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 

Pasował więc do dwóch regresji i oszacował, że 49,7% obserwacji popadło w regresję dla komponentu 1, a 50,2% popadło w regresję dla komponentu 2. Sposób, w jaki symulowałem dane, to był podział 50-50, więc to dobrze.

„Prawdziwe” wartości, których użyłem do symulacji, powinny dać linie:

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

(które oszacowałem „ręcznie” na podstawie twojego wykresu, dzięki czemu dane, które tworzę, wyglądają podobnie do twoich) i linie, które podał algorytm EM w tym przypadku to:

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

Dość cholernie blisko rzeczywistych wartości.

Możemy wykreślić dopasowane linie wraz z danymi

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

Wyposażone linie przez EM

Dason
źródło
21

EDYCJA: Początkowo myślałem, że OP wiedział, które obserwacje pochodzą z jakiego gatunku. Edycja OP wyjaśnia, że ​​moje oryginalne podejście jest niewykonalne. Zostawię to potomności, ale druga odpowiedź jest znacznie lepsza. Na pocieszenie napisałem model mieszanki w Stanie. Nie twierdzę, że podejście bayesowskie jest szczególnie dobre w tym przypadku, ale jest to coś fajnego, co mogę wnieść.

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

Uruchom model Stan od 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)

Wyniki

wprowadź opis zdjęcia tutaj

Linie przerywane są prawdą podstawową, linie ciągłe są szacowane.


Oryginalna odpowiedź

Jeśli wiesz, która próbka pochodzi z jakiej odmiany żonkila, możesz oszacować interakcję między odmianą a PH gleby.

Twój model będzie wyglądał

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

Oto przykład w R. Wygenerowałem niektóre dane, które wyglądają tak:

wprowadź opis zdjęcia tutaj

Oczywiście dwie różne linie, a linie odpowiadają dwóm gatunkom. Oto jak oszacować linie za pomocą regresji liniowej.

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)

I wynik jest taki

> 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

W przypadku gatunków oznaczonych jako 0 linia wynosi około

y=19+1PH

W przypadku gatunków oznaczonych 1 linia wynosi około

y=402PH

Demetri Pananos
źródło
Jeśli OP zna z góry różne żonkile, dlaczego nie mogą po prostu podzielić danych na dwie części i przeprowadzić dwie osobne regresje dla każdej odmiany?
Akavall
Jeśli OP nie jest zainteresowany różnicami między odmianami żonkili (np. Czy odmiana 1 rośnie wyżej niż odmiana 2 uwarunkowana pH gleby), nie ma powodu, aby regresować wszystkie dane razem, z wyjątkiem argumentów dotyczących precyzji.
Demetri Pananos
@Akavail - mogą dzielić dane, ale uruchamianie ich w ten sposób ułatwia dokonywanie jakichkolwiek porównań, jeśli byliby zainteresowani testowaniem jakiejkolwiek hipotezy na temat różnic między odmianami. Uruchamianie go razem dałoby również nieco lepsze oszacowania, gdyby poprawne było założenie równości wariancji.
Dason
1
Zanim przyjrzałem się podejściu EM, rozważałem podejście Bayesa. Ale tak jak lubię bayesowski sposób robienia rzeczy, byłem leniwy i dużo łatwiej jest po prostu przyjąć podejście EM. Powiedziawszy to, zdecydowanie wolę analizę bayesowską i myślę, że znacznie ułatwia to odpowiedzi na pytania uzupełniające - możesz mieć trudności z kodowaniem początkowego modelu, ale kiedy to zrobisz, o wiele łatwiej odpowiedzieć na pytania, które możesz mieć przy użyciu rozkład tylny.
Dason
2

Podejście statystyczne jest bardzo podobne do dwóch powyższych odpowiedzi, ale dotyczy nieco więcej sposobu wybierania liczby ukrytych klas, jeśli nie masz wcześniejszej wiedzy. Możesz użyć kryteriów informacyjnych lub parsimony jako przewodnika przy wyborze liczby ukrytych klas.

Oto przykład Stata wykorzystujący sekwencję modeli skończonych mieszanin (FMM) z 2-4 ukrytymi klasami / komponentami. Pierwsza tabela to współczynniki ukrytego członkostwa w klasie. Są one nieco trudne do interpretacji, ale można je później przekształcić w prawdopodobieństwa estat lcprob. Dla każdej klasy otrzymujesz również parametr przechwytywania i nachylenia ph, a następnie krańcowe prawdopodobieństwo ukryte klasy i dwa układy scalone w próbce. Te oszacowania współczynników są interpretowane tak jak współczynniki z modelu regresji liniowej. W tym przypadku najmniejszy BIC w próbce mówi o wybraniu modelu dwuskładnikowego jako najlepszego. AIC dziwnie wybiera model 3-komponentowy. Możesz także użyć układów scalonych poza próbką, aby wybrać lub użyć weryfikacji krzyżowej.

.01433133004

Podejście FMM nie zawsze tak dobrze sprawdza się w praktyce, jeśli zajęcia są mniej surowe. Możesz napotkać trudności obliczeniowe ze zbyt wieloma ukrytymi klasami, szczególnie jeśli nie masz wystarczającej ilości danych lub funkcja wiarygodności ma wiele lokalnych maksimów.

. 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
źródło
Dziękuję za tę bardzo interesującą odpowiedź. Dałeś mi kilka nowych koncepcji do badań!
SlowMagic
0

Skupię się na kwestii istotności statystycznej, ponieważ Dason już omówił część dotyczącą modelowania.

Nie jestem zaznajomiony z żadnymi formalnymi testami do tego (co na pewno istnieję), więc po prostu wyrzucę kilka pomysłów (i prawdopodobnie dodam kod R i szczegóły techniczne później).

Po pierwsze, wygodnie jest wnioskować o klasach. Zakładając, że masz dwie linie dopasowane do danych, możesz w przybliżeniu zrekonstruować dwie klasy, przypisując każdy punkt do klasy linii najbliższej. W przypadku punktów w pobliżu skrzyżowania napotkasz problemy, ale na razie po prostu je zignoruj ​​(może być sposób na obejście tego, ale na razie mam nadzieję, że to się niewiele zmieni).

xlxrxlxrxlxr

Są dwa naturalne sposoby, aby to zrobić.

Mniej zabawnym sposobem jest po prostu uruchomienie oryginalnego zestawu danych w połączeniu z wywnioskowanymi etykietami klas za pomocą regresji liniowej, jak w odpowiedzi Demetri.

Bardziej interesującym sposobem jest zmodyfikowana wersja ANOVA. Chodzi o to, aby utworzyć sztuczny zestaw danych, który reprezentuje dwie linie (z podobnym rozmieszczeniem między nimi), a następnie zastosować ANOVA. Technicznie rzecz biorąc, musisz to zrobić raz dla lewej strony, a raz dla prawej (tzn. Będziesz mieć dwa sztuczne zestawy danych).

y1(i)=β1,1x1(i)+β1,0+e1(i)
β1,1x1(i)+β1,0
β1,1xzaprzeciwkosol+β1,0
gdzie xlzaprzeciwkosol jest dosłownie średnią xwartość dla lewej strony (co ważne, dotyczy to obu klas, ponieważ dzięki temu wszystko jest bardziej spójne). Oznacza to, że zastępujemyy1(ja) z
y~1(ja)=β1,1xzaprzeciwkosol+β1,0+mi1(ja),
i my podobnie do drugiej klasy. Oznacza to, że nowy zestaw danych składa się z kolekcjiy~1(ja) i podobnie y~2)(ja).

Zauważ, że oba podejścia w sposób naturalny uogólniają się N. zajęcia

Jacob Maibach
źródło
-2

Czy to możliwe, że uwzględnienie obu na tym samym wykresie jest błędem? Biorąc pod uwagę, że odmiany zachowują się zupełnie inaczej, czy jest jakaś wartość nakładania się danych? Wydaje mi się, że szukasz wpływu na gatunek żonkila, a nie wpływu podobnych środowisk na różne żonkile. Jeśli utraciłeś dane, które pomagają określić gatunek „A” z gatunku „B”, możesz po prostu pogrupować zachowanie „A” i zachowanie „B” i uwzględnić odkrycie dwóch gatunków w swojej narracji. Lub, jeśli naprawdę potrzebujesz jednego wykresu, po prostu użyj dwóch zestawów danych na tej samej osi. Nie mam nigdzie wiedzy specjalistycznej, którą widzę w innych udzielonych odpowiedziach, więc muszę znaleźć mniej „wykwalifikowane” metody. Przeprowadziłbym analizę danych w środowisku arkusza roboczego, w którym łatwiej jest opracować równania. Następnie, gdy grupy staną się oczywiste, utwórz dwie osobne tabele danych, a następnie przekonwertuj je na wykresy / wykresy. Pracuję z dużą ilością danych i często okazuje się, że moje założenia dotyczące różnych korelacji okazują się błędne; to właśnie dane mają nam pomóc odkryć. Gdy dowiem się, że moje założenia są błędne, wyświetlam dane na podstawie odkrytych zachowań i omawiam te zachowania oraz wynikające z nich analizy statystyczne w ramach narracji.

KBKIA
źródło
1
Zastanawiam się, że zostałeś przegłosowany, ponieważ twoja odpowiedź nie zawiera żadnej jasności ani wglądu w odpowiedzi na pytanie. Musisz ustrukturyzować swoją odpowiedź w sposób bardziej pomocny i wyjaśnić, do których pytań zadajesz w każdym punkcie. Pytanie zostało zaktualizowane między odpowiedziami i przed odpowiedzią, aby wyraźnie stwierdzić, że informacje o odmianie nie były dostępne, nie można ich odzyskać.
ReneBt
2
Witamy w Cross Validated! Nie zniechęcaj się tym, że twoja pierwsza odpowiedź nie jest dobrze odbierana - a prostsze rozwiązania mogą być bardzo przydatne - ale ponieważ pytający już stwierdza: „Oczywiście mogę to zrobić i rozdzielić ręcznie”, wydaje się, że nie dodawać dużo.
Scortchi - Przywróć Monikę