R语言中工具变量:例题二

Python013

R语言中工具变量:例题二,第1张

两个例题例题一涉及6个问题,使用的数据集为R语言自带的fertil2。例题二涉及3个问题,使用的数据集为stata格式的eitc.dta。 本文介绍例题二。例题一见上篇。

使用数据集eitc.dta,因变量为children,educ为自变量(是否为内生在问题1-6中会讨论),还有其他自变量如age等。

以上是我自己做的答案,也不知道正确答案如何,如果有会的同学来点评帮助一下,我将感激不尽。共勉。

最简单但计算量最大的是泰勒公式:e=1+1/1!+1/2!+1/3!+1/4!+...

下面是求e的R语言函数:

e_fun <- function(n) {

  etemp <- 1

  ni <- 1L

  for (i in 1:n) {

    etemp <- etemp + 1 / ni

    ni <- ni * (i + 1)

  }

  return(etemp)

}

不过你题目中要求的是求到精度为0.00001就停止,所以可以采用repeat循环:

i <- 1L

ni <- 1L

etemp <- 1

repeat {

  etemp1 <- etemp

  etemp <- etemp + 1 / ni

  ni <- ni * (i + 1)

  i <- i + 1

  if (etemp - etemp1 < 0.00001) break

}

i

etemp

在最后可以看到,求到i=10时,精度就已经达到要求了。

//直接使用数组保存

#include <stdio.h>

#define size 10

int main()

{

    char name[size][10]

    int num[size],id[size],i=0

    while(i++<3)

        scanf("%d%s%d",&id[i-1],name[i-1],&num[i-1])

    printf("打印输入结果:\n")

    i=0

    while(i++<3)

        printf("%d  %s  %d\n",id[i-1],name[i-1],num[i-1])

    return 0

} //用结构保存

#include <stdio.h>

#define size 10

typedef struct alist

{

    int id

    char name[10]

    int num

}ALIST

int main()

{

    ALIST al[size]

    int i=0

    while(i++<3)

        scanf("%d%s%d",&al[i-1].id,al[i-1].name,&al[i-1].num)

    printf("打印输入结果:\n")

    i=0

    while(i++<3)

        printf("%d  %s  %d\n",al[i-1].id,al[i-1].name,al[i-1].num)

    return 0

}

当然你也可以把结构做成链表,用next链表指针,遍历数据,我这就不演示了。