3

我使用 GSL 库在 C 中执行了线性回归。我在 R 中执行了相同的回归。我可以使用“summary”命令在 R 中访问此回归的 p 值。

在 C 中,我有协方差矩阵、残差平方和和拟合系数。使用这些,我如何计算 p 值?

我已经尝试使用“从 GSL 库中获取 C gsl_fit_linear() 函数中线性回归的 p 值”来尝试这种方法

任何人都可以确认它的有效性吗?与 R 相比,它给出的结果对我来说不同。

我已将这行 C 代码隔离为不正确,但我不明白为什么:

double pv0=t0<0?2*(1-gsl_cdf_tdist_P(-t0,n-2)):2*(1-gsl_cdf_tdist_P(t0,n-2));//This is the p-value of the constant term

R给出的结果:

系数:

            Estimate Std. Error t value Pr(>|t|)   
(Intercept) -700.000    226.569  -3.090  0.05373 . 
x             60.000      6.831   8.783  0.00311 **

C给出的结果:

Coefficients    Estimate Std. Error   t value   Pr(>|t|)
(Intercept) -700.000000  226.568606 -3.089572 -550099700.000000
          x   60.000000    6.831301  8.783101 -4.000000
4

2 回答 2

2

gsl_cdf_tdist_P应该期望两个double参数并返回double0 到 1 之间的 a。

首先检查所有类型。

如果它在所有类型都正确的情况下返回 0-1 之外的值,那么某处存在非常严重的问题。

于 2014-10-09T22:51:21.463 回答
1

原来我在编译时没有警告,我没有看到 gsl_cdf_tdist_P 被隐式声明。这导致编译器认为该函数必须返回一个整数。我包含了相关的 gsl 标头并获得了与 R 匹配的值。

于 2014-10-09T22:59:59.617 回答