2016-04-21 12 views
6

निम्नलिखित भूखंड अलग क्यों दिखते हैं? दोनों विधियां गॉसियन कर्नेल का उपयोग करने लगती हैं।घनत्व समारोह से ggplot2 घनत्व कैसे भिन्न होता है?

ggplot2 घनत्व की गणना कैसे करता है?

library(fueleconomy) 

d <- density(vehicles$cty, n=2000) 
ggplot(NULL, aes(x=d$x, y=d$y)) + geom_line() + scale_x_log10() 

enter image description here

ggplot(vehicles, aes(x=cty)) + geom_density() + scale_x_log10() 

enter image description here


अद्यतन:

इस सवाल का एक समाधान पहले से ही पर एसओ here तथापि विशिष्ट paramet दिखाई देता है, ers ggplot2 आर आँकड़े घनत्व समारोह में गुज़र रहा है अस्पष्ट रहता है। पता चला here

+0

संदर्भ के लिए धन्यवाद StatDensity$compute_group की ओर जाता है देख सकते हैं। हालांकि, समाधान स्पष्ट पैरामीटर मतभेदों की पहचान करने के लिए प्रकट नहीं होता है। मैं सोच रहा हूं कि मैं ggplot घनत्व से सटीक घनत्व डेटा कैसे उत्पन्न/निकाल सकता हूं। – Megatron

+1

यह सटीक मानों को निकालने के लिए लगता है geom_density plots: http://stackoverflow.com/questions/12394321/r-what-algorithm-does-geom-density-use-and-how-to-extract-points-equation-of – fanli

+0

मुझे नहीं लगता कि यह घनत्व के साथ करना है, लेकिन आप लॉग ट्रैनफॉर्म – user20650

उत्तर

3

के रूप में इस मामले में

एक वैकल्पिक समाधान, सीधे ggplot2 साजिश से घनत्व डेटा निकालने के है, यह घनत्व गणना कि अलग है, लेकिन कैसे log10 बदलने लागू किया जाता है नहीं है।

पहले घनत्व की जांच के बिना बदलने

library(ggplot2) 
library(fueleconomy) 

d <- density(vehicles$cty, from=min(vehicles$cty), to=max(vehicles$cty)) 
ggplot(data.frame(x=d$x, y=d$y), aes(x=x, y=y)) + geom_line() 
ggplot(vehicles, aes(x=cty)) + stat_density(geom="line") 

तो इस मुद्दे को बदलने लगती है समान हैं। नीचे stat_density में, यह जैसा लगता है यदि लॉग 10 ट्रांसफॉर्म घनत्व गणना से पहले एक्स चर पर लागू होता है। तो परिणामों को मैन्युअल रूप से पुन: उत्पन्न करने के लिए आपको घनत्व की गणना से पहले परिवर्तनीय को बदलना होगा। उदाहरण के लिए

d2 <- density(log10(vehicles$cty), from=min(log10(vehicles$cty)), 
               to=max(log10(vehicles$cty))) 
ggplot(data.frame(x=d2$x, y=d2$y), aes(x=x, y=y)) + geom_line() 
ggplot(vehicles, aes(x=cty)) + stat_density(geom="line") + scale_x_log10() 

पुनश्च: कैसे ggplot घनत्व के लिए डेटा तैयार करता है देखने के लिए, आप कोड as.list(StatDensity) को ggplot2:::compute_density

संबंधित मुद्दे