Küsimus:
Kuidas teha katse R abil, kas andmed järgivad normaalset jaotust
Skarab
2010-09-28 13:29:33 UTC
view on stackexchange narkive permalink

Mul on järgmise struktuuriga andmekogum:

  sõna | sõna esinemise arv dokumendis | dokumendi ID 

Kuidas ma saan R-is normaalse jaotuse testi teha? Tõenäoliselt on see lihtne küsimus, kuid ma olen R algaja.

@Skarab Võib-olla olen täiesti väljas, aga kas te ei arvaks, et mõne sõna sagedus on pöördvõrdeline tema asetusega sõnade sagedustabelis vastavalt Zipfi seadusele (http://j.mp/9er2lv)? Sel juhul vaadake paketti `zipfR`.
Nõustun @chl-ga - see oleks väike ime, kui teie andmeid tavaliselt levitataks. Võib-olla tasuks veel üks küsimus selle kohta, mida soovite andmetega teha. Ärge leiutage ratast uuesti!
Kuidas saaks teie andmeid jaotada mudeli järgi, mis annab negatiivse esinemise tõenäosuse nullist erinevaks?
Mis on selle testi tegemise põhjus?
Ma tahan hinnata, kas teabe väljavõtte tohutu tulemus on õige. Soovin kontrollida, kas tekstist leitud üksuste jaotus vastab minu ootustele (tean domeeni ja tekstikorpust).
@chi Pidin selleks kontrollima teabe väljavõtmisega seotud andmeid ja vajasin testi. Muidugi järgib sõna sagedus Zipfi.
Kuus vastused:
#1
+50
csgillespie
2010-09-28 14:13:07 UTC
view on stackexchange narkive permalink

Kui saan teie küsimusest õigesti aru, siis saate testida, kas dokumendikomplektis esinevad sõna esinemised järgivad normaalset jaotust. Selleks võite kasutada lihtsalt shapiro-Wilki testi ja mõnda qqplotti. Näiteks

  ## Looge kaks andmekogumit ## Esimene Normal, teine ​​t-jaotussõnadest1 = rnorm (100); sõnad2 = rt (100, df = 3) ## Heitke pilk tiheduse graafikule (tihedus (sõnad1)); graafik (tihedus (sõnad2)) ## Tehke testshapiro.test (sõnad1); shapiro.test (words2) ## Joonestage qqplotqqnorm (words1); qqline (words1, col = 2) qqnorm (words2); qqline (words2, col = 2)  

qqplot käsud annavad: alt text

Näete, et teine ​​andmekogum ei ole raskete sabade järgi selgelt Normaalne ( Lisateave).

Shapiro-Walk'i normaalsustestis on p-väärtus esimese andmekogumi jaoks suur (>, 9), kuid teise andmekogumi jaoks (<.01) väga väike. See sunnib teist nullhüpoteesi tagasi lükkama.

Miks see pole selgelt Normaalne?
Ma arvan, et joonistatud punktid peaksid asuma I-III kvadrandijagajal nii lähemal kui normaaljaotuse.
Üldisemalt (keskmine! = 0) peab qqline'il olema 1 kalle ja * mu * lõikepunkt.
@HermanToothrot ei ole teise graafiku vaatamisel tavaline, kuna saba väärtustes on väga suur erinevus.QQ graafik on teoreetilise kvantiili (kui see oli normaalne) ja proovikvantiili (andmetest) graafik.Kui valimi andmed on normaalsed, eeldame, et vaatlused on joone lähedal, nagu need on esimese graafiku puhul.Pange tähele ka nende jooniste väga erinev skaala y-teljel.
#2
+16
nico
2010-09-28 14:10:34 UTC
view on stackexchange narkive permalink

Eeldades, et teie andmekogumit nimetatakse sõnad ja sellel on veerg count , saate histogrammi koostada jaotise visualiseerimiseks:

  hist (sõnad $ loeb, 100, col = "must")  

kus 100 on prügikastide arv

Samuti saate teha tavalise QQ graafiku, kasutades

qqnorm(words$counts)

Lõpuks võite normaalsuse jaoks kasutada ka Shapiro-Wilki testi

  shapiro.test (sõna $ loeb)  

Vaadake siiski seda arutelu: Normaalsuse testimine: 'Sisuliselt kasutu?'

#3
+14
Glen_b
2010-09-29 03:12:46 UTC
view on stackexchange narkive permalink

Ükski test ei näita teile, et teie andmetel on normaalne jaotus - need saavad teid näidata ainult siis, kui andmed on normiga piisavalt vastuolus, et nulliksite tagasi.

(... see on tõenäosuse 1 sündmus).

Miks testiksite sel juhul normaalsust? See on ilmselgelt vale.

[Mõnel juhul ei pruugi olla oluline, et võite öelda, et teie andmed pole tegelikult normaalsed. Reaalseid andmeid ei hakka kunagi (või peaaegu mitte kunagi) pärinema normaaljaotusest.]

Kui teil on tõesti vaja testi teha, siis Shapiro-Wilk test (? Shapiro.test ) on hea üldine normaalsuse test, mida kasutatakse laialdaselt.

#4
+9
Joren Bredman
2012-09-14 08:43:38 UTC
view on stackexchange narkive permalink

Ametlikum viis normaalsuse vaatlemiseks on testimine, kas kurtoos ja viltused erinevad oluliselt nullist.

Selleks peame saama:

  kurtosis.test <- function (x) {m4 <- summa ((x-keskmine (x)) ^ 4) / length (x) s4 <- var (x) ^ 2kurt <- (m4 / s4) - 3sek <- sqrt (24 / length (x)) totest <- kurt / sekpvalue <- pt (totest, (length) (x) -1)) pvalue}  

kurtoosi korral ja:

  skew.test <- funktsioon (x) {m3 <- summa ( (x-keskmine (x)) ^ 3) / pikkus (x) s3 <- sqrt (var (x)) ^ 3skew <- m3 / s3ses <- sqrt (6 / pikkus (x)) totest <- viltu / sespt (totest, (pikkus (x) -1)) pval <- pt (totest, (pikkus (x) -1)) pval}  

viltuse jaoks.

Mõlemad testid on ühe sabaga, seega peate kahesabaliseks saamiseks korrutama p-väärtuse 2-ga. Kui teie p-väärtus muutub suuremaks kui üks, peate kurtosis.test asemel kasutama 1-kurtosis.test ().

Kui teil on muid küsimusi, võite mulle kirjutada e-posti aadressil [email protected]

Millised on ülaltoodud funktsioonide erinevused funktsioonide "kurtosis ()" ja "skewness ()" osas alates * moments * paketist?Valimid `rnorm ()` kasutades on erinevad.
#5
+5
Laurent
2010-09-28 19:30:30 UTC
view on stackexchange narkive permalink

Lisaks statistika paketi Shapiro-Wilk testile pakub nortest pakett (saadaval CRAN-is) ka muid normaalsuse teste.

#6
+5
Dr Nisha Arora
2016-06-09 15:34:57 UTC
view on stackexchange narkive permalink

Kasutades R paketti nortest , saab need testid läbi viia:

  • Anderson-Darlingi normaalsustest läbi viima

     ad.test(data1)
  • Tehke Cramér-von Mises'i normaalsuse test

      cvm.test (data1 )  
  • Tehke Pearsoni chi-ruuttesti normaalsuse jaoks

      pearson.test (data1)  
  • Tehke Shapiro-Francia test normaalsuse jaoks

      sf.test (data1)  

Paljusid muid teste saab teha paketi normtest abil. Vaadake kirjeldust aadressil https://cran.r-project.org/web/packages/normtest/normtest.pdf

@Nick;Olen maininud neid teste ** 'nortest' ** paketist, mis on leitav siit: (https://cran.r-project.org/web/packages/nortest/nortest.pdf).Teine kasulik pakett on ** 'normtest' **, nagu eespool mainitud.
Okei aitäh.Teadmatuses eeldasin, et üks nimi on kirjaviga.


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 2.0-litsentsi eest, mille all seda levitatakse.
Loading...