SORU
18 ŞUBAT 2010, PERŞEMBE


R baskı çıkış ondalık basamak kontrol numarası

Basamaklı ekran üzerinde kontrol almak için R bir seçenek var. Örneğin:

options(digits=10)

hesaplama vermesi beklenen R seans sonuna kadar 10 basamaklı olur. Ar-Yardım dosyası, basamak tanımı aşağıdaki gibidir: parametre

basamak: basamak sayısını denetler sayısal değerleri yazdırırken. Bir öneri sadece. Geçerli değerler 1...22varsayılan7

Yani, bu sadece bir öneri olduğunu söylüyor. Ne zaman 10 basamak görüntülemek için seviyorum, daha fazla veya daha az değil?

İkinci sorum, eğer fazla 22 basamak görüntülemek için sevdiğim ne varsa, yani 100 basamak gibi daha hassas hesaplamalar için? Temel R ile mümkün, ya da ek bir paket lazım/o fonksiyonu?

Düzenleme:Jmoy öneri için teşekkürler, denedim sprintf("%.100f",pi) verdim

[1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000"

48 ondalık vardır. Bu sınır R işleyebileceği en büyük olur? Aslında pi ondalık sonsuz bir numarası vardır.

CEVAP
18 ŞUBAT 2010, PERŞEMBE


Sadece bir öneri bu yüzden kolayca seçenekleri değerini göz ardı ettiği bir yazdırma işlevi yazabilirsiniz oldukça. Bu yerleşik baskı ve biçimlendirme işlevleri varsayılan olarak options değeri kullanın.

R sonlu hassas aritmetik kullandığından ikinci soruna gelince, cevaplarınız 15 veya 16 ondalık, böylece genel olarak, daha fazla gerekli değil mi ötesine doğru değil. gmp rcdd paket anlaşma ile birden çok hassas aritmetik () bir interace gmp Kütüphanesi), ama bu çoğunlukla ilgili büyük tamsayı yerine ondalık basamak için iki katına çıkar.

Mathematica (ve muhtemelen Maple) senin gönlünün istediği kadar ondalık basamak için olanak sağlar.

DÜZENLEME:
Ondalık ve anlamlı sayılar arasındaki farkı düşünmek faydalı olabilir. Eğer 15 önemli bir rakam ötesinde farklılıklar kullanan istatistiksel testleri yapmak, analiz neredeyse kesinlikle önemsiz.

Eğer sadece çok küçük sayılar ile ilgili olmadığını, diğer taraftan, bu R sayısı .Machine$double.xmin (genellikle 2e-308) gibi küçük işleyebilir, çünkü bu bir sorun daha az.

Bu iki analiz karşılaştırın.

x1 <- rnorm(50, 1, 1e-15)
y1 <- rnorm(50, 1   1e-15, 1e-15)
t.test(x1, y1)  #Should throw an error

x2 <- rnorm(50, 0, 1e-15)
y2 <- rnorm(50, 1e-15, 1e-15)
t.test(x2, y2)  #ok

İlk durumda, sayılar arasındaki farklar çok anlamlı rakamlar, veriler sonra meydana "neredeyse sabit". Sayılar arasındaki farklar boyutu aynı, sayıları kendileri büyüklüğü ile karşılaştırıldığında, Ancak ikinci durumda, büyük.


E3bo, çok hassas kullanabilirsiniz kayan nokta sayı Rmpfr paketi kullanarak belirtildiği gibi.

mpfr("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825")

Bu daha yavaş ve daha düzenli bellek (çift duyarlıklı) numeric vektörler kullanımı daha yoğun, ama eğer kötü donatılmış bir sorun veya kararsız algoritma varsa, bu yararlı olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iBand IguJoo

    iBand IguJoo

    25 AĞUSTOS 2006
  • manadude21

    manadude21

    11 Mart 2008
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011