【问题标题】:how can i draw a gaussian curve on datas which obey gaussian distribution by R language?如何在 R 语言服从高斯分布的数据上绘制高斯曲线?
【发布时间】:2012-04-04 04:06:55
【问题描述】:

我有一些看起来服从高斯分布的数据。所以我用

my.glm<- glm(b1~a1,family=Gaussian)

然后使用命令

summary(my.glm).

结果是:

Call:
glm(formula = b1 ~ a1, family = gaussian)

Deviance Residuals: 
      Min         1Q     Median         3Q        Max  
-0.067556  -0.029598   0.002121   0.030980   0.044499  

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.433697   0.018629   23.28 1.36e-12 ***
a1          -0.027146   0.001927  -14.09 1.16e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for gaussian family taken to be 0.001262014)

Null deviance: 0.268224  on 15  degrees of freedom
Residual deviance: 0.017668  on 14  degrees of freedom
AIC: -57.531

Number of Fisher Scoring iterations: 2

我认为它们很合身。但是如何在这些数据上绘制高斯曲线呢?

【问题讨论】:

  • 你真的明白family=Gaussian是什么意思吗?它与数据的分布无关,而是与变量之间的关系有关。它的说法是“a1 是 b1 具有不相关高斯噪声的线性函数”。现在再问你的问题。

标签: r gaussian


【解决方案1】:

假设截距服从正态分布,您可以像这样绘制它的分布:

x <- seq(0.3,0.6,by =0.001)
plot(x, dnorm(x, 0.433697, 0.018629), type = 'l')

你可能想添加你的数据:

rug(b1)

由于您没有提供数据,我们可以弥补一些(在示例中使用一些转换来匹配统计数据):

set.seed(0)
b <- rnorm(15)
b1 <- ((b - mean(b))/sd(b)  * 0.018629) + 0.433697
rug(b1)

您还可以叠加数据的核密度估计

lines(density(b1), col = 'red')

给出以下情节:

【讨论】:

    【解决方案2】:

    简单:?dnorm

    使用 dnorm 创建具有所需均值和 s.d 的高斯曲线。无需将自己绑定到任何数字拟合函数。这是显示您的数据如何“拟合”理论曲线的简单且良好的方法。与绘制拟合数据并试图找出它与高斯的“接近程度”不同。

    【讨论】:

    • 也许我在我的晚年变得古怪了,但是 w/downvote 怎么办?那家伙确实问了如何绘制高斯,而不是如何拟合。
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多