Publikacje naukowe · Recenzja

Odpowiedź recenzentom w sprawach statystycznych – wzory po polsku i angielsku

Jak napisać odpowiedź na recenzję artykułu, gdy uwagi dotyczą statystyki: zasady, struktura listu i dwanaście sytuacji – od prośby o moc post hoc i korektę porównań, przez model mieszany, braki danych i test Harmana, po przyznanie się do błędu. Każdy wzór po angielsku i po polsku, z liczbami z analiz w R.

Strona główna / Blog / Odpowiedź recenzentom
W skrócie: Odpowiedź recenzentom pisz punkt po punkcie: zacytuj uwagę, zacznij od sedna, pokaż zmianę z numerem strony i wiersza, a każdą niezgodę uzasadnij źródłem. W sprawach statystycznych najpierw wykonaj analizy, potem pisz – tabela analiz wrażliwości przekonuje bardziej niż zapewnienia. Mocy post hoc nie podawaj jako argumentu, a testu Harmana – jako dowodu braku błędu wspólnej metody.

Zanim zaczniesz odpowiadać recenzentom

Decyzja „major revision” z uwagami do statystyki nie przekreśla artykułu – redaktor czeka na dowód, że wnioski wytrzymują krytykę. Poniżej znajdziesz zasady i strukturę odpowiedzi na recenzję oraz wzory po angielsku i po polsku na dwanaście typowych próśb recenzentów. Cytowane uwagi recenzentów to przykłady ułożone na potrzeby tego tekstu – nie pochodzą z konkretnych recenzji ani czasopism. Jeśli rękopis dopiero powstaje, zacznij od wpisu o najczęstszych zarzutach recenzentów do statystyki.

  1. Rozpisz uwagi w tabeli i ponumeruj je (R1.1, R1.2…); uwagę o dwóch sprawach podziel na dwie.
  2. Przy każdej uwadze zdecyduj, z czym masz do czynienia: z błędem (poprawiasz i przyznajesz), rozsądną prośbą (wykonujesz analizę), nieporozumieniem (poprawiasz tekst) czy prośbą wątpliwą (wyjaśniasz stanowisko ze źródłem).
  3. Najpierw wykonaj analizy, potem pisz, a każdą nową analizę zapisz w skrypcie (zob. pakiet replikacyjny).
  4. Pierwszą wersję napisz tylko dla zespołu. Noble (2017) radzi pisać odpowiedź dwa razy: najpierw wersję, w której można dać upust emocjom, a po kilku dniach – wersję dla recenzentów.

Zasady dobrej odpowiedzi

Noble (2017) zebrał dziesięć praktycznych reguł pisania odpowiedzi recenzentom. W sprawach statystycznych najważniejsze są te:

  • Odpowiadaj na każdy punkt – pominięte uwagi to częsta skarga recenzentów.
  • Zacznij od sedna: czy się zgadzasz i co zrobiłeś. Uzasadnienie podaj potem.
  • Pokaż zmianę: zacytuj nowy fragment i podaj stronę oraz wiersze, zaznaczając, której wersji dotyczą. Zdanie „This point is addressed in the manuscript” nie mówi, czy cokolwiek zmieniono.
  • Odróżnij graficznie uwagę, odpowiedź i zmieniony tekst, np. kursywą i cudzysłowem.
  • Gdy możesz, zrób to, o co prosi recenzent – nawet analizę, którą uważasz za mało informatywną. Pokaż wynik w odpowiedzi i wyjaśnij, dlaczego nie trafi do artykułu.
  • Możesz się nie zgodzić – uprzejmie, z argumentem statystycznym, źródłem i propozycją kompromisu (np. wynik w suplemencie). Decyzję zostaw redaktorowi.

Przykładami uprzejmej niezgody są sytuacje 1 i 7, a pozostałe wzory pokazują zgodę z wprowadzeniem zmiany.

Struktura listu i dokumentu z odpowiedziami

Odpowiedź to zwykle krótki list do redaktora i dokument z odpowiedziami. Noble (2017) zaleca, by dokument zaczynał się od podsumowania zmian i opisu konwencji zapisu, a dalej zawierał pełne recenzje z odpowiedziami po każdym punkcie. Tabele tylko dla recenzentów oznacz jako takie, a wymogi formalne sprawdź w instrukcji czasopisma.

Dear Dr [Name], Thank you for the opportunity to revise our manuscript "[title]" ([ID]). We have addressed every comment; reviewer comments are in italics, changes in quotation marks, and page and line numbers refer to the revised version. The main changes are: (1) [e.g., we corrected a scoring error and re-ran all analyses; the conclusion regarding Hypothesis 2 has changed]; (2) [e.g., we now model the nesting of teachers within schools]. Sincerely, [names]
Szanowni Państwo, dziękujemy za możliwość poprawienia artykułu „[tytuł]” ([numer]). Odnieśliśmy się do wszystkich uwag; uwagi Recenzentów zapisano kursywą, zmiany w artykule w cudzysłowie, a numery stron i wierszy dotyczą wersji poprawionej. Najważniejsze zmiany: (1) [np. poprawiliśmy błąd kodowania i powtórzyliśmy analizy – zmienił się wniosek dotyczący hipotezy 2]; (2) [np. uwzględniliśmy zagnieżdżenie nauczycieli w szkołach]. Z wyrazami szacunku, [autorzy]

Pobierz wzór odpowiedzi recenzentom w formacie Word (.docx) – list do redakcji i tabela „uwaga – odpowiedź – miejsce zmiany” po angielsku i po polsku, wypełniona przykładami z tego wpisu.

Sprzeczne uwagi recenzentów

Gdy prośby recenzentów się wykluczają, Noble (2017) radzi wskazać to redaktorowi prowadzącemu w osobnym liście. Nie rozstrzygaj sporu po cichu: zaproponuj rozwiązanie z uzasadnieniem i poproś o decyzję.

Dear Dr [Name], Two comments point in opposite directions: Reviewer 1 (comment [number]) asks us to [e.g., present only the mixed-effects model], whereas Reviewer 2 (comment [number]) asks us to [e.g., keep the single-level model]. We propose to [e.g., report the mixed-effects model as primary and the single-level model in the Supplement], because [reason]. Please let us know if you prefer a different solution.
Szanowni Państwo, dwie uwagi wskazują przeciwne kierunki zmian: Recenzent 1 (uwaga [numer]) prosi o [np. przedstawienie wyłącznie modelu mieszanego], a Recenzent 2 (uwaga [numer]) – o [np. pozostawienie modelu jednopoziomowego]. Proponujemy [np. model mieszany jako analizę główną, a jednopoziomowy w suplemencie], ponieważ [uzasadnienie]. Prosimy o informację, jeśli Redakcja woli inne rozwiązanie.

Przykład: jeden rękopis i prośby recenzentów

Wzory odnoszą się do jednego badania (dane symulowane): 480 nauczycieli z 40 szkół. Hipoteza H1 zakładała, że wyższe obciążenie pracą (skala 1–5) wiąże się z silniejszym wyczerpaniem emocjonalnym (1–7), a H2 – że wyższe wsparcie w pracy wiąże się ze słabszym wyczerpaniem. Czterdzieści osób (8.3%) pominęło pytania o wsparcie, więc regresję wieloraką policzono na 440 osobach. Po korekcie błędu kodowania (sytuacja 12): obciążenie b = 0.65, 95% CI [0.53, 0.77], p < .001; wsparcie b = −0.22, 95% CI [−0.35, −0.09], p < .001; R² = .23. Tabela 1 i rysunek 1 zbierają analizy, o które poprosili recenzenci – taka tabela przekonuje bardziej niż zapewnienia, że wyniki „są odporne”.

Tabela 1

Związek obciążenia pracą i wsparcia w pracy z wyczerpaniem emocjonalnym w analizach wykonanych na prośbę recenzentów

Wariant analizyNObciążenie pracą, b [95% CI]Wsparcie w pracy, b [95% CI]
Pierwsza wersja (pozycja wsp3 bez odwrócenia)a4400.67 [0.55, 0.80]0.11 [−0.06, 0.29]
Model główny po korekcie kodowania4400.65 [0.53, 0.77]−0.22 [−0.35, −0.09]
+ wiek, płeć i typ szkoły4400.65 [0.52, 0.77]−0.23 [−0.36, −0.10]
+ satysfakcja z pracy (mediator)b4400.65 [0.53, 0.78]−0.23 [−0.37, −0.09]
Model mieszany (losowy wyraz wolny szkoły)4400.63 [0.51, 0.75]−0.24 [−0.37, −0.12]
Bez 6 obserwacji odstających4340.76 [0.64, 0.87]−0.29 [−0.41, −0.17]
Regresja odporna (estymator MM)4400.74 [0.62, 0.87]−0.29 [−0.43, −0.16]
FIML (wszystkie osoby)4800.68 [0.56, 0.79]−0.22 [−0.34, −0.09]
Błędy standardowe HC34400.65 [0.52, 0.78]−0.22 [−0.35, −0.09]
Bootstrap (2000 prób)4400.65 [0.52, 0.79]−0.22 [−0.35, −0.09]

Uwaga. Zmienna zależna: wyczerpanie emocjonalne (1–7); b – niestandaryzowany współczynnik regresji. W modelu mieszanym 95% CI wyznaczono ze stopni swobody Satterthwaite’a, a w wariancie FIML uwzględniono 40 osób bez odpowiedzi na pytania o wsparcie. Dane symulowane.
a Wersja z błędem kodowania (sytuacja 12). b Tylko dla przejrzystości – satysfakcja jest prawdopodobnie mediatorem (sytuacja 3).

Wykres lasu ze współczynnikami b i 95% przedziałami ufności w dziesięciu wariantach analizy: dla obciążenia pracą od 0.63 do 0.76, dla wsparcia po korekcie od −0.29 do −0.22; w wersji z błędem kodowania współczynnik wsparcia wynosił 0.11, a jego przedział obejmował zero
Rysunek 1. Współczynniki regresji wyczerpania emocjonalnego z 95% CI we wszystkich analizach z tabeli 1 – po korekcie błędu oba związki są stabilne. Linie przerywane – model główny po korekcie, czerwony punkt – wersja z błędem kodowania, szary – kontrola mediatora. Obliczenia: R (dane symulowane).

1. Prośba o moc post hoc

Przykładowa uwaga recenzenta: „The association between support and reduced efficacy was not significant. Please report the post hoc power of this test.”

Moc obserwowana, czyli moc policzona z uzyskanego efektu, jest funkcją samej wartości p. Przy p = .05 wynosi 50.0%, a w przykładzie (b = 0.07, 95% CI [−0.08, 0.22], p = .348) – 15.5% (rysunek 2A). Hoenig i Heisey (2001) pokazali, że interpretowanie wyników nieistotnych mocą liczoną po badaniu jest błędem logicznym. Na pytanie, jakie efekty badanie mogło wykryć, odpowiada analiza wrażliwości (rysunek 2B) i przedział ufności. Brak efektu wykażesz dopiero testem równoważności (zob. gdy hipoteza się nie potwierdziła).

Po lewej krzywa mocy obserwowanej w zależności od wartości p: przy p = .05 moc wynosi 50.0%, przy p = .348 – 15.5%. Po prawej krzywa mocy dla N = 440 i α = .05: moc 80% osiągana jest przy cząstkowym r = .13
Rysunek 2. A: moc obserwowana wyznaczona z samej wartości p (przybliżenie testem z). B: analiza wrażliwości dla testu jednego predyktora w regresji z dwoma predyktorami (N = 440, α = .05). Obliczenia: R (dane symulowane).
Response 1.1: Thank you. We suggest not reporting observed (post hoc) power, because it is a direct function of the p value; Hoenig and Heisey (2001) explain why it is uninformative. Instead, we report a sensitivity analysis: with N = 440 and α = .05, the test had 80% power to detect f² = 0.018 (partial r = .13). The 95% CI for the standardized coefficient, β = 0.04 [−0.05, 0.14], shows which effects remain compatible with our data (p. [X], lines [Y–Z]).
Odpowiedź 1.1: Dziękujemy. Proponujemy nie podawać mocy obserwowanej (post hoc), ponieważ jest ona bezpośrednią funkcją wartości p i nie wnosi nowej informacji (Hoenig i Heisey, 2001). Zamiast niej podajemy analizę wrażliwości: przy N = 440 i α = .05 test miał 80% mocy dla efektu f² = 0.018 (r cząstkowe = .13). 95% przedział ufności dla współczynnika standaryzowanego, β = 0.04 [−0.05, 0.14], pokazuje, jakie efekty są zgodne z danymi (s. [X], w. [Y–Z]).

2. Korekta na wielokrotne porównania

Przykładowa uwaga recenzenta: „Six tests (two predictors × three burnout dimensions) are reported without any correction for multiple testing. Please correct or justify.”

Ustal rodzinę testów. Jeśli sześć testów sprawdza jedną parę hipotez, kontroluj ryzyko choćby jednego błędu I rodzaju w całej rodzinie, np. procedurą Holma (Holm, 1979), która nigdy nie odrzuca mniej hipotez niż korekta Bonferroniego. W przykładzie związek wsparcia z cynizmem po korekcie przestał być istotny. Gdy testy odpowiadają na odrębne pytania, możesz się nie zgodzić: Perneger (1998) przypomina, że korekta Bonferroniego dotyczy hipotezy o prawdziwości wszystkich hipotez zerowych naraz i zwiększa ryzyko błędu II rodzaju.

Response 1.2: We agree. The six tests address one family of hypotheses (H1 and H2), so we now apply the Holm procedure. Four of the five significant associations remain significant (largest adjusted p = .003), but the association between support and cynicism (b = −0.16, p = .030) does not (Holm-adjusted p = .060). We revised the Results, Discussion and Abstract accordingly and report adjusted p values in Table [N] (p. [X], lines [Y–Z]).
Odpowiedź 1.2: Zgadzamy się. Sześć testów dotyczy jednej rodziny hipotez (H1 i H2), dlatego stosujemy procedurę Holma. Istotne pozostały cztery z pięciu związków (największe skorygowane p = .003), ale związek wsparcia z cynizmem (b = −0.16, p = .030) już nie (p po korekcie Holma = .060). Zmieniliśmy wyniki, dyskusję i streszczenie, a skorygowane wartości p podajemy w Tabeli [N] (s. [X], w. [Y–Z]).

3. Dodatkowe zmienne kontrolne

Przykładowa uwaga recenzenta: „Please control for age, gender, school type and job satisfaction, which are known correlates of burnout.”

Wysocki i in. (2022) pokazują, że niewłaściwie dobrane zmienne kontrolne mogą zwiększyć obciążenie oszacowania, dlatego każdą trzeba uzasadnić przyczynowo. Wiek, płeć i typ szkoły mogą być zmiennymi zakłócającymi. Satysfakcja z pracy jest raczej skutkiem obciążenia, czyli mediatorem – jej kontrola usunęłaby część związku, który chcesz oszacować. W przykładzie kowarianty prawie nic nie zmieniły (tabela 1), a model z satysfakcją pokazano tylko w suplemencie.

Response 1.3: Thank you. We added age, gender and school type, which may affect both workload and burnout; the results are virtually unchanged (workload b = 0.65, 95% CI [0.52, 0.77]; support b = −0.23, 95% CI [−0.36, −0.10]). We did not add job satisfaction to the primary model, because it is plausibly a consequence of workload (a mediator); Wysocki et al. (2022) show that inappropriate controls can increase bias. The model with satisfaction is in Table S[N].
Odpowiedź 1.3: Dziękujemy. Dodaliśmy wiek, płeć i typ szkoły, które mogą wpływać na obciążenie i na wypalenie; wyniki praktycznie się nie zmieniły (obciążenie b = 0.65, 95% CI [0.52, 0.77]; wsparcie b = −0.23, 95% CI [−0.36, −0.10]). Nie dodaliśmy do modelu głównego satysfakcji z pracy, ponieważ jest ona prawdopodobnie skutkiem obciążenia (mediatorem), a niewłaściwe zmienne kontrolne mogą zwiększyć obciążenie oszacowań (Wysocki i in., 2022). Model z satysfakcją podajemy w Tabeli S[N].

4. Model mieszany dla danych zagnieżdżonych

Przykładowa uwaga recenzenta: „Teachers are nested within 40 schools. Please account for clustering, for example with a multilevel model, and report the intraclass correlation.”

Aarts i in. (2014) pokazali, że ignorowanie zależności między obserwacjami może podnieść odsetek wyników fałszywie istotnych z nominalnych 5% nawet do 80%. W przykładzie ICC = .10, a model wielopoziomowy dał podobne współczynniki (tabela 1), bo obciążenie różni się głównie między nauczycielami tej samej szkoły. Dla predyktora na poziomie szkoły różnica była wyraźna: błąd standardowy typu szkoły wzrósł z 0.124 do 0.185, a p – z .112 do .283. Przy pomiarach powtarzanych zob. ANOVA z powtarzanymi pomiarami czy model mieszany.

Response 1.4: We agree. The intraclass correlation for exhaustion was ICC = .10, so we re-estimated the model as a linear mixed-effects model with a random intercept for school (REML, Satterthwaite degrees of freedom). The fixed effects were very similar: workload b = 0.63, 95% CI [0.51, 0.75]; support b = −0.24, 95% CI [−0.37, −0.12]; both p < .001. This model is now the primary analysis (p. [X], lines [Y–Z]); the single-level model is in Supplementary Table S[N].
Odpowiedź 1.4: Zgadzamy się. Korelacja wewnątrzklasowa dla wyczerpania wyniosła ICC = .10, dlatego oszacowaliśmy liniowy model mieszany z losowym wyrazem wolnym szkoły (REML, stopnie swobody Satterthwaite’a). Efekty stałe były bardzo zbliżone: obciążenie b = 0.63, 95% CI [0.51, 0.75]; wsparcie b = −0.24, 95% CI [−0.37, −0.12]; oba p < .001. Ten model jest teraz analizą główną (s. [X], w. [Y–Z]), a model jednopoziomowy podajemy w Tabeli S[N].

5. Wartości odstające

Przykładowa uwaga recenzenta: „Figure 2 suggests a few respondents with maximal workload but minimal exhaustion. Were outliers examined, and do they affect the results?”

Gdy reguły nie zapisano przed badaniem, Leys i in. (2019) radzą podać wyniki z obserwacjami odstającymi i bez nich albo wyniki metod odpornych. W przykładzie kryterium |reszta studentyzowana| > 3 wskazało sześć osób (t = −3.18). Przy wszystkich pozycjach obciążenia wybrały 5, a przy pozycjach pozostałych skal – 1. To raczej nieuważne odpowiedzi niż prawdziwe wyniki. Bez nich oba związki się wzmocniły (tabela 1). Zob. też wartości odstające – jak je wykryć.

Response 2.2: Thank you. Studentized residuals (|t| > 3) identified six respondents (t = −3.18) who chose the highest option on every workload item and the lowest on every other item, suggesting careless responding. As this rule was not preregistered, the full sample remains primary; following Leys et al. (2019), we also report results without these cases (workload b = 0.76, 95% CI [0.64, 0.87]; support b = −0.29, 95% CI [−0.41, −0.17]) and from a robust MM regression. The conclusions do not change (Table S[N]).
Odpowiedź 2.2: Dziękujemy. Reszty studentyzowane (|t| > 3) wskazały sześć osób (t = −3.18), które przy każdej pozycji obciążenia wybrały najwyższą, a przy pozostałych najniższą odpowiedź, co sugeruje nieuważne odpowiadanie. Reguły nie zarejestrowaliśmy wcześniej, więc analizą główną pozostaje pełna próba; zgodnie z zaleceniem Leysa i in. (2019) podajemy też wyniki bez tych osób (obciążenie b = 0.76, 95% CI [0.64, 0.87]; wsparcie b = −0.29, 95% CI [−0.41, −0.17]) i regresji odpornej MM. Wnioski się nie zmieniają (Tabela S[N]).

6. Braki danych

Przykładowa uwaga recenzenta: „The sample drops from 480 to 440, but missing data handling is not described. Please describe it and use an appropriate method.”

Programy domyślnie usuwają osoby z brakami. Schafer i Graham (2002) – poza nielicznymi wyjątkami – odradzają takie starsze, doraźne metody i zalecają estymację metodą największej wiarygodności albo imputację wielokrotną. Podaj, ile brakuje, co wiadomo o mechanizmie braków (MCAR, MAR, MNAR) i jak zmieniły się wyniki. W przykładzie FIML dał wyniki zbliżone do analizy pełnych przypadków (tabela 1). Więcej: braki danych i imputacja wielokrotna w R.

Response 2.3: We agree and now describe missing data (p. [X], lines [Y–Z]). Forty teachers (8.3%) skipped the support questions; no other variable had missing values. As they reported higher exhaustion (M = 3.88 vs. 3.27), the data are unlikely to be missing completely at random. Following Schafer and Graham (2002), we used full information maximum likelihood (all 480 cases, missing-at-random assumption): workload b = 0.68, 95% CI [0.56, 0.79]; support b = −0.22, 95% CI [−0.34, −0.09]. Complete-case results are in Table S[N].
Odpowiedź 2.3: Zgadzamy się i dodaliśmy opis braków danych (s. [X], w. [Y–Z]). Czterdziestu nauczycieli (8.3%) pominęło pytania o wsparcie; w innych zmiennych braków nie było. Osoby te deklarowały wyższe wyczerpanie (M = 3.88 wobec 3.27), więc braki raczej nie są całkowicie losowe. Zgodnie z zaleceniami Schafera i Grahama (2002) oszacowaliśmy model metodą FIML (480 osób, założenie MAR): obciążenie b = 0.68, 95% CI [0.56, 0.79]; wsparcie b = −0.22, 95% CI [−0.34, −0.09]. Wyniki dla pełnych przypadków podajemy w Tabeli S[N].

7. Normalność rozkładu

Przykładowa uwaga recenzenta: „Exhaustion is skewed and the Shapiro–Wilk test is significant (p < .001). Please use non-parametric methods or transform the variable.”

Tu recenzent się myli – odpowiedź to uprzejma korekta poparta analizą. Regresja liniowa zakłada normalność błędów, a nie zmiennej zależnej czy predyktorów (Williams i in., 2013), dlatego sprawdzasz reszty regresji. Przy dużej próbie test Shapiro–Wilka wykrywa nawet drobne odchylenia. Najmocniejszym argumentem jest pokazanie, że wnioski nie zależą od założenia: przedziały z błędami HC3 i z bootstrapu są praktycznie takie same (tabela 1). Zob. też jak sprawdzić normalność rozkładu.

Response 2.4: Thank you. As Williams et al. (2013) clarify, linear regression assumes normally distributed errors, not a normal outcome. Our residuals were only slightly non-normal (skewness = −0.16, excess kurtosis = 0.29); with N = 440, the Shapiro–Wilk test detects even such departures (W = .990, p = .004). HC3 and bootstrap (2,000 resamples) confidence intervals were practically identical (workload: [0.52, 0.78] and [0.52, 0.79]; support: [−0.35, −0.09] in both), so our inferences do not depend on this assumption (p. [X], lines [Y–Z]).
Odpowiedź 2.4: Dziękujemy. Jak wyjaśniają Williams i in. (2013), regresja liniowa zakłada normalność błędów, a nie zmiennej zależnej. Reszty naszego modelu odbiegały od normalności tylko nieznacznie (skośność = −0.16, kurtoza = 0.29); przy N = 440 test Shapiro–Wilka wykrywa nawet takie odchylenia (W = .990, p = .004). Przedziały ufności z błędami HC3 i z bootstrapu (2000 prób) były praktycznie identyczne (obciążenie: [0.52, 0.78] i [0.52, 0.79]; wsparcie: [−0.35, −0.09] w obu), więc wnioski nie zależą od tego założenia (s. [X], w. [Y–Z]).

8. Błąd wspólnej metody (CMV) i test Harmana

Przykładowa uwaga recenzenta: „All variables were self-reported in one survey. Please address common method variance, for example with Harman’s single-factor test.”

Podsakoff i in. (2003) opisują źródła błędu wspólnej metody oraz proceduralne i statystyczne sposoby jego ograniczania. Aguirre-Urreta i Hu (2019) wykazali jednak w symulacjach, że test Harmana słabo wykrywa ten błąd. W naszych danych celowo dodany wspólny czynnik metody podniósł korelację obciążenia z wyczerpaniem z .41 do .54, a pierwsza nierotowana składowa wyjaśniała tylko 29.2% wariancji 21 pozycji – mniej niż popularny próg 50%. Test możesz wykonać, ale nie jako dowód braku CMV. Zob. też zarzuty dotyczące CMV i trafności narzędzi.

Response 2.5: We agree that common method variance is plausible. As requested, we ran Harman's single-factor test: the first unrotated component explained 29.2% of the item variance. However, Aguirre-Urreta and Hu (2019) showed that this test has limited ability to detect method effects, so we do not treat it as evidence that bias is absent. The revised Limitations (p. [X], lines [Y–Z]) describe our procedural remedies [e.g., anonymity, different response formats], acknowledge possible inflation and recommend multi-source or time-lagged designs, in line with Podsakoff et al. (2003).
Odpowiedź 2.5: Zgadzamy się, że błąd wspólnej metody jest możliwy. Zgodnie z prośbą wykonaliśmy test jednego czynnika Harmana: pierwsza nierotowana składowa wyjaśniała 29.2% wariancji pozycji. Aguirre-Urreta i Hu (2019) wykazali jednak, że test ten słabo wykrywa efekty wspólnej metody, więc nie traktujemy wyniku jako dowodu braku błędu. W części o ograniczeniach (s. [X], w. [Y–Z]) opisujemy zabezpieczenia proceduralne [np. anonimowość, różne formaty odpowiedzi] i możliwe zawyżenie związków, a – zgodnie z przeglądem Podsakoffa i in. (2003) – zalecamy dane z wielu źródeł lub pomiary rozdzielone w czasie.

9. Inwariancja pomiaru

Przykładowa uwaga recenzenta: „Women and men are compared on exhaustion, but measurement invariance across gender is not tested.”

Putnick i Bornstein (2016) podkreślają, że przed porównaniem średnich trzeba sprawdzić inwariancję pomiaru – zwykle w krokach: konfiguracyjnym, metrycznym i skalarnym. W przykładzie wielogrupowa CFA skali wyczerpania (362 kobiety, 118 mężczyzn, estymator MLR) pokazała, że równość ładunków i wyrazów wolnych nie pogorszyła dopasowania. Kryteria i częściową inwariancję omawiamy we wpisie inwariancja pomiaru krok po kroku, a definicję – w haśle inwariancja pomiaru w CB-SEM.

Response 2.6: Thank you. We tested invariance of the exhaustion scale across women (n = 362) and men (n = 118) with multigroup CFA (MLR). The configural model fitted well by CFI and SRMR, χ²(10) = 22.06, CFI = .989, RMSEA = .074, SRMR = .020. Equal loadings and then equal intercepts did not worsen the fit: Δχ²(4) = 2.47, p = .650, ΔCFI = .001, ΔRMSEA = −.015; Δχ²(4) = 1.22, p = .874, ΔCFI = .002, ΔRMSEA = −.014. Scalar invariance supports comparing latent means (Table S[N]).
Odpowiedź 2.6: Dziękujemy. Inwariancję skali wyczerpania sprawdziliśmy wielogrupową CFA (kobiety: n = 362, mężczyźni: n = 118; MLR). Model konfiguracyjny był dobrze dopasowany według CFI i SRMR, χ²(10) = 22.06, CFI = .989, RMSEA = .074, SRMR = .020. Równość ładunków, a potem wyrazów wolnych nie pogorszyła dopasowania: Δχ²(4) = 2.47, p = .650, ΔCFI = .001, ΔRMSEA = −.015; Δχ²(4) = 1.22, p = .874, ΔCFI = .002, ΔRMSEA = −.014. Inwariancja skalarna uzasadnia porównanie średnich latentnych (Tabela S[N]).

10. Język przyczynowy

Przykładowa uwaga recenzenta: „The design is cross-sectional, yet workload ‘leads to’ burnout and support ‘protects’ teachers. Please revise the causal language.”

Grosz i in. (2020) zauważają, że autorzy badań nieeksperymentalnych unikają jawnych pytań przyczynowych, a mimo to interpretują wyniki przyczynowo – tylko nie wypowiadają swoich założeń. Masz dwie uczciwe drogi: język związków, zgodny ze schematem przekrojowym, albo jawne pytanie przyczynowe z wypisanymi założeniami i ograniczeniami. Zamiana pojedynczych słów nie wystarczy, jeśli abstrakt nadal mówi o wpływie. Tabelę dopuszczalnych sformułowań znajdziesz we wpisie jak napisać dyskusję wyników.

Zdania z językiem przyczynowym i ich wersje opisujące związek
PrzedPo
Workload leads to emotional exhaustion.Higher workload was associated with higher emotional exhaustion.
Support protects teachers against burnout.Teachers who reported more support reported lower exhaustion.
Reducing workload will reduce burnout.If the association is causal, which our design cannot establish, reducing workload might reduce burnout.
Response 2.7: We agree that our cross-sectional design does not allow causal conclusions. Throughout the manuscript we replaced causal verbs (e.g., "leads to", "protects") with associational wording (e.g., "was associated with"); all changed sentences are listed below. The Limitations section now states that reverse causation and unmeasured confounding cannot be ruled out (p. [X], lines [Y–Z]), and the title now reads "[new title]".
Odpowiedź 2.7: Zgadzamy się, że schemat przekrojowy nie pozwala na wnioski przyczynowe. W całym tekście zastąpiliśmy czasowniki przyczynowe (np. „prowadzi do”, „chroni”) sformułowaniami opisującymi związek (np. „wiązało się z”); wszystkie zmienione zdania zestawiamy poniżej. W części o ograniczeniach dodaliśmy, że nie można wykluczyć odwrotnego kierunku zależności ani wpływu niezmierzonych zmiennych zakłócających (s. [X], w. [Y–Z]), a tytuł brzmi teraz „[nowy tytuł]”.

11. Prośba o dane i kod

Przykładowa uwaga recenzenta: „Data are ‘available upon reasonable request’. Please deposit the data and code in a public repository or explain why this is not possible.”

Hardwicke i in. (2018) zbadali skutki obowiązku udostępniania danych w czasopiśmie Cognition. Odsetek artykułów z deklaracją dostępności danych wzrósł z 25% do 78%, ale nie wszystkie dane nadawały się do ponownego użycia, a część wyników udało się odtworzyć dopiero z pomocą autorów. Udostępnij więc dane z książką kodową i skryptem, który odtwarza wszystkie wyniki (zob. pakiet replikacyjny i hasło open science). Jeśli uczestnicy nie zgodzili się na udostępnienie danych, zaproponuj rozwiązanie zastępcze (zob. świadoma zgoda i RODO).

Response 1.5: Thank you. The anonymised data, codebook and R code reproducing all results are now in [repository] ([DOI]), and the Data Availability Statement reads: "The data and analysis code supporting this study are openly available in [repository] at [DOI]." Direct identifiers were removed and [e.g., age was recoded into categories]. [If data cannot be shared: Participants did not consent to public sharing, so we provide (synthetic data / aggregated data / controlled access) and the full code.]
Odpowiedź 1.5: Dziękujemy. Zanonimizowane dane, książkę kodową i kod R odtwarzający wszystkie wyniki umieściliśmy w repozytorium [nazwa] ([DOI]), a deklaracja dostępności danych brzmi: „Dane i kod analiz są ogólnodostępne w repozytorium [nazwa] pod adresem [DOI]”. Usunęliśmy identyfikatory bezpośrednie i [np. zastąpiliśmy wiek przedziałami]. [Jeśli danych nie można udostępnić: Uczestnicy nie zgodzili się na publiczne udostępnienie, dlatego udostępniamy (dane syntetyczne / zagregowane / dostęp kontrolowany) i pełny kod.]

12. Przyznanie się do błędu

Przykładowa uwaga recenzenta: „The support scale has unusually low reliability (α = .35), and its positive coefficient contradicts previous studies. Please check the scoring of this scale.”

W przykładzie recenzent miał rację: negatywnie sformułowana pozycja wsp3 nie została odwrócona (zob. pozycja odwrócona). Po korekcie rzetelność wzrosła z α = .35 do .77, a związek wsparcia z wyczerpaniem stał się istotny – zmienił się wniosek dotyczący H2. Przyznaj się do błędu wprost: napisz, co było źle, co poprawiono i które wnioski się zmieniły. Potem powtórz wszystkie analizy jednym skryptem od danych surowych. Nazwanie zmiany wniosków „drobną korektą” podważa zaufanie bardziej niż sam błąd.

Response 2.1: Thank you – this comment revealed an error: item 3 of the support scale is negatively worded but was not reverse-scored. After correction, α = .77 (previously .35), and support is negatively associated with exhaustion, b = −0.22, 95% CI [−0.35, −0.09], p < .001 (previously b = 0.11, 95% CI [−0.06, 0.29], p = .191). Hypothesis 2 is therefore now supported; we revised the Abstract, Results and Discussion (p. [X], lines [Y–Z]). The workload coefficient barely changed (b = 0.65 vs. 0.67). We re-checked all scoring and re-ran all analyses from the raw data with one script.
Odpowiedź 2.1: Dziękujemy – ta uwaga pozwoliła wykryć błąd: pozycja 3 skali wsparcia jest sformułowana negatywnie, ale nie została odwrócona. Po korekcie α = .77 (wcześniej .35), a wsparcie wiąże się ujemnie z wyczerpaniem, b = −0.22, 95% CI [−0.35, −0.09], p < .001 (wcześniej b = 0.11, 95% CI [−0.06, 0.29], p = .191). Hipoteza 2 została więc potwierdzona; zmieniliśmy streszczenie, wyniki i dyskusję (s. [X], w. [Y–Z]). Współczynnik obciążenia prawie się nie zmienił (b = 0.65 wobec 0.67). Sprawdziliśmy kodowanie wszystkich skal i powtórzyliśmy analizy od danych surowych jednym skryptem.
Przykład reprodukowalny

Analizy dla recenzentów w R

Pięć przepisów odtwarza wszystkie liczby z tabeli 1, rysunków i wzorów odpowiedzi. Przepis 1 tworzy dane symulowane – jego część do komentarza „analiza (przepis 1)” zapisz jako plik dane-nauczyciele.R, bo korzystają z niego przepisy 2–5.

1. Dane symulowane i model główny przed korektą błędu kodowania i po niej

Dane wejściowe: 480 nauczycieli z 40 szkół (dane symulowane, set.seed(3434)): pozycje skal obciążenia, wsparcia (wsp3 sformułowana negatywnie), wyczerpania, cynizmu, obniżonego poczucia skuteczności i satysfakcji oraz wiek, płeć i typ szkoły; pakiet psych.

Co odczytać: liczbę braków, rzetelność skali wsparcia przed odwróceniem pozycji wsp3 i po nim, korelację wsparcia z wyczerpaniem oraz współczynniki b z 95% CI i p w obu wersjach modelu.

R
# B34, przepis 1: dane symulowane (cały blok to plik dane-nauczyciele.R, używany w przepisach 2–5),
# rzetelność skali wsparcia i model główny – przed korektą błędu kodowania i po niej
# Dane symulowane do wpisu B34: badanie przekrojowe 480 nauczycieli z 40 szkół.
# Obciążenie pracą (4 pozycje, 1–5), wsparcie w pracy (4 pozycje, 1–5; pozycja wsp3 sformułowana negatywnie),
# wypalenie: wyczerpanie (5 pozycji), cynizm (4) i obniżone poczucie skuteczności (4) – skale 1–7,
# satysfakcja z pracy (3 pozycje, 1–5), wiek, płeć, typ szkoły. Wszystkie odpowiedzi zawierają wspólny czynnik metody.
set.seed(3434)
J <- 40; nj <- 12; N <- J * nj
szkola <- rep(1:J, each = nj)
typ_szkoly <- rep(sample(c("podstawowa", "ponadpodstawowa"), J, replace = TRUE, prob = c(.6, .4)), each = nj)
plec <- sample(c("kobieta", "mężczyzna"), N, replace = TRUE, prob = c(.78, .22))
wiek <- pmin(67, pmax(24, round(rnorm(N, 45, 10))))

# zmienne latentne (wyniki standaryzowane)
obc <- rnorm(J, 0, sqrt(.10))[szkola] + rnorm(N, 0, sqrt(.90))           # obciążenie pracą
wsp <- -.25 * obc + rnorm(N, 0, sqrt(1 - .25^2))                          # wsparcie
sat <- -.40 * obc + .30 * wsp + rnorm(N, 0, .80)                          # satysfakcja (mediator)
wyc <- .45 * obc - .30 * wsp - .20 * sat + .006 * (wiek - 45) +
       rnorm(J, 0, .46)[szkola] + rnorm(N, 0, .70)                         # wyczerpanie
cyn <- .18 * obc - .19 * wsp - .26 * sat + rnorm(N, 0, .86)               # cynizm
efe <- .04 * obc - .08 * wsp - .16 * sat + rnorm(N, 0, .92)               # obniżona skuteczność
M <- rnorm(N)                                                             # wspólny czynnik metody

lam <- .72; lam_m <- .30                                 # ładunki: cecha i czynnik metody
pozycje <- function(eta, k, prog, znak = rep(1, k), metoda = M, E = matrix(rnorm(N * k), N, k)) {
  eta <- as.numeric(scale(eta))
  sapply(1:k, function(i) findInterval(znak[i] * lam * eta + lam_m * metoda + sqrt(1 - lam^2 - lam_m^2) * E[, i], prog) + 1)
}
prog5 <- c(-1.6, -.7, .2, 1.1)                         # skala 1–5
prog7 <- c(-1.1, -.45, .1, .65, 1.2, 1.8)              # skala 1–7, rozkład prawoskośny
E_obc <- matrix(rnorm(N * 4), N, 4); E_wyc <- matrix(rnorm(N * 5), N, 5)
E_wyc[, 5] <- .25 * E_wyc[, 4] + sqrt(1 - .25^2) * E_wyc[, 5]   # wyc4 i wyc5 o podobnym brzmieniu: skorelowane błędy
P_obc <- pozycje(obc, 4, prog5, E = E_obc)
P_wsp <- pozycje(wsp, 4, prog5, znak = c(1, 1, -1, 1))
P_wyc <- pozycje(wyc, 5, prog7, E = E_wyc)
P_cyn <- pozycje(cyn, 4, prog7)
P_efe <- pozycje(efe, 4, prog7)
P_sat <- pozycje(sat, 3, prog5)
colnames(P_obc) <- paste0("obc", 1:4); colnames(P_wsp) <- paste0("wsp", 1:4)
colnames(P_wyc) <- paste0("wyc", 1:5); colnames(P_cyn) <- paste0("cyn", 1:4)
colnames(P_efe) <- paste0("efe", 1:4); colnames(P_sat) <- paste0("sat", 1:3)

# Kontrfakt do pokazania CMV: te same osoby i błędy, ale czynnik metody osobny dla każdej skali
cmv <- data.frame(obc_wspolna = rowMeans(P_obc), wyc_wspolna = rowMeans(P_wyc),
                  obc_osobna = rowMeans(pozycje(obc, 4, prog5, metoda = rnorm(N), E = E_obc)),
                  wyc_osobna = rowMeans(pozycje(wyc, 5, prog7, metoda = rnorm(N), E = E_wyc)))

nauczyciele <- data.frame(id = 1:N, szkola, typ_szkoly, plec, wiek, P_obc, P_wsp, P_wyc, P_cyn, P_efe, P_sat)

# braki danych: część osób pominęła blok pytań o wsparcie (MAR – zależy od obciążenia i wyczerpania)
z <- function(x) as.numeric(scale(x))
p_brak <- plogis(-2.45 + .45 * z(rowMeans(P_wyc)) + .30 * z(rowMeans(P_obc)))
nauczyciele[runif(N) < p_brak, paste0("wsp", 1:4)] <- NA

# 6 osób z nietypowym wzorcem odpowiedzi: 5 przy wszystkich pozycjach obciążenia, 1 przy pozostałych
odst <- sample(which(!is.na(nauczyciele$wsp1) & rowMeans(P_obc) >= 3 & rowMeans(P_obc) < 4.5), 6)
nauczyciele[odst, paste0("obc", 1:4)] <- 5
nauczyciele[odst, c(paste0("wsp", 1:4), paste0("wyc", 1:5), paste0("cyn", 1:4), paste0("efe", 1:4), paste0("sat", 1:3))] <- 1

# wyniki skal (średnie pozycji); wsparcie: wersja błędna (bez odwrócenia wsp3) i poprawna
nauczyciele <- within(nauczyciele, {
  obciazenie  <- rowMeans(cbind(obc1, obc2, obc3, obc4))
  wsparcie_bl <- rowMeans(cbind(wsp1, wsp2, wsp3, wsp4))         # błąd z pierwszej wersji rękopisu
  wsparcie    <- rowMeans(cbind(wsp1, wsp2, 6 - wsp3, wsp4))     # po odwróceniu pozycji wsp3
  wyczerpanie <- rowMeans(cbind(wyc1, wyc2, wyc3, wyc4, wyc5))
  cynizm      <- rowMeans(cbind(cyn1, cyn2, cyn3, cyn4))
  skutecznosc <- rowMeans(cbind(efe1, efe2, efe3, efe4))
  satysfakcja <- rowMeans(cbind(sat1, sat2, sat3))
  plec <- factor(plec); typ_szkoly <- factor(typ_szkoly)
})

# ---- analiza (przepis 1) ----
d <- nauczyciele
c(N = nrow(d), szkoly = length(unique(d$szkola)), braki_wsparcia = sum(is.na(d$wsparcie)))

alfa <- function(X) round(psych::alpha(X, check.keys = FALSE, warnings = FALSE)$total$raw_alpha, 2)
c(alfa_wsparcie_blad = alfa(d[, paste0("wsp", 1:4)]),                       # wsp3 bez odwrócenia
  alfa_wsparcie_korekta = alfa(cbind(d$wsp1, d$wsp2, 6 - d$wsp3, d$wsp4)),
  alfa_obciazenie = alfa(d[, paste0("obc", 1:4)]), alfa_wyczerpanie = alfa(d[, paste0("wyc", 1:5)]))
round(c(r_wsparcie_blad = cor(d$wsparcie_bl, d$wyczerpanie, use = "complete.obs"),
        r_wsparcie_korekta = cor(d$wsparcie, d$wyczerpanie, use = "complete.obs")), 2)

tabela <- function(m) {                                   # b, 95% CI i p (cztery miejsca, by odróżnić p < .001)
  x <- cbind(b = coef(m), confint(m))[-1, , drop = FALSE]
  noquote(cbind(formatC(x, format = "f", digits = 3), p = formatC(summary(m)$coefficients[-1, 4], format = "f", digits = 4)))
}
m_blad   <- lm(wyczerpanie ~ obciazenie + wsparcie_bl, data = d)            # pierwsza wersja rękopisu
m_glowny <- lm(wyczerpanie ~ obciazenie + wsparcie, data = d)               # po korekcie
tabela(m_blad)
tabela(m_glowny)
c(N = nobs(m_glowny), R2 = round(summary(m_glowny)$r.squared, 3))
Wynik w R
             N         szkoly braki_wsparcia 
           480             40             40 
   alfa_wsparcie_blad alfa_wsparcie_korekta       alfa_obciazenie 
                 0.35                  0.77                  0.84 
     alfa_wyczerpanie 
                 0.88 
   r_wsparcie_blad r_wsparcie_korekta 
              0.05              -0.19 
            b     2.5 %  97.5 % p     
obciazenie  0.674 0.552  0.797  0.0000
wsparcie_bl 0.114 -0.057 0.285  0.1908
           b      2.5 %  97.5 % p     
obciazenie 0.649  0.527  0.771  0.0000
wsparcie   -0.220 -0.349 -0.092 0.0008
     N     R2 
440.00   0.23 

2. Analiza wrażliwości zamiast mocy post hoc i korekta Holma

Dane wejściowe: plik dane-nauczyciele.R z przepisu 1.

Co odczytać: wynik nieistotny (wsparcie a obniżona skuteczność) z 95% CI, współczynnik standaryzowany, „moc obserwowaną” wynikającą z p, najmniejszy efekt wykrywalny z mocą 80% (f² i cząstkowe r) oraz wartości p sześciu testów przed korektą Holma i po niej.

R
# B34, przepis 2: prośba o „moc post hoc” (analiza wrażliwości) i korekta Holma dla sześciu testów
source("dane-nauczyciele.R")
d <- nauczyciele

# a) wynik nieistotny: wsparcie a obniżone poczucie skuteczności
m_efe <- lm(skutecznosc ~ obciazenie + wsparcie, data = d)
w <- c(b = coef(m_efe)[["wsparcie"]], confint(m_efe)["wsparcie", ], p = summary(m_efe)$coefficients["wsparcie", 4])
round(w, 3)
beta <- coef(m_efe)[["wsparcie"]] * sd(model.frame(m_efe)$wsparcie) / sd(model.frame(m_efe)$skutecznosc)
round(c(beta = beta, CI = confint(m_efe)["wsparcie", ] * sd(model.frame(m_efe)$wsparcie) / sd(model.frame(m_efe)$skutecznosc)), 3)

# b) „moc obserwowana” wynika wprost z wartości p (przybliżenie testem z)
z <- qnorm(1 - w[["p"]] / 2)
round(pnorm(z - qnorm(.975)) + pnorm(-z - qnorm(.975)), 3)

# c) analiza wrażliwości: najmniejszy efekt jednego predyktora (f², r cząstkowe) wykrywalny z mocą 80%
N <- nobs(m_efe); k <- 2; df2 <- N - k - 1
moc <- function(f2) 1 - pf(qf(.95, 1, df2), 1, df2, ncp = f2 * N)
f2 <- uniroot(function(f) moc(f) - .80, c(1e-4, .5))$root
round(c(N = N, f2 = f2, r_czastkowe = sqrt(f2 / (1 + f2))), 3)

# d) korekta Holma: 3 wymiary wypalenia × 2 predyktory = 6 testów
wyniki <- do.call(rbind, lapply(c("wyczerpanie", "cynizm", "skutecznosc"), function(y) {
  m <- lm(reformulate(c("obciazenie", "wsparcie"), y), data = d)
  data.frame(wynik = y, predyktor = c("obciazenie", "wsparcie"), b = coef(m)[2:3],
             p = summary(m)$coefficients[2:3, 4], row.names = NULL)
}))
wyniki$p_holm <- p.adjust(wyniki$p, method = "holm")
wyniki$b <- round(wyniki$b, 3); wyniki$p <- round(wyniki$p, 4); wyniki$p_holm <- round(wyniki$p_holm, 4)
wyniki
Wynik w R
     b  2.5 % 97.5 %      p 
 0.071 -0.077  0.219  0.348 
     beta  CI.2.5 % CI.97.5 % 
    0.044    -0.049     0.137 
[1] 0.155
          N          f2 r_czastkowe 
    440.000       0.018       0.133 
        wynik  predyktor      b      p p_holm
1 wyczerpanie obciazenie  0.649 0.0000 0.0000
2 wyczerpanie   wsparcie -0.220 0.0008 0.0025
3      cynizm obciazenie  0.529 0.0000 0.0000
4      cynizm   wsparcie -0.156 0.0298 0.0595
5 skutecznosc obciazenie  0.281 0.0001 0.0004
6 skutecznosc   wsparcie  0.071 0.3478 0.3478

3. Zmienne kontrolne i model mieszany

Dane wejściowe: plik dane-nauczyciele.R; pakiety lme4 i lmerTest.

Co odczytać: współczynniki po dodaniu wieku, płci i typu szkoły oraz po dodaniu mediatora, ICC, efekty stałe modelu mieszanego z df Satterthwaite’a i 95% CI oraz porównanie błędów standardowych dla predyktora na poziomie nauczyciela i szkoły.

R
# B34, przepis 3: dodatkowe kowarianty, kontrola mediatora (czego nie robić) i model mieszany
source("dane-nauczyciele.R")
suppressPackageStartupMessages(library(lmerTest))
d <- nauczyciele
wiersz <- function(m, x) {                    # b z 95% CI i p dla wybranego predyktora (lm)
  c(b = coef(m)[[x]], confint(m)[x, ], p = summary(m)$coefficients[x, 4])
}
m_glowny <- lm(wyczerpanie ~ obciazenie + wsparcie, data = d)
m_kow    <- lm(wyczerpanie ~ obciazenie + wsparcie + wiek + plec + typ_szkoly, data = d)
m_med    <- lm(wyczerpanie ~ obciazenie + wsparcie + satysfakcja, data = d)   # satysfakcja = mediator
round(rbind(glowny_obciazenie = wiersz(m_glowny, "obciazenie"), glowny_wsparcie = wiersz(m_glowny, "wsparcie"),
            kowarianty_obciazenie = wiersz(m_kow, "obciazenie"), kowarianty_wsparcie = wiersz(m_kow, "wsparcie"),
            z_mediatorem_obciazenie = wiersz(m_med, "obciazenie"), z_mediatorem_wsparcie = wiersz(m_med, "wsparcie")), 3)
round(summary(m_kow)$coefficients[4:6, ], 3)                                   # same kowarianty

# Model mieszany: nauczyciele zagnieżdżeni w 40 szkołach
m0 <- lmer(wyczerpanie ~ 1 + (1 | szkola), data = d)
vc <- as.data.frame(VarCorr(m0))
round(c(ICC = vc$vcov[1] / sum(vc$vcov)), 3)
m_mix <- lmer(wyczerpanie ~ obciazenie + wsparcie + (1 | szkola), data = d)   # REML, df Satterthwaite'a
ws <- summary(m_mix)$coefficients[-1, ]
round(cbind(ws, CI_d = ws[, 1] - qt(.975, ws[, 3]) * ws[, 2], CI_g = ws[, 1] + qt(.975, ws[, 3]) * ws[, 2]), 3)
round(summary(m_glowny)$coefficients[-1, 1:2], 3)                              # porównaj błędy standardowe z OLS

# Predyktor na poziomie szkoły (typ szkoły): błąd standardowy w OLS i w modelu mieszanym
m_mix_kow <- lmer(wyczerpanie ~ obciazenie + wsparcie + wiek + plec + typ_szkoly + (1 | szkola), data = d)
round(rbind(OLS = summary(m_kow)$coefficients["typ_szkolyponadpodstawowa", c(1, 2, 4)],
            mieszany = summary(m_mix_kow)$coefficients["typ_szkolyponadpodstawowa", c(1, 2, 5)]), 3)
Wynik w R
                             b  2.5 % 97.5 %     p
glowny_obciazenie        0.649  0.527  0.771 0.000
glowny_wsparcie         -0.220 -0.349 -0.092 0.001
kowarianty_obciazenie    0.646  0.524  0.767 0.000
kowarianty_wsparcie     -0.230 -0.358 -0.102 0.000
z_mediatorem_obciazenie  0.654  0.528  0.780 0.000
z_mediatorem_wsparcie   -0.228 -0.368 -0.089 0.001
                          Estimate Std. Error t value Pr(>|t|)
wiek                         0.014      0.006   2.334    0.020
plecmężczyzna                0.135      0.131   1.032    0.303
typ_szkolyponadpodstawowa   -0.198      0.124  -1.592    0.112
  ICC 
0.098 
           Estimate Std. Error      df t value Pr(>|t|)   CI_d   CI_g
obciazenie    0.628      0.060 426.814  10.404        0  0.510  0.747
wsparcie     -0.242      0.063 422.358  -3.814        0 -0.367 -0.117
           Estimate Std. Error
obciazenie    0.649      0.062
wsparcie     -0.220      0.066
         Estimate Std. Error Pr(>|t|)
OLS        -0.198      0.124    0.112
mieszany   -0.201      0.185    0.283

4. Obserwacje odstające, braki danych (FIML) i odporne przedziały ufności

Dane wejściowe: plik dane-nauczyciele.R; pakiety robustbase, lavaan, sandwich, lmtest i boot.

Co odczytać: sześć obserwacji z |t| > 3 i ich wzorzec odpowiedzi, wyniki bez nich i w regresji odpornej, średnie wyczerpanie osób z brakami i bez braków, wyniki FIML dla 480 osób, skośność i kurtozę reszt, test Shapiro–Wilka oraz 95% CI z błędami HC3 i z bootstrapu.

R
# B34, przepis 4: obserwacje odstające, braki danych (FIML) i rozkład reszt (HC3, bootstrap)
source("dane-nauczyciele.R")
suppressPackageStartupMessages({library(robustbase); library(lavaan); library(sandwich); library(lmtest); library(boot)})
d <- nauczyciele
m_glowny <- lm(wyczerpanie ~ obciazenie + wsparcie, data = d)
wsp <- function(m) round(cbind(b = coef(m), confint(m))[-1, ], 3)

# a) obserwacje odstające: reguła |reszta studentyzowana| > 3
rs <- rstudent(m_glowny)
odstajace <- as.numeric(names(rs)[abs(rs) > 3])
round(rs[abs(rs) > 3], 2)
d[odstajace, c("obciazenie", "wsparcie", "wyczerpanie")]
m_bez <- lm(wyczerpanie ~ obciazenie + wsparcie, data = d[-odstajace, ])
wsp(m_bez); round(summary(m_bez)$coefficients[-1, 4], 4)
m_mm <- lmrob(wyczerpanie ~ obciazenie + wsparcie, data = d)                # regresja odporna (estymator MM)
round(cbind(b = coef(m_mm), confint(m_mm))[-1, ], 3)

# b) braki danych: 41 osób bez odpowiedzi na pytania o wsparcie
round(tapply(d$wyczerpanie, is.na(d$wsparcie), mean), 2)                   # FALSE = komplet, TRUE = brak
fit_fiml <- sem("wyczerpanie ~ obciazenie + wsparcie", data = d, missing = "fiml", fixed.x = FALSE)
pe <- parameterEstimates(fit_fiml)
c(N = lavInspect(fit_fiml, "nobs"))
cbind(round(pe[pe$op == "~", c("est", "ci.lower", "ci.upper")], 3), p = formatC(pe[pe$op == "~", "pvalue"], format = "f", digits = 4))

# c) rozkład reszt i odporne błędy standardowe
round(c(skosnosc = psych::skew(resid(m_glowny)), kurtoza = psych::kurtosi(resid(m_glowny))), 2)
sw_y <- shapiro.test(d$wyczerpanie); sw_e <- shapiro.test(resid(m_glowny))   # test Shapiro–Wilka
round(c(W_wynik = unname(sw_y$statistic), p_wynik = sw_y$p.value, W_reszty = unname(sw_e$statistic), p_reszty = sw_e$p.value), 4)
round(coefci(m_glowny, vcov. = vcovHC(m_glowny, type = "HC3"))[-1, ], 3)    # 95% CI z błędami HC3
set.seed(2034)
b_boot <- boot(model.frame(m_glowny), function(x, i) coef(lm(wyczerpanie ~ obciazenie + wsparcie, data = x[i, ]))[-1], R = 2000)
round(rbind(obciazenie = boot.ci(b_boot, type = "perc", index = 1)$percent[4:5],
            wsparcie   = boot.ci(b_boot, type = "perc", index = 2)$percent[4:5]), 3)
Wynik w R
   33    36   413   421   466   471 
-3.18 -3.18 -3.18 -3.18 -3.18 -3.18 
    obciazenie wsparcie wyczerpanie
33           5        2           1
36           5        2           1
413          5        2           1
421          5        2           1
466          5        2           1
471          5        2           1
                b  2.5 % 97.5 %
obciazenie  0.758  0.642  0.874
wsparcie   -0.289 -0.410 -0.168
obciazenie   wsparcie 
         0          0 
                b  2.5 % 97.5 %
obciazenie  0.744  0.622  0.866
wsparcie   -0.294 -0.431 -0.157
FALSE  TRUE 
 3.27  3.88 
  N 
480 
     est ci.lower ci.upper      p
1  0.677    0.561    0.793 0.0000
2 -0.217   -0.343   -0.091 0.0007
skosnosc  kurtoza 
   -0.16     0.29 
 W_wynik  p_wynik W_reszty p_reszty 
  0.9788   0.0000   0.9900   0.0043 
            2.5 % 97.5 %
obciazenie  0.516  0.782
wsparcie   -0.353 -0.088
             [,1]   [,2]
obciazenie  0.515  0.788
wsparcie   -0.350 -0.090

5. Test Harmana i inwariancja pomiaru względem płci

Dane wejściowe: plik dane-nauczyciele.R (zawiera też wersję danych bez wspólnego czynnika metody); pakiet lavaan.

Co odczytać: odsetek wariancji pierwszej nierotowanej składowej, korelację obciążenia z wyczerpaniem ze wspólnym czynnikiem metody i bez niego oraz dopasowanie modeli konfiguracyjnego, metrycznego i skalarnego z różnicami CFI, RMSEA i χ².

R
# B34, przepis 5: test jednego czynnika Harmana na danych z wbudowanym czynnikiem metody
# oraz inwariancja pomiaru skali wyczerpania względem płci (wielogrupowa CFA)
source("dane-nauczyciele.R")
suppressPackageStartupMessages(library(lavaan))
d <- nauczyciele
d$wsp3r <- 6 - d$wsp3
pozycje <- c(paste0("obc", 1:4), "wsp1", "wsp2", "wsp3r", "wsp4", paste0("wyc", 1:5), paste0("cyn", 1:4), paste0("efe", 1:4))

# a) test Harmana: udział pierwszej nierotowanej składowej w wariancji 21 pozycji
X <- d[complete.cases(d[, pozycje]), pozycje]
ew <- eigen(cor(X))$values
round(c(n = nrow(X), procent_pierwszej = 100 * ew[1] / sum(ew)), 1)

# b) ile korelacji obciążenia z wyczerpaniem „dodaje” wspólna metoda? (kontrfakt z symulacji)
round(c(r_wspolna_metoda = cor(cmv$obc_wspolna, cmv$wyc_wspolna),
        r_osobne_metody = cor(cmv$obc_osobna, cmv$wyc_osobna)), 3)

# c) inwariancja pomiaru skali wyczerpania: kobiety i mężczyźni
table(d$plec)
model <- "WYCZ =~ wyc1 + wyc2 + wyc3 + wyc4 + wyc5"          # czynnik latentny wyczerpania
konf <- cfa(model, data = d, group = "plec", estimator = "MLR")
metr <- cfa(model, data = d, group = "plec", estimator = "MLR", group.equal = "loadings")
skal <- cfa(model, data = d, group = "plec", estimator = "MLR", group.equal = c("loadings", "intercepts"))
miary <- c("chisq.scaled", "df.scaled", "cfi.robust", "rmsea.robust", "srmr")
tab <- round(t(sapply(list(konfiguracyjna = konf, metryczna = metr, skalarna = skal), fitMeasures, miary)), 3)
cbind(tab, dCFI = c(NA, diff(tab[, "cfi.robust"])), dRMSEA = c(NA, diff(tab[, "rmsea.robust"])))
lavTestLRT(konf, metr, skal)[, c("Df", "Chisq diff", "Df diff", "Pr(>Chisq)")]
Wynik w R
                n procent_pierwszej 
            440.0              29.2 
r_wspolna_metoda  r_osobne_metody 
           0.538            0.413 

  kobieta mężczyzna 
      362       118 
               chisq.scaled df.scaled cfi.robust rmsea.robust  srmr  dCFI
konfiguracyjna       22.064        10      0.989        0.074 0.020    NA
metryczna            25.394        14      0.990        0.059 0.026 0.001
skalarna             26.770        18      0.992        0.045 0.027 0.002
               dRMSEA
konfiguracyjna     NA
metryczna      -0.015
skalarna       -0.014
     Df Chisq diff Df diff Pr(>Chisq)
konf 10                              
metr 14      2.472       4     0.6497
skal 18      1.224       4     0.8741

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3; rysunki przygotowano w pakietach ggplot2 i patchwork, a plik Word – w pakietach officer i flextable. W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. psych (wersja 2.6.5): Revelle, W. (2026). psych: Procedures for psychological, psychometric, and personality research [R package]. Northwestern University. https://CRAN.R-project.org/package=psych
  3. lme4 (wersja 2.0.1): Bates, D., Mächler, M., Bolker, B., & Walker, S. (2015). Fitting linear mixed-effects models using lme4. Journal of Statistical Software, 67(1), 1–48. https://doi.org/10.18637/jss.v067.i01
  4. lmerTest (wersja 3.2.1): Kuznetsova, A., Brockhoff, P. B., & Christensen, R. H. B. (2017). lmerTest package: Tests in linear mixed effects models. Journal of Statistical Software, 82(13), 1–26. https://doi.org/10.18637/jss.v082.i13
  5. robustbase (wersja 0.99-7): Maechler, M., Rousseeuw, P., Croux, C., Todorov, V., Ruckstuhl, A., Salibian-Barrera, M., Verbeke, T., Koller, M., Conceicao, E. L., & Anna di Palma, M. (2026). robustbase: Basic robust statistics [R package]. http://robustbase.r-forge.r-project.org/
  6. lavaan (wersja 0.7-2): Rosseel, Y., Jorgensen, T. D., & De Wilde, L. (2026). lavaan: Latent variable analysis (R package version 0.7-2) [Computer software]. https://doi.org/10.32614/CRAN.package.lavaan
  7. sandwich (wersja 3.1.1): Zeileis, A., Köll, S., & Graham, N. (2020). Various versatile variances: An object-oriented implementation of clustered covariances in R. Journal of Statistical Software, 95(1), 1–36. https://doi.org/10.18637/jss.v095.i01
  8. lmtest (wersja 0.9.40): Zeileis, A., & Hothorn, T. (2002). Diagnostic checking in regression relationships. R News, 2(3), 7–10. https://CRAN.R-project.org/doc/Rnews/
  9. boot (wersja 1.3-32): Canty, A., & Ripley, B. (2025). boot: Bootstrap functions [R package]. https://doi.org/10.32614/CRAN.package.boot
  10. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org
  11. patchwork (wersja 1.3.2): Pedersen, T. L. (2025). patchwork: The composer of plots [R package]. https://doi.org/10.32614/CRAN.package.patchwork
  12. officer (wersja 0.7.4): Gohel, D., Moog, S., & Heckmann, M. (2026). officer: Manipulation of Microsoft Word and PowerPoint documents [R package]. https://doi.org/10.32614/CRAN.package.officer
  13. flextable (wersja 0.9.11): Gohel, D., & Skintzos, P. (2026). flextable: Functions for tabular reporting [R package]. https://doi.org/10.32614/CRAN.package.flextable

Najczęstsze błędy w odpowiedziach recenzentom

  • „We have addressed this point” bez wskazania zmiany – recenzent musi sam szukać zmian.
  • Wybiórcze pokazywanie dodatkowych analiz – pokazanie tylko „najlepszego” wariantu to też p-hacking. Zbierz wszystkie warianty w jednej tabeli i niczego nie zmieniaj po cichu.
  • Kosmetyka zamiast zmiany wniosków – zamiana słowa „wpływ” na „związek” nie wystarczy, jeśli abstrakt nadal zakłada przyczynowość.
  • Niespójne liczby po ponownych analizach – sprawdź tekst, tabele, abstrakt i odpowiedź (zob. niespójne liczby).
  • Niezgoda bez źródła albo ton obronny – słuszny argument przegrywa bez uzasadnienia.

Lista kontrolna przed wysłaniem odpowiedzi

  • Każda uwaga ma numer i odpowiedź zaczynającą się od sedna.
  • Przy każdej zmianie jest cytat nowego fragmentu oraz strona i wiersze w wersji poprawionej.
  • Nowe analizy są w tabeli lub suplemencie, z tymi samymi liczbami co w tekście i abstrakcie.
  • Każda niezgoda ma uzasadnienie, źródło i propozycję kompromisu.
  • Odpowiedź przeczytała osoba spoza zespołu – ton jest uprzejmy.

Jeśli recenzja wymaga analiz, których nie chcesz wykonywać sam – np. modelu mieszanego, imputacji czy wielogrupowej CFA – możemy je przeprowadzić i omówić z zespołem wyniki oraz argumentację statystyczną (zob. analizy statystyczne dla badaczy). Odpowiedź podpisują autorzy, więc muszą rozumieć każdą analizę, a pomoc warto ujawnić zgodnie z zasadami czasopisma.

Najczęstsze pytania

Jak napisać odpowiedź na recenzję artykułu naukowego?

Zacznij od krótkiego listu do redaktora z listą najważniejszych zmian, a potem odpowiedz na każdą uwagę po kolei: zacytuj ją, zacznij od bezpośredniej odpowiedzi, opisz zmianę i zacytuj nowy fragment z numerem strony i wiersza. Noble (2017) radzi też odróżnić typografią uwagę, odpowiedź i zmieniony tekst oraz nie pomijać żadnego punktu.

Czy można nie zgodzić się z recenzentem?

Tak, jeśli niezgoda jest uprzejma i uzasadniona: podaj konkretny argument statystyczny i źródło, a najlepiej wykonaj proponowaną analizę i pokaż, że wnioski się nie zmieniają. Zaproponuj kompromis, np. wynik w materiałach dodatkowych, i zostaw decyzję redaktorowi.

Co odpowiedzieć, gdy recenzent prosi o moc post hoc?

Wyjaśnij, że moc obserwowana wynika wprost z wartości p – przy p = .05 wynosi około 50%, a przy wyniku nieistotnym zawsze jest niska – więc nie wnosi nowej informacji (Hoenig i Heisey, 2001). Zamiast niej podaj analizę wrażliwości, czyli najmniejszy efekt wykrywalny z mocą 80% przy Twojej liczebności, oraz przedział ufności dla efektu.

Co zrobić, gdy recenzenci mają sprzeczne uwagi?

Nie rozstrzygaj sporu po cichu. Napisz osobny list do redaktora, wskaż obie uwagi z numerami, zaproponuj rozwiązanie z uzasadnieniem i poproś o decyzję – taką drogę wskazuje Noble (2017). W odpowiedziach dla recenzentów opisz, co ostatecznie zrobiono i dlaczego.

Czy w odpowiedzi recenzentom trzeba podawać numery stron i wierszy?

Tak, to bardzo ułatwia pracę recenzentowi. Podaj stronę i wiersze, zaznaczając, że dotyczą wersji poprawionej, a zmieniony fragment zacytuj w odpowiedzi. Zdanie „poprawiliśmy to w tekście” bez wskazania miejsca zmusza recenzenta do szukania i często rodzi nowe pytania.

Jak przyznać się do błędu w analizie po recenzji?

Napisz wprost, na czym polegał błąd, jak go poprawiono i które wyniki oraz wnioski się zmieniły – także wtedy, gdy zmienił się wniosek dotyczący hipotezy. Podziękuj recenzentowi, sprawdź pozostałe analizy i powtórz je jednym skryptem od danych surowych. Opisanie zmiany wniosków jako „drobnej korekty” podważa zaufanie bardziej niż sam błąd.

Powiązane hasła

Przeczytaj też

Recenzent prosi o dodatkowe analizy?

Wykonamy uzupełniające obliczenia, sprawdzimy argumentację statystyczną i omówimy wyniki z zespołem, aby każda odpowiedź opierała się na analizie, którą rozumiecie.

Oferta dla badaczyPorozmawiaj o projekcie

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Aarts, E., Verhage, M., Veenvliet, J. V., Dolan, C. V., & van der Sluis, S. (2014). A solution to dependency: Using multilevel analysis to accommodate nested data. Nature Neuroscience, 17(4), 491–496. https://doi.org/10.1038/nn.3648
  2. Aguirre-Urreta, M. I., & Hu, J. (2019). Detecting common method bias: Performance of the Harman's single-factor test. ACM SIGMIS Database: The DATABASE for Advances in Information Systems, 50(2), 45–70. https://doi.org/10.1145/3330472.3330477
  3. Grosz, M. P., Rohrer, J. M., & Thoemmes, F. (2020). The taboo against explicit causal inference in nonexperimental psychology. Perspectives on Psychological Science, 15(5), 1243–1255. https://doi.org/10.1177/1745691620921521 ● Otwarty dostęp
  4. Hardwicke, T. E., Mathur, M. B., MacDonald, K., Nilsonne, G., Banks, G. C., Kidwell, M. C., Hofelich Mohr, A., Clayton, E., Yoon, E. J., Henry Tessler, M., Lenne, R. L., Altman, S., Long, B., & Frank, M. C. (2018). Data availability, reusability, and analytic reproducibility: Evaluating the impact of a mandatory open data policy at the journal Cognition. Royal Society Open Science, 5(8), Article 180448. https://doi.org/10.1098/rsos.180448 ● Otwarty dostęp
  5. Hoenig, J. M., & Heisey, D. M. (2001). The abuse of power: The pervasive fallacy of power calculations for data analysis. The American Statistician, 55(1), 19–24. https://doi.org/10.1198/000313001300339897
  6. Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6(2), 65–70. https://www.jstor.org/stable/4615733
  7. Leys, C., Delacre, M., Mora, Y. L., Lakens, D., & Ley, C. (2019). How to classify, detect, and manage univariate and multivariate outliers, with emphasis on pre-registration. International Review of Social Psychology, 32(1), Article 5. https://doi.org/10.5334/irsp.289 ● Otwarty dostęp
  8. Noble, W. S. (2017). Ten simple rules for writing a response to reviewers. PLOS Computational Biology, 13(10), Article e1005730. https://doi.org/10.1371/journal.pcbi.1005730 ● Otwarty dostęp
  9. Perneger, T. V. (1998). What's wrong with Bonferroni adjustments. BMJ, 316(7139), 1236–1238. https://doi.org/10.1136/bmj.316.7139.1236 ● Otwarty dostęp: pełny tekst
  10. Podsakoff, P. M., MacKenzie, S. B., Lee, J.-Y., & Podsakoff, N. P. (2003). Common method biases in behavioral research: A critical review of the literature and recommended remedies. Journal of Applied Psychology, 88(5), 879–903. https://doi.org/10.1037/0021-9010.88.5.879
  11. Putnick, D. L., & Bornstein, M. H. (2016). Measurement invariance conventions and reporting: The state of the art and future directions for psychological research. Developmental Review, 41, 71–90. https://doi.org/10.1016/j.dr.2016.06.004 ● Otwarty dostęp: pełny tekst
  12. Schafer, J. L., & Graham, J. W. (2002). Missing data: Our view of the state of the art. Psychological Methods, 7(2), 147–177. https://doi.org/10.1037/1082-989X.7.2.147
  13. Williams, M. N., Grajales, C. A. G., & Kurkiewicz, D. (2013). Assumptions of multiple regression: Correcting two misconceptions. Practical Assessment, Research, and Evaluation, 18, Article 11. https://doi.org/10.7275/55hn-wk47 ● Otwarty dostęp: pełny tekst
  14. Wysocki, A. C., Lawson, K. M., & Rhemtulla, M. (2022). Statistical control requires causal justification. Advances in Methods and Practices in Psychological Science, 5(2), Article 25152459221095823. https://doi.org/10.1177/25152459221095823 ● Otwarty dostęp

Cytowania BibTeX

@article{aarts2014solution, author={Aarts, Emmeke and Verhage, Matthijs and Veenvliet, Jesse V. and Dolan, Conor V. and van der Sluis, Sophie}, title={{A solution to dependency: Using multilevel analysis to accommodate nested data}}, journal={Nature Neuroscience}, year={2014}, volume={17}, number={4}, pages={491--496}, doi={10.1038/nn.3648}}
@article{aguirreurreta2019detecting, author={Aguirre-Urreta, Miguel I. and Hu, Jiang}, title={{Detecting common method bias: Performance of the Harman's single-factor test}}, journal={ACM SIGMIS Database: The DATABASE for Advances in Information Systems}, year={2019}, volume={50}, number={2}, pages={45--70}, doi={10.1145/3330472.3330477}}
@article{grosz2020taboo, author={Grosz, Michael P. and Rohrer, Julia M. and Thoemmes, Felix}, title={{The taboo against explicit causal inference in nonexperimental psychology}}, journal={Perspectives on Psychological Science}, year={2020}, volume={15}, number={5}, pages={1243--1255}, doi={10.1177/1745691620921521}}
@article{hardwicke2018data, author={Hardwicke, Tom E. and Mathur, Maya B. and MacDonald, Kyle and Nilsonne, Gustav and Banks, George C. and Kidwell, Mallory C. and Hofelich Mohr, Alicia and Clayton, Elizabeth and Yoon, Erica J. and Henry Tessler, Michael and Lenne, Richie L. and Altman, Sara and Long, Bria and Frank, Michael C.}, title={{Data availability, reusability, and analytic reproducibility: Evaluating the impact of a mandatory open data policy at the journal Cognition}}, journal={Royal Society Open Science}, year={2018}, volume={5}, number={8}, eid={180448}, doi={10.1098/rsos.180448}}
@article{hoenig2001abuse, author={Hoenig, John M. and Heisey, Dennis M.}, title={{The abuse of power: The pervasive fallacy of power calculations for data analysis}}, journal={The American Statistician}, year={2001}, volume={55}, number={1}, pages={19--24}, doi={10.1198/000313001300339897}}
@article{holm1979simple, author={Holm, Sture}, title={{A simple sequentially rejective multiple test procedure}}, journal={Scandinavian Journal of Statistics}, year={1979}, volume={6}, number={2}, pages={65--70}, url={https://www.jstor.org/stable/4615733}}
@article{leys2019how, author={Leys, Christophe and Delacre, Marie and Mora, Youri L. and Lakens, Daniël and Ley, Christophe}, title={{How to classify, detect, and manage univariate and multivariate outliers, with emphasis on pre-registration}}, journal={International Review of Social Psychology}, year={2019}, volume={32}, number={1}, eid={5}, doi={10.5334/irsp.289}}
@article{noble2017ten, author={Noble, William Stafford}, title={{Ten simple rules for writing a response to reviewers}}, journal={PLOS Computational Biology}, year={2017}, volume={13}, number={10}, eid={e1005730}, doi={10.1371/journal.pcbi.1005730}}
@article{perneger1998whats, author={Perneger, Thomas V.}, title={{What's wrong with Bonferroni adjustments}}, journal={BMJ}, year={1998}, volume={316}, number={7139}, pages={1236--1238}, doi={10.1136/bmj.316.7139.1236}}
@article{podsakoff2003common, author={Podsakoff, Philip M. and MacKenzie, Scott B. and Lee, Jeong-Yeon and Podsakoff, Nathan P.}, title={{Common method biases in behavioral research: A critical review of the literature and recommended remedies}}, journal={Journal of Applied Psychology}, year={2003}, volume={88}, number={5}, pages={879--903}, doi={10.1037/0021-9010.88.5.879}}
@article{putnick2016measurement, author={Putnick, Diane L. and Bornstein, Marc H.}, title={{Measurement invariance conventions and reporting: The state of the art and future directions for psychological research}}, journal={Developmental Review}, year={2016}, volume={41}, pages={71--90}, doi={10.1016/j.dr.2016.06.004}}
@article{schafer2002missing, author={Schafer, Joseph L. and Graham, John W.}, title={{Missing data: Our view of the state of the art}}, journal={Psychological Methods}, year={2002}, volume={7}, number={2}, pages={147--177}, doi={10.1037/1082-989x.7.2.147}}
@article{williams2013assumptions, author={Williams, Matt N. and Grajales, Carlos A. G. and Kurkiewicz, Dason}, title={{Assumptions of multiple regression: Correcting two misconceptions}}, journal={Practical Assessment, Research, and Evaluation}, year={2013}, volume={18}, eid={11}, doi={10.7275/55hn-wk47}}
@article{wysocki2022statistical, author={Wysocki, Anna C. and Lawson, Katherine M. and Rhemtulla, Mijke}, title={{Statistical control requires causal justification}}, journal={Advances in Methods and Practices in Psychological Science}, year={2022}, volume={5}, number={2}, eid={25152459221095823}, doi={10.1177/25152459221095823}}
R